docs/presentation_kanzone.org

243 lines
7.3 KiB
Org Mode
Raw Permalink Normal View History

2024-11-14 22:55:57 +00:00
* Hvordan kjøre k8s cluster på hytta for fun and profit!
* Hvordan kjøre k8s cluster på hytta for fun +and profit!+ and savings!
* Hvordan kjøre k8s cluster på hytta for fun +and profit!+ +and savings!+ uh.... and FUN!
[[./images/server.jpg]]
* Men altså... how did we get here?
* Men altså... how did we get here?
[[./images/minecraft.png]]
* Bare-metal og vps!
[[file:images/baremetal.png]]
* Docker! ... og en del nginx og ruter-mikk...
[[file:images/docker.png]]
* wireguard!
[[file:images/docker.png]]
veldig enkel måte å sette opp vpn på!
* ... er k8s løsningen?
#+ATTR_ORG: :width 900
[[./images/k8s-logo.png]]
- Distribuert!
- Config management!
- Mer enn bare containere!
- og relevant for jobb!
* Men hvilken distro skal jeg velge?
* Men hvilken distro skal jeg velge?
** standard / kubeadm
- bare base k8s,
mangler mange componenter for å faktisk gjøre ting.
** k0s
- veldig lightweight, må sette opp en del selv.
** Minikube
- enkelt
- lager egen vm, kun 1 node
** rancher rke & rke2
- Rke kjører over docker
- Rke2 var ikke stabilt når jeg startet
** rancher k3s
- egentlig laget for edge, men funker ganske greit for
større ting og har mye ute av boksen!
- funker i litt mer utradisjonelle k8s miljø
* Utfordring: NAT
[[file:images/kubeServer.png]]
[[file:images/kubeInternal.png]]
* helm magic!
=helm install <whatever> -f config.yaml=
https://artifacthub.io/ docker hub for helm!
* Git-ops & fluxcd!
Skriv yaml -> commit til git -> *k8s magic* -> deployed!
* Så hva kjører jeg?
- Nextcloud
- immich
- Gitea
- Drone cicd
- chat-bots
- archlinux pakke repo
- openldap
- bitwarden (vaultwarden)
- mail server
- jellyfin
- k8s componenter!
- k3s
- openebs
- cert-manager & trust-manager
- loki / prometheus / grafana
- container registry
- stakater-reloader
- nginx ingress controller
- FluxCD
* Hva ville jeg gjort anderledes?
- all config i git fra starten av!
- bruk gitops tidligere
* Gode ressurser / Ting å google
** Youtube
- Jeff Geerling
- TechnoTim
- Just me and opensource
- Level1Techs
** Reddit
- /r/selfhosted
- /r/DataHoarder
- /r/homelab
- /r/HomeServer
- /r/k3s
- /r/rancher
- /r/linux
** StackExchange
** eller, spør meg!
* Demo?
#+begin_src bash :results drawer replace
k3d cluster delete
k3d cluster create -p "8081:80@loadbalancer" --agents 2
#+end_src
2024-11-14 23:02:40 +00:00
#+RESULTS:
:results:
INFO[0000] No clusters found
INFO[0000] portmapping '8081:80' targets the loadbalancer: defaulting to [servers:*:proxy agents:*:proxy]
INFO[0000] Prep: Network
INFO[0000] Created network 'k3d-k3s-default'
INFO[0000] Created image volume k3d-k3s-default-images
INFO[0000] Starting new tools node...
INFO[0000] Pulling image 'ghcr.io/k3d-io/k3d-tools:5.7.4'
INFO[0001] Creating node 'k3d-k3s-default-server-0'
INFO[0002] Pulling image 'docker.io/rancher/k3s:v1.30.4-k3s1'
INFO[0002] Starting node 'k3d-k3s-default-tools'
INFO[0005] Creating node 'k3d-k3s-default-agent-0'
INFO[0005] Creating node 'k3d-k3s-default-agent-1'
INFO[0005] Creating LoadBalancer 'k3d-k3s-default-serverlb'
INFO[0006] Pulling image 'ghcr.io/k3d-io/k3d-proxy:5.7.4'
INFO[0008] Using the k3d-tools node to gather environment information
INFO[0008] HostIP: using network gateway 172.18.0.1 address
INFO[0008] Starting cluster 'k3s-default'
INFO[0008] Starting servers...
INFO[0008] Starting node 'k3d-k3s-default-server-0'
INFO[0010] Starting agents...
INFO[0010] Starting node 'k3d-k3s-default-agent-0'
INFO[0010] Starting node 'k3d-k3s-default-agent-1'
INFO[0019] Starting helpers...
INFO[0019] Starting node 'k3d-k3s-default-serverlb'
INFO[0026] Injecting records for hostAliases (incl. host.k3d.internal) and for 4 network members into CoreDNS configmap...
INFO[0028] Cluster 'k3s-default' created successfully!
INFO[0028] You can now use it like this:
kubectl cluster-info
:end:
2024-11-14 22:55:57 +00:00
#+begin_src bash :results drawer replace
kubectl get nodes
#+end_src
2024-11-14 23:02:40 +00:00
#+RESULTS:
:results:
NAME STATUS ROLES AGE VERSION
k3d-k3s-default-agent-0 Ready <none> 15s v1.30.4+k3s1
k3d-k3s-default-agent-1 Ready <none> 16s v1.30.4+k3s1
k3d-k3s-default-server-0 Ready control-plane,master 24s v1.30.4+k3s1
:end:
2024-11-14 22:55:57 +00:00
#+begin_src bash :results drawer replace
kubectl get pods -A -o wide
#+end_src
2024-11-14 23:02:40 +00:00
#+RESULTS:
:results:
NAMESPACE NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
kube-system coredns-576bfc4dc7-qf4jr 1/1 Running 0 15s 10.42.1.2 k3d-k3s-default-agent-1 <none> <none>
kube-system helm-install-traefik-crd-5d927 0/1 Completed 0 15s 10.42.2.2 k3d-k3s-default-server-0 <none> <none>
kube-system helm-install-traefik-dh9mb 0/1 Completed 1 15s 10.42.0.2 k3d-k3s-default-agent-0 <none> <none>
kube-system local-path-provisioner-6795b5f9d8-k9hd8 1/1 Running 0 15s 10.42.1.4 k3d-k3s-default-agent-1 <none> <none>
kube-system metrics-server-557ff575fb-45mc8 1/1 Running 0 15s 10.42.1.3 k3d-k3s-default-agent-1 <none> <none>
kube-system svclb-traefik-f13b85a3-bmsc5 2/2 Running 0 4s 10.42.1.5 k3d-k3s-default-agent-1 <none> <none>
kube-system svclb-traefik-f13b85a3-mttkt 2/2 Running 0 4s 10.42.2.3 k3d-k3s-default-server-0 <none> <none>
kube-system svclb-traefik-f13b85a3-pprtw 2/2 Running 0 4s 10.42.0.3 k3d-k3s-default-agent-0 <none> <none>
kube-system traefik-5fb479b77-csb4k 1/1 Running 0 4s 10.42.0.4 k3d-k3s-default-agent-0 <none> <none>
:end:
2024-11-14 22:55:57 +00:00
#+begin_src bash :results drawer replace
helm repo add podinfo https://stefanprodan.github.io/podinfo
helm install podinfo podinfo/podinfo --set ingress.enabled=true
#+end_src
2024-11-14 23:02:40 +00:00
#+RESULTS:
:results:
"podinfo" has been added to your repositories
NAME: podinfo
LAST DEPLOYED: Fri Nov 15 00:02:07 2024
NAMESPACE: default
STATUS: deployed
REVISION: 1
NOTES:
1. Get the application URL by running these commands:
http://podinfo.local/
:end:
2024-11-14 22:55:57 +00:00
#+begin_src bash :results drawer replace
curl -H 'Host: podinfo.local' localhost:8081
#+end_src
2024-11-14 23:02:40 +00:00
#+RESULTS:
:results:
{
"hostname": "podinfo-5c7765bf4-c49bd",
"version": "6.7.1",
"revision": "6b7aab8a10d6ee8b895b0a5048f4ab0966ed29ff",
"color": "#34577c",
"logo": "https://raw.githubusercontent.com/stefanprodan/podinfo/gh-pages/cuddle_clap.gif",
"message": "greetings from podinfo v6.7.1",
"goos": "linux",
"goarch": "amd64",
"runtime": "go1.23.2",
"num_goroutine": "8",
"num_cpu": "16"
}
:end: