Kubernetes mit kubeadm auf Rocky Linux
Vorbereitung des Systems
Bevor du mit der Installation von Kubeadm beginnst, musst du dein Rocky Linux 9 System vorbereiten. Du musst sicherstellen, dass bestimmte Pakete und Abhängigkeiten installiert und die Systemeinstellungen korrekt sind.
Setzen des korrekten Hostnamens
Der folgenden Befehl setzt den Hostnamen des Systems auf seine eigene IP
Adresse über den Dienst ip.dynlinux.io
Vollständige Aktualisierung des Systems
Dieser Befehl stellt sicher, dass alle Systempakete auf dem neuesten Stand sind.
Deaktivieren von SELinux
Kubernetes erfordert die Deaktivierung von SELinux, um ordnungsgemäß zu funktionieren. Du kannst dies tun, indem du die Konfigurationsdatei bearbeitest.
Nach der Deaktivierung über die Konfigurationsdatei muss das System neu gestartet werden.
Alternativ kannst du es auch temporär deaktivieren
Deaktivieren der Firewall
Die Firewall kann den Netzwerkverkehr zwischen den Kubernetes-Komponenten blockieren. Deaktiviere sie, um mögliche Probleme zu vermeiden:
Konfigurieren von IP-Weiterleitung und Bridge-Einstellungen
Für die Netzwerkinfrastruktur von Kubernetes ist die IP-Weiterleitung erforderlich. Erstelle die Konfigurationsdatei 99-kubernetes.conf
Lade die Einstellungen neu
Lade das Kernelmodul br_netfilter
Installation von Containerd
Containerd ist die Container-Laufzeitumgebung (Container Runtime), die von Kubernetes benötigt wird, um Container zu starten und zu verwalten. Kubernetes verwendet die Container Runtime Interface (CRI), um mit der Container-Laufzeitumgebung zu interagieren.
Installation der erforderlichen Pakete
Konfiguration von Containerd
Zuerst erstellst du eine Standardkonfiguration für Containerd:
Anschließend bearbeitest du die Konfigurationsdatei, um das cgroupfs-System für das Systemd-Cgroup-Treiber-System zu verwenden:
Aktivierung und Starten von Containerd
Installation von Kubeadm, Kubelet und Kubectl
Nachdem Containerd eingerichtet ist, installierst du die Kubernetes-Tools.
Hinzufügen des Kubernetes-YUM-Repositorys
⚠️ Hinweis: Die Versionsnummer v1.32 sollte an deine gewünschte Kubernetes-Version angepasst werden.
Installation der Kubernetes-Pakete
Dieser Befehl installiert die drei Hauptkomponenten:
- kubelet: Der Agent, der auf jedem Knoten läuft und die Kommunikation mit dem Control Plane übernimmt.
- kubeadm: Das Tool zum Bootstrapping des Clusters.
- kubectl: Das Befehlszeilentool zur Interaktion mit dem Cluster.
Initialisierung des Control-Plane-Knotens
Jetzt kannst du den Control-Plane-Knoten (Master-Knoten) initialisieren. Dies ist der wichtigste Schritt, da er das Herzstück deines Kubernetes-Clusters bildet.
Initialisiere das Kubernetes Control Plane
Der Parameter –pod-network-cidr ist wichtig, da er das Netzwerk-Subnetz für die Pods festlegt. Der Wert 10.244.0.0/16 ist der Standard, der von vielen CNI-Plugins wie Flannel verwendet wird.
Starten und Aktivieren des Kubelet-Dienstes
Konfigurieren des Benutzers für kubectl
Nach der erfolgreichen Initialisierung musst du kubectl für den aktuellen Benutzer konfigurieren, um Befehle ausführen zu können:
Installieren eines Pod-Netzwerk-Addons
Ohne ein Pod-Netzwerk-Addon können die Pods nicht miteinander kommunizieren. Flannel ist eine beliebte Wahl.
Nach der Installation kannst du den Status der Pods überprüfen
Erlaube pods auf der Control Plane
Auf der Control Plane solltest du keine Pods, die nicht zur Control Plane gehören - laufen lassen. Dies kann zu einer Instabilität der Control Plane führen.
Für Test-Setups ist es möglich auch auf der Control Plane Pods laufen zu lassen
Hinzufügen von weiteren Control Plane-Knoten
Um weitere Control Plane-Knoten zu erstellen musst du zunächst die Zertifikatsdaten des Clusters ein Kubernetes Secret speichern. Dazu führst du auf einem existierenden Conntrol Plane-Knoten den folgenden Befehl aus.
⚠️ Dieser Schritt ist für das Hinzufügen eines Workers nicht notwendig.
Der Certificate Key Name aus der Ausgabe des vorherigen Befehls wird für den
kubeadm join benötigt. Der restliche Aufruf wird mit dem folgenden Befehl
ausgegeben auf dem bestehenden Control Plane-Knoten.
Den Ausgegebenen Befehl musst du nun um die Parameter --control-plane und
--certificate-key <certificate-key-string> erweitern und auf dem neuen
Control Plane-Knoten ausführen.
Sobald die zusätzliche Node bei kubectl get nodes auftaucht können die
korrekten Label gesetzt werden.
Hinzufügen von Worker-Knoten
Kubeadm gibt dir nach der Initialisierung einen kubeadm join-Befehl aus. Du musst diesen Befehl auf den Worker-Knoten ausführen, um sie dem Cluster hinzuzufügen.
Dieser Befehl verbindet den Worker-Knoten mit dem Control Plane.
💡 Die Daten für diesen Befehl kannst du auf der Control Plane auslesen
Starten und Aktivieren des Kubelet-Dienstes auf dem Worker
Sobald die zusätzliche Node bei kubectl get nodes auftaucht können die
korrekten Label gesetzt werden.
Überprüfung des Clusters
Um sicherzustellen, dass dein Cluster ordnungsgemäß funktioniert, kannst du den Status der Knoten überprüfen:
Die Ausgabe sollte alle Knoten (den Control-Plane-Knoten und alle hinzugefügten Worker-Knoten) als Ready anzeigen.
Testanwendung installieren
Wenn du eine Anwendung bereitstellen möchtest, kannst du dies mit einem Deployment-Befehl tun:
Diese Befehle erstellen ein Deployment für eine Nginx-Webserver-Anwendung und legen einen Service vom Typ NodePort an, um die Anwendung über eine externe IP-Adresse zugänglich zu machen.