Worker

Die Installation der Kubernetes Worker ist vergleichsweise einfach, wenn man eine lauffähige Control Plane hat. So lange mindestens eine lauffähige Control Plane vorhanden ist, wird der ganze Kubernetes Cluster funktionieren. Es sollten aus Redundanzgründen mindestenes zwei Worker vorhanden sein, damit die Anwendungen auch im Falle eines Ausfalls eines Workers noch funktionieren.

Join

Auf dem neuen Worker wird lediglich ein Kommando benötigt. Das komplette Kommando kann auch hier der kubeadm.log auf der Control-Plane entnommen werden.

kube-w-0002:~ # kubeadm join 192.168.1.254:6443 --token re86z7.*** --discovery-token-ca-cert-hash sha256:***
[preflight] Running pre-flight checks
[preflight] Reading configuration from the cluster...
[preflight] FYI: You can look at this config file with 'kubectl -n kube-system get cm kubeadm-config -oyaml'
W1208 11:27:25.541227 2024 kubelet.go:200] cannot automatically set CgroupDriver when starting the Kubelet: cannot execute 'docker info -f {{.CgroupDriver}}': executable file not found in $PATH
[kubelet-start] Writing kubelet configuration to file "/var/lib/kubelet/config.yaml"
[kubelet-start] Writing kubelet environment file with flags to file "/var/lib/kubelet/kubeadm-flags.env"
[kubelet-start] Starting the kubelet
[kubelet-start] Waiting for the kubelet to perform the TLS Bootstrap...

This node has joined the cluster:
* Certificate signing request was sent to apiserver and a response was received.
* The Kubelet was informed of the new secure connection details.

Run 'kubectl get nodes' on the control-plane to see this node join the cluster.

Überprüft wird der Status wirder mit:

kubic-pi1:~ # kubectl get nodes -o wide
NAME STATUS ROLES AGE VERSION INTERNAL-IP EXTERNAL-IP OS-IMAGE KERNEL-VERSION CONTAINER-RUNTIME
kube-w-0001 Ready <none> 14m v1.19.4 192.168.1.21 <none> openSUSE MicroOS 5.9.11-1-default cri-o://1.19.0
kube-w-0002 Ready <none> 8m18s v1.19.4 192.168.1.17 <none> openSUSE MicroOS 5.9.11-1-default cri-o://1.19.0
kube1 Ready master 124m v1.19.4 192.168.1.16 <none> openSUSE MicroOS 5.9.11-1-default cri-o://1.19.0
kubic-pi1 Ready master 104m v1.19.4 192.168.1.15 <none> openSUSE MicroOS 5.9.11-1-default cri-o://1.19.0

Jetzt haben wir einen lauffähigen Kubernetes Cluster.

Falls mal die Join Daten weggekommen sind, dann liefert dieses Skript diese Daten:

#!/usr/bin/env bash

kubeadm token list -o json

DISC_TOKEN=$(openssl x509 -pubkey -in /etc/kubernetes/pki/ca.crt | openssl rsa -pubin -outform der 2>/dev/null | openssl dgst -sha256 -hex | sed 's/^.* //')
echo "discovery-token-ca-cert-hash (sha256): $DISC_TOKEN"

Damit kann wieder ein Join durchgeführt werden.

Die nächsten Schritte

Bevor nun irgendein Service installiert wird, ist das Thema Security dran. Das wird in einem weiteren Beitrag dargestellt.