Sodele wieder back to kubernetes die X-te. Proxmox läuft jetzt stabil also habe ich mich auch mal wieder an kubernetes gewagt.
Im prinzip hier RE: Kubernetes Cluster installieren und betreiben- Tagebuch wieder eingestiegen:
Vorraussetzungen: VM mit 4+GB RAM, 16GB Platte, 4 cores, kein swap und kein IPv6.
Ich habe mir dafür Ubuntu Server Minimized LTS 22 als template in Proxmox erstellt. Hier kurz was ich nach der Standard installation gemacht habe (wie man ein temlate erstellt findet sich hier):
- No IPV6 (via Grub): disable_ipv6 entries
- No ssh hostkey: rm /etc/ssh/ssh_host*
- No machine-id: truncate -s 0 /etc/machine-id & ln -s /var/lib/dbus/machine-id /etc/machine-id
- qemu-guest-agent is installed
- nano is installed
- htop is installed (find ich besser als top)
- iftop is installed (muss nicht sein, manchmal aber nett zu sehen wohin gesprochen wird)
- net-tools are installed
- iptables installiert (wichtig siehe RE: Kubernetes Cluster installieren und betreiben- Tagebuch)
Nach dem klonen muss man leider noch mit dpg-reconfigure openssh-server die hostkeys neu erstellen (sollte cloudinit eigentlich machen) und den hostnamen anpassen. Dann noch sicherstellen das der DHCP server eine passende reservierung hat oder man eine statische IP konfiguriert.
IPAdressen 192.168.0.80 (cluster vip), 81-83 für master und 84-86 für worker nodes reserviert.
Anmerkung: das habe ich später in ein anderes Subnetz (192.168.1.x) geschoben, also nicht wundern wenn die IPs nicht in allen Bildern passen.
Auch die Namen vorher festgelegt
- lx-k8s-thor-01 bis -03 für master
- lx-k8s-loki-01 bis -03 für worker
- lx-k8s-cluster-01 für den ersten cluster
Den ersten Master instalieren (siehe auch https://docs.rke2.io/install/quickstart) mit
curl -sfL https://get.rke2.io | sh -
systemctl enable rke2-server.service
# wenn Ihr eine spezielle konfig braucht diese anpassen siehe paar Zeilen weiter unten BEVOR ihr den service startet.
systemctl start rke2-server.service
Prüfen ob er läuft mit
journalctl -u rke2-server -f
das Hochfahren kann ein paar Minuten dauern.
wenn Ihr einen Cluster aufsetzen möchtet bitte das config file /etc/rancher/rke2/config.yaml anpassen ala
tls-san:
- lx-k8s-thor-01
- lx-k8s-thor-01.dmz.ok-edv.de
- lx-k8s-cluster-01.dmz.ok-edv.de
- lx-k8s-cluster-01
- 192.168.1.30
- 192.168.1.31
node-taint:
- "CriticalAddonsOnly=true:NoExecute"
In meinem Fall habe ich noch einen node-taint hinzugefügt um z verhindern, das diese Server auch workloads bekommt. Unter tls-san listet Ihr alle namen und IPs auf unter denen der Server erreichbar sein wird. Also oben hostname, fqdn, den CLusternamen (via VIP) und die IPs.
Dann nochmals per kubectl checken
# link all the things - kubectl
ln -s $(find /var/lib/rancher/rke2/data/ -name kubectl) /usr/local/bin/kubectl
# add kubectl conf
export KUBECONFIG=/etc/rancher/rke2/rke2.yaml
# check node status
kubectl get node
Den Link braucht man natürlich nur einmal erstellen und das export in euer shell start sequence.
Rauskommen sollte etwas wie:
root@lx-k8s-thor-01:/etc/rancher/rke2# kubectl get node
NAME STATUS ROLES AGE VERSION
lx-k8s-thor-01 Ready control-plane,etcd,master 40m v1.24.9+rke2r1
Mein erster Master läuft also mit RKE Version 1.24.9
oder
root@lx-k8s-thor-01:/etc/rancher/rke2# kubectl get node -o wide
NAME STATUS ROLES AGE VERSION INTERNAL-IP EXTERNAL-IP OS-IMAGE KERNEL-VERSION CONTAINER-RUNTIME
lx-k8s-thor-01 Ready control-plane,etcd,master 85m v1.24.9+rke2r1 192.168.0.81 <none> Ubuntu 22.04.1 LTS 5.15.0-56-generic containerd://1.6.12-k3s1