Kubernetes Node
Ein Kubernetes-Node ist eine logische Sammlung von IT-Ressourcen, die einen oder mehrere Container unterstützt. Nodes enthalten die erforderlichen Dienste zum Ausführen von Pods (das sind die Containereinheiten von Kubernetes), zur Kommunikation mit Masterkomponenten, zur Netzwerkkonfiguration und zur Ausführung zugewiesener Arbeitslasten.
Ein Node kann einen oder mehrere Pods hosten. Jeder Kubernetes-Node verfügt über Services zur Erstellung der Runtime-Umgebung und zur Unterstützung von Pods. Zu diesen Komponenten gehören Docker, Kube-proxy und Kubelet. Kubernetes choreographiert die Bereitstellung und Skalierung von Anwendungen in Containern und nicht die Bereitstellung und Skalierung der erforderlichen Hardwaresysteme. Nodes sind Sammlungen von Ressourcen, die von der Hosting-Infrastruktur definiert werden, ob in der Cloud oder als physische oder virtuelle Maschinen (VMs). Die Host-Umgebung eines Nodes kann speziell auf die Anwendungen zugeschnitten werden, dies ist jedoch nicht erforderlich. Kubernetes erstellt Node-Objekte, die einen Node repräsentieren, und besorgt dann die ordnungsgemäße Funktionalität. Pods laufen auf Nodes, die über die entsprechenden verfügbaren Ressourcen für Workloads verfügen und die Anforderungen des Pods hinsichtlich Affinität/Anti-Affinität mit anderen Pods erfüllen.
Node-Management
In Kubernetes Node-Schnittstellen interagieren drei Komponenten: kubectl, kubelet und der Node-Controller.
Der Node Controller verwaltet verschiede Teile des Nodes während seiner gesamten Lebensdauer. Die erste Aufgabe des Controllers besteht darin, dem Node bei der Registrierung einen Classless Inter-Domain Routing-Block (CIDR) zuzuweisen, wenn der Anwender CIDR-Zulassung benutzt. Der Controller führt auch eine Liste der internen Nodes zusammen mit den verfügbaren Rechnern. Wenn ein Node nicht verfügbar ist, prüft der Controller die Verfügbarkeit der dem Node zugrunde liegenden Ressourcen und löscht diese, wenn sie nicht aufgerufen werden kann. Schließlich überwacht der Controller den Zustand des Nodes und entfernt Pods von nicht erreichbaren Nodes.
Kubernetes ist eine ausgereifte Technologie. Aktualisierungen der Plattform haben zum Beispiel den Controller dahingehend verbessert, dass er bei Netzwerkprobleme in einer großen Anzahl von Nodes den ganzen Cluster evaluiert, bevor er einen Pod entfernt.
kubectl ist eine Kommandozeile, mit der Benutzer einen Befehl an ein Kubernetes-Cluster ausführen können. Beispielsweise kann der Administrator einen Befehl ausführen, um einen Node für die Einplanung durch Pods unverfügbar zu machen.
Kubelet ist das Programm, das auf jedem Node ausgeführt wird, um die Pods zu verwalten.
Kapazität des Nodes
Selbstregistrierende Nodes melden die Kapazität von CPU und Speicher bei der Erstellung des Nodeobjekts. Alternativ legen Administratoren die Kapazitätsanforderungen bei der manuellen Einrichtung des Nodes fest. Der Kubernetes-Scheduler weist allen Pods auf einem Node ausreichende Ressourcen zu und stellt sicher, dass die Anforderungen die Nodekapazität nicht übersteigen. Kubernetes geht davon aus, dass jedem Node-Server ein dediziertes Subnetz zur Verfügung steht.
Node-Status
Der Node-Status besteht aus einer Vielzahl von Informationen über den Zustand der Pods, seine Kapazität sowie Informationen und Adressen zu den in einem Node zusammengefassten Ressourcen.
Adresses variieren je nach Cloud-Umgebung und Bare-Metal-Konfigurationen. Die erste von drei Adressen ist HostName, wie vom Kernel des Nodes gemeldet; der als HostName voreingestellte Wert kann durch den Kubelets-Parameter --hostname-override ersetzt werden. ExternalIP, die zweite Adresse, entspricht dem Node außerhalb des Clusters. Die letzte Adresse ist die InternalIP, die sich auf den nur innerhalb des Clusters routbaren Node bezieht.
Conditions bezieht sich auf den Status aller laufenden Nodes, die entweder als True oder False gemeldet werden. Zu den Nodebedingungen gehören zum Beispiel OutOfDisk für den verfügbaren Speicherplatz, Ready zur Angabe des Nodestatus und NetworkUnavailable für Konfigurationsinformationen.
Capacity beschreibt die verfügbaren Noderessourcen: CPU, Speicher und die maximale Anzahl von Pods, die der Node handlen kann.
Information bietet allgemeine Statistiken wie Versionen und Namen: Kernel-, Kubelet- und Kubeletproxy-Versionen, Name des Betriebssystems und, falls Docker-Container verwendet werden, Docker-Version.