In diesem Tutorial setzen wir einen kleinen Kubernetes-Cluster auf, bestehend aus:
Die folgenden Schritte werden auf allen Nodes (Control-Plane + Worker) ausgeführt, außer es steht ausdrücklich etwas anderes dabei.
Kubernetes unterstützt keinen aktiven Swap, bzw. erwartet standardmäßig, dass Swap deaktiviert ist. Der Kubernetes-Scheduler und der Linux-Kernel treffen Entscheidungen auf Basis des verfügbaren RAM.
# SWAP temporär deaktivieren sudo swapoff -a
Dieser Befehl deaktiviert Swap sofort, aber nur bis zum nächsten Reboot. Damit Swap nach einem Neustart nicht wieder aktiviert wird, kommentieren wir den Eintrag in der /etc/fstab aus:
# aus fstab auskommentieren sudo sed -ri 's/^\s*([^#].*\s+swap\s+)/# \1/' /etc/fstab
Die sed-Zeile sucht nach nicht-auskommentierten “swap” Einträgen und setzt ein # davor.
Kubernetes (bzw. die Container-Runtime und das Networking) benötigt bestimmte Kernel-Module, um Container-Dateisysteme und Netzwerkbrücken korrekt zu verwalten.
Damit die Module dauerhaft geladen werden, legen wir eine Konfigurationsdatei an:
echo -e "overlay\nbr_netfilter" | sudo tee /etc/modules-load.d/k8s.conf sudo modprobe overlay sudo modprobe br_netfilter
Die Datei /etc/modules-load.d/k8s.conf sorgt dafür, dass die Module beim Booten geladen werden.
Kubernetes setzt stark auf virtuelle Netzwerke (Pod-Netze, Service-Netze). Damit Pakete korrekt durch den Kernel geroutet und gefiltert werden, müssen einige sysctl-Parameter gesetzt werden. Wir erstellen dazu eine eigene sysctl-Datei:
cat <<'EOF' | sudo tee /etc/sysctl.d/99-kubernetes-cri.conf net.bridge.bridge-nf-call-iptables = 1 net.bridge.bridge-nf-call-ip6tables = 1 net.ipv4.ip_forward = 1 EOF # Änderungen anwenden sudo sysctl --system
Was bedeuten diese Einstellungen?