In diesem Dokument wird erläutert, wie Knotenpools in Google Kubernetes Engine (GKE) funktionieren. Ein Knotenpool besteht aus einer Gruppe von Knoten in einem Standardcluster, die alle dieselbe Konfiguration haben. Im GKE-Standardmodus können Sie aus einer Reihe von Optionen für Ihre Knotenpools auswählen, um Ihre Arbeitslastanforderungen zu erfüllen. Wenn Sie Autopilot verwenden, müssen Sie keine Knotenpools konfigurieren: GKE verwaltet die Knoten für Sie. Sie können jedoch bei Bedarf von Autopilot verwaltete Knotenpools in Standardclustern manuell aktualisieren.
Weitere Informationen zum Erstellen von Clustern im Standardmodus finden Sie unter Regionalen Cluster erstellen und Zonalen Cluster erstellen. Informationen zum Verwalten von Knotenpools in vorhandenen Standard-Clustern finden Sie unter Knotenpools hinzufügen und verwalten.
Übersicht
Ein Knotenpool besteht aus einer Gruppe von Knoten in einem Cluster, die alle dieselbe Konfiguration haben. Knotenpools verwenden eine NodeConfig-Spezifikation. Jeder Knoten im Pool hat ein Kubernetes-Knotenlabel, cloud.google.com/gke-nodepool, das den Namen des Knotenpools als Wert hat.
Wenn Sie einen Cluster im Standardmodus erstellen, werden die von Ihnen angegebene Anzahl und der Typ der Knoten verwendet, um den ersten Knotenpool des Clusters zu erstellen.
Standardmäßig besteht dieser erste Knotenpool (auch als Standardknotenpool bezeichnet) aus drei Knoten in jeder der Computing-Zonen des Clusters, mit dem Standard-Knoten-Image cos_containerd und einem Maschinentyp für allgemeine Zwecke. Sie können je nach den Anforderungen Ihrer Arbeitslast verschiedene Attribute für den Knotenpool angeben. Beispiel: Sie können einen Knotenpool in Ihrem Cluster mit lokalen SSDs, einer Mindest-CPU-Plattform, Spot-VMs, einem anderen Knoten-Image, verschiedenen Maschinentypen oder einer effizienteren virtuellen Netzwerkschnittstelle erstellen. Wenn Sie beim Erstellen eines Clusters das Flag --num-nodes=0 angeben, überspringt GKE das Erstellen des Standardknotenpools, sodass Sie später benutzerdefinierte Knotenpools hinzufügen können. Dafür ist die GKE-Version 1.36.4-gke.1469000 oder höher, 1.37.1-gke.1153000 oder höher oder 1.38.0-gke.2352000 oder höher erforderlich.
Anschließend können Sie Ihrem Cluster zusätzliche Knotenpools unterschiedlicher Größe und unterschiedlichen Typs hinzufügen. Alle Knoten in einem gegebenen Knotenpool sind identisch.
Benutzerdefinierte Knotenpools sind nützlich, wenn Sie Pods planen müssen, die mehr Ressourcen benötigen als andere, z. B. mehr Arbeitsspeicher oder mehr lokalen Speicherplatz. Wenn Sie mehr Kontrolle darüber benötigen, wo Pods geplant werden, können Sie Knotenmarkierungen verwenden.
Sie können Knotenpools einzeln erstellen, aktualisieren und löschen, ohne dass sich dies auf den gesamten Cluster auswirkt. Sie können keinen einzelnen Knoten in einem Knotenpool konfigurieren. Alle Konfigurationsänderungen wirken sich auf alle Knoten im Knotenpool aus.
Sie können die Größe von Knotenpools in einem Cluster ändern, indem Sie Knoten hinzufügen oder entfernen.
Standardmäßig wird auf allen neuen Knotenpools dieselbe Kubernetes-Version wie auf der Steuerungsebene ausgeführt. Vorhandene Knotenpools können manuell oder automatisch aktualisiert werden. Sie können auch mehrere Kubernetes-Knotenversionen in jedem Knotenpool in Ihrem Cluster ausführen, jeden Knotenpool unabhängig aktualisieren und verschiedene Knotenpools für bestimmte Bereitstellungen verwenden.
Von Autopilot verwaltete Knotenpools
In Standardclustern können Sie zusätzlich zu den in diesem Dokument beschriebenen Standardknotenpools auch von Autopilot verwaltete Knotenpools haben, die von GKE für Autopilot-ComputeClasses erstellt und verwaltet werden. Weitere Informationen finden Sie unter Arbeitslasten im Autopilot-Modus in GKE Standard.
Sie können diesen Knotenpooltyp manuell aktualisieren. Sie können jedoch keine anderen Arten von Updates außer Upgrades (Versionsänderungen) ausführen. Sie können den Knotenpool auch nicht löschen.
Dienste für bestimmte Knotenpools bereitstellen
Wenn Sie einen Dienst definieren, können Sie indirekt steuern, in welchem Knotenpool er bereitgestellt wird. Der Knotenpool ist nicht von der Konfiguration des Dienstes abhängig, sondern von der Konfiguration des Pods.
Sie können einen Pod explizit in einem bestimmten Knotenpool bereitstellen. Dazu legen Sie im Pod-Manifest einen
nodeSelectorfest. Dadurch kann der Pod nur auf Knoten in diesem Knotenpool ausgeführt werden. Ein Beispiel finden Sie unter Pod in einem bestimmten Knotenpool bereitstellen.Sie können Ressourcenanfragen für die Container angeben. Der Pod wird dann nur auf Knoten ausgeführt, die den Ressourcenanfragen entsprechen. Wenn die Pod-Definition etwa einen Container enthält, für den vier CPUs erforderlich sind, wählt der Dienst keine Pods aus, die auf Knoten mit zwei CPUs ausgeführt werden.
Knoten in multizonalen Clustern
Wenn Sie einen mehrzonigen Cluster erstellt haben, werden alle Knotenpools automatisch in diese Zonen repliziert. Alle neuen Knotenpools werden automatisch in diesen Zonen erstellt. Ebenso werden durch Löschvorgänge diese Knotenpools auch aus den zusätzlichen Zonen gelöscht.
Aufgrund dieses multiplikativen Effekts wird möglicherweise ein größerer Anteil Ihres Projektkontingents für eine bestimmte Region verbraucht, wenn Sie Knotenpools erstellen.
Knotenpools löschen
Wenn Sie einen Knotenpool löschen, beendet GKE per Drain alle Knoten im Knotenpool, wobei alle Pods entfernt und neu geplant werden. Bei diesem Drain-Prozess werden Pods auf jedem Knoten im Knotenpool durch GKE entfernt. GKE führt beim Löschen von Knoten die folgenden beiden Schritte aus:
- GKE beendet jeden Knoten in einem Knotenpool per Drain, indem Pods innerhalb des zugewiesenen ordnungsgemäßen Beendigungszeitraums
MAX_PODentfernt werden.MAX_PODist der maximaleterminationGracePeriodSeconds-Wert für die Pods, die für den Knoten geplant sind, und beträgt maximal eine Stunde. - In der GKE werden die Einstellungen für
PodDisruptionBudget(PDB) beim Löschen des Knotenpools standardmäßig nicht berücksichtigt. Sie können jedoch die Konfiguration des Knotenpools so aktualisieren, dass GKE PDBs beim Löschen des Knotenpools berücksichtigt, ebenfalls mit einer Obergrenze von einer Stunde. Durch die Berücksichtigung von PDBs können Arbeitslasten auf andere Knoten im Cluster verschoben werden. Weitere Informationen zum Konfigurieren dieser Einstellung finden Sie unter Knotenpool aktualisieren, um PDBs beim Löschen des Knotenpools zu berücksichtigen.
Wenn die Pods spezifische Knotenauswahlen haben, bleiben die Pods womöglich in einem nicht-planbaren Zustand, wenn kein anderer Knoten im Cluster die Kriterien erfüllt.
Wenn ein Cluster gelöscht wird, folgt GKE nicht diesem Prozess, durch den die Knoten ordnungsgemäß beendet werden, indem sie per Drain beendet werden. Wenn die in einem Cluster ausgeführten Arbeitslasten ordnungsgemäß beendet werden müssen, verwenden Sie kubectl
drain, um die Arbeitslasten zu bereinigen, bevor Sie den Cluster löschen.
Informationen zum Löschen eines Knotenpools finden Sie unter Knotenpool löschen. Von Autopilot verwaltete Knotenpools können nicht gelöscht werden.