Knotenpools


Auf dieser Seite wird erläutert, wie Knotenpools in Google Kubernetes Engine (GKE) funktionieren.

Wie Sie Knotenpools verwalten, erfahren 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 die Spezifikation NodeConfig. Jeder Knoten im Pool hat das Kubernetes-Knotenlabel cloud.google.com/gke-nodepool, das den Namen des Knotenpools als Wert enthält.

Wenn Sie einen Cluster erstellen, wird die Anzahl der Knoten und der angegebene Knotentyp zum Erstellen des ersten Knotenpools verwendet. Anschließend können Sie dem Cluster weitere benutzerdefinierte Knotenpools unterschiedlicher Größen und Typen hinzufügen. Alle Knoten in einem gegebenen Knotenpool sind identisch.

Beispiel: Sie können einen Knotenpool in Ihrem Cluster mit lokalen SSDs, einer Mindest-CPU-Plattform, Spot-VMs, einem bestimmten Knoten-Image, verschiedenen Maschinentypen oder einer effizienteren virtuellen Netzwerkschnittstelle erstellen.

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 eingeplant 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. Ein einzelner Knoten lässt sich in einem Knotenpool nicht konfigurieren. Alle Konfigurationsänderungen wirken sich auf sämtliche Knoten im Knotenpool aus.

Sie können die Größe von Knotenpools in einem Cluster anpassen, indem Sie Knoten hinzufügen oder entfernen.

Standardmäßig führen alle neuen Knotenpools dieselbe Version von Kubernetes wie die Steuerungsebene aus. Vorhandene Knotenpools können manuell oder automatisch aktualisiert werden. Außerdem können Sie auf jedem Knotenpool in Ihrem Cluster mehrere Versionen von Kubernetes-Knoten ausführen, jeden Knotenpool individuell aktualisieren und für einzelne Bereitstellungen verschiedene Knotenpools auswählen.

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 Services 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 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 oder regionalen Clustern

Wenn Sie einen multizonalen oder regionalen Cluster erstellt haben, werden alle Knotenpools automatisch in diese Zonen repliziert. Jeder neue Knotenpool wird automatisch in diesen Zonen erstellt. Ebenso führt ein Löschen dazu, dass diese Knotenpools auch aus den zusätzlichen Zonen gelöscht werden.

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. Jeder Knoten in einem Knotenpool wird per Drain beendet, 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. PodDisruptionBudget-Einstellungen werden beim Löschen des Knotenpools nicht berücksichtigt.

Wenn die Pods spezifische Knotenselektoren 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.

Nächste Schritte