Knotenpools

In diesem Dokument wird erläutert, wie Knotenpools in Google Kubernetes Engine (GKE) funktionieren. Ein Knotenpool ist eine Gruppe von Knoten in einem Standardcluster, die alle dieselbe Konfiguration haben. Im GKE Standard-Modus können Sie aus einer Reihe von Optionen für Ihre Knotenpools auswählen, um die Anforderungen Ihrer Arbeitslasten 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 Standard-Modus 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 (als Standardknotenpool bezeichnet) aus drei Knoten in jeder der Compute-Zonen des Clusters mit dem Standard-Knoten-Image cos_containerd und einem Allzweck-Maschinentyp. Sie können je nach den Anforderungen Ihrer Arbeitslasten verschiedene Eigenschaften 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.

Anschließend können Sie Ihrem Cluster zusätzliche Knotenpools unterschiedlicher Größe und Art 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 genauer steuern möchten, wo Pods geplant werden, können Sie Knotenmarkierungen verwenden.

Sie können Knotenpools einzeln erstellen, upgraden und löschen, ohne den gesamten Cluster zu beeinträchtigen. 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 für alle neuen Knotenpools dieselbe Kubernetes-Version wie für die Steuerungsebene verwendet. 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 upgraden 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-Compute-Klassen erstellt und verwaltet werden. Weitere Informationen finden Sie unter Arbeitslasten im Autopilot-Modus in GKE Standard.

Sie können diesen Knotenpooltyp manuell aktualisieren. Andere Arten von Updates als Upgrades (Versionsänderungen) sind jedoch nicht möglich. 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, sondern von der Konfiguration des Pods abhängig.

  • Sie können einen Pod explizit in einem bestimmten Knotenpool bereitstellen. Dazu legen Sie im Pod-Manifest einen nodeSelector fest. 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. Entsprechend werden Knotenpools auch aus den zusätzlichen Zonen gelöscht, wenn Sie sie löschen.

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. Die 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_POD entfernt werden. MAX_POD ist der maximale terminationGracePeriodSeconds-Wert für die Pods, die für den Knoten geplant sind, und beträgt maximal eine Stunde.
  • Standardmäßig werden in GKE beim Löschen von Knotenpools keine PodDisruptionBudget-Einstellungen (PDB) berücksichtigt. Sie können die Konfiguration des Knotenpools jedoch so aktualisieren, dass GKE PDBs beim Löschen von Knotenpools berücksichtigt. Auch hier gilt eine 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, damit PDBs beim Löschen von Knotenpools berücksichtigt werden.

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. Sie können von Autopilot verwaltete Knotenpools nicht löschen.

Nächste Schritte