Diese Seite bietet einen Überblick über Markierungen und Toleranzen in Google Distributed Cloud. Wenn Sie Arbeitslasten planen, die in einem Cluster bereitgestellt werden sollen, können Sie mithilfe von Knotenmarkierungen steuern, auf welchen Knoten sie ausgeführt werden dürfen.
Überblick
Wenn Sie eine Arbeitslast zur Ausführung in einem Cluster senden, bestimmt der scheduler, wo die mit der Arbeitslast verknüpften Pods platziert werden. Der Planer kann einen Pod auf einem beliebigen Knoten platzieren, der die CPU-, Arbeitsspeicher- und angepassten Ressourcenanforderungen des Pods erfüllt.
Wenn der Cluster verschiedene Arbeitslasten ausführt, möchten Sie möglicherweise steuern, welche Arbeitslasten in einem bestimmten Knotenpool ausgeführt werden können.
Mit einer Knotenmarkierung können Sie einen Knoten markieren. Dies bewirkt, dass der Planer den Knoten für bestimmte Pods nicht verwendet. Ein ergänzendes Feature, Toleranzen, ermöglicht die Festlegung von Pods, die mit "markierten" Knoten verwendet werden können.
Markierungen und Toleranzen arbeiten zusammen, um sicherzustellen, dass Pods nicht auf geeigneten Knoten geplant werden.
Knotenmarkierungen sind Schlüssel/Wert-Paare, die einem Effekt zugeordnet sind. In der folgenden Tabelle sind die verfügbaren Effekte aufgeführt:
Effekt | Beschreibung |
---|---|
NoSchedule |
Pods, die diese Markierung nicht tolerieren, werden nicht auf dem Knoten geplant. Vorhandene Pods werden nicht vom Knoten entfernt. |
PreferNoSchedule |
Kubernetes plant keine Pods, die diese Markierung auf Knoten nicht tolerieren. |
NoExecute |
Der Pod wird aus dem Knoten entfernt, wenn er bereits auf dem Knoten ausgeführt wird, und er wird nicht für den Knoten geplant, wenn er noch nicht auf dem Knoten ausgeführt wird. |
Vorteile des Festlegens von Knotenmarkierungen in Google Distributed Cloud
Sie können Knotenmarkierungen zwar mit dem Befehl kubectl taint
festlegen, aber die Verwendung von gkectl
oder der Google Cloud Console zum Festlegen einer Knotenmarkierung hat gegenüber kubectl
die folgenden Vorteile:
- Markierungen bleiben erhalten, wenn ein Knoten neu gestartet oder ersetzt wird.
- Markierungen werden automatisch erstellt, wenn einem Knotenpool ein Knoten hinzugefügt wird.
- Wenn Sie
gkectl
verwenden, um Markierungen hinzuzufügen, werden diese während des Cluster-Autoscalings automatisch erstellt. (Autoscaling für Knotenpools, die in der Google Cloud Console erstellt wurden, ist derzeit nicht verfügbar.)
Knotenmarkierungen festlegen
Sie können Knotenmarkierungen in einem Knotenpool entweder beim Erstellen eines Nutzerclusters oder nach dessen Erstellung festlegen. In diesem Abschnitt wird beschrieben, wie Sie bereits erstellten Clustern Markierungen hinzufügen. Der Vorgang beim Erstellen neuer Cluster ist jedoch ähnlich.
Sie können entweder einen neuen Knotenpool hinzufügen und eine Markierung setzen oder einen bestehenden Knotenpool aktualisieren und eine Markierung setzen. Prüfen Sie vor dem Hinzufügen eines weiteren Knotenpools, ob im Cluster genügend IP-Adressen verfügbar sind.
Wenn Sie den Cluster in der Google Cloud Console erstellt haben, können Sie mit der Google Cloud Console einen Knotenpool hinzufügen oder aktualisieren.
Markierungen in einem neuen Knotenpool festlegen
Console
Rufen Sie in der Console die Übersichtsseite für Google Kubernetes Engine-Cluster auf.
Wählen Sie das Google Cloud-Projekt aus, in dem sich der Nutzercluster befindet.
Klicken Sie in der Clusterliste auf den Namen des Clusters und dann im Bereich Details auf Details ansehen.
Klicken Sie auf Knotenpool hinzufügen
.Konfigurieren Sie den Knotenpool:
- Geben Sie den Namen des Knotenpools ein.
- Geben Sie die Anzahl der vCPUs für jeden Knoten im Pool (mindestens 4 pro Nutzercluster-Worker) ein.
- Geben Sie die Größe des Arbeitsspeichers in Mebibyte (MiB) für jeden Knoten im Pool ein (mindestens 8.192 MiB pro Nutzercluster-Worker-Knoten und muss ein Vielfaches von 4 sein).
- Geben Sie im Feld Replikate die Anzahl der Knoten im Pool ein (mindestens 3).
Wählen Sie den Betriebssystem-Image-Typ aus: Ubuntu Containerd oder COS.
Geben Sie die Größe des Bootlaufwerks in Gibibyte (GiB) ein (Standardeinstellung ist 40 GiB).
Klicken Sie im Abschnitt Knotenpoolmetadaten (optional) auf + Markierung hinzufügen. Geben Sie Schlüssel, Wert und Effekt für die Markierung ein. Wiederholen Sie diesen Vorgang nach Bedarf.
Klicken Sie optional auf + Kubernetes-Labels hinzufügen. Geben Sie den Schlüssel und den Wert für das Label ein. Wiederholen Sie diese Schritte für alle Suchabfragen, für die dies erforderlich ist.
Klicken Sie auf Erstellen.
In der Google Cloud Console wird Clusterstatus: Änderungen in Bearbeitung angezeigt. Klicken Sie auf Details ansehen, um die Ressourcenstatusbedingung und Statusmeldungen aufzurufen.
Befehlszeile
Füllen Sie in der Konfigurationsdatei für den Nutzercluster den Abschnitt
nodePools
aus.Geben Sie die folgenden Felder an:
nodePools.[i].name
nodePools[i].cpus
nodePools.[i].memoryMB
nodePools.[i].replicas
Die folgenden Felder sind optional. Wenn Sie weder
nodePools[i].bootDiskSizeGB
nochnodePools[i].osImageType
angeben, werden die Standardwerte verwendet.Füllen Sie den Abschnitt
nodePools[i].taints
aus. Beispiel:nodePools: - name: "my-node-pool" taints: - key: "staging" value: "true" effect: "NoSchedule"
Füllen Sie optional die folgenden Abschnitte aus:
nodePools[i].labels
nodePools[i].bootDiskSizeGB
nodePools[i].osImageType
nodePools[i].vsphere.datastore
nodePools[i].vsphere.tags
Führen Sie dazu diesen Befehl aus:
gkectl update cluster --kubeconfig ADMIN_CLUSTER_KUBECONFIG --config USER_CLUSTER_CONFIG
Ersetzen Sie Folgendes:
[ADMIN_CLUSTER_KUBECONFIG]
ist der Pfad der kubeconfig-Datei für Ihren Administratorcluster.[USER_CLUSTER_CONFIG]
ist der Pfad Ihrer Nutzercluster-Konfigurationsdatei.
Markierungen in einem vorhandenen Knotenpool festlegen
Console
Rufen Sie in der Console die Übersichtsseite für Google Kubernetes Engine-Cluster auf.
Wählen Sie das Google Cloud-Projekt aus, in dem sich der Nutzercluster befindet.
Klicken Sie in der Clusterliste auf den Namen des Clusters und dann im Bereich Details auf Details ansehen.
Klicken Sie auf den Tab Knoten.
Klicken Sie auf den Namen des Knotenpools, den Sie ändern möchten.
Klicken Sie neben dem Abschnitt Knotenpoolmetadaten (optional) auf
Bearbeiten und dann auf + Markierung hinzufügen. Geben Sie Schlüssel, Wert und Effekt für die Markierung ein. Wiederholen Sie diesen Vorgang nach Bedarf.Klicken Sie auf Fertig.
Klicken Sie auf
, um zur vorherigen Seite zurückzukehren.In der Google Cloud Console wird Clusterstatus: Änderungen in Bearbeitung angezeigt. Klicken Sie auf Details ansehen, um die Ressourcenstatusbedingung und Statusmeldungen aufzurufen.
Befehlszeile
Wechseln Sie in der Konfigurationsdatei des Nutzerclusters zum Abschnitt
nodePools
des Knotenpools, den Sie aktualisieren möchten.Füllen Sie
nodePools[i].taints
aus. Beispiel:nodePools: - name: "my-node-pool" taints: - key: "staging" value: "true" effect: "NoSchedule"
Führen Sie dazu diesen Befehl aus:
gkectl update cluster --kubeconfig ADMIN_CLUSTER_KUBECONFIG --config USER_CLUSTER_CONFIG
Ersetzen Sie Folgendes:
[ADMIN_CLUSTER_KUBECONFIG]
ist der Pfad der kubeconfig-Datei für Ihren Administratorcluster.[USER_CLUSTER_CONFIG]
ist der Pfad Ihrer Nutzercluster-Konfigurationsdatei.
Pods für Tolerieren einer Markierung konfigurieren
Sie können festlegen, dass Pods Markierungen tolerieren, indem Sie das Feld tolerations
in die Pod-Spezifikation aufnehmen. Im folgenden Beispiel kann der Pod auf einem Knoten mit der Markierung dedicated=experimental:NoSchedule
geplant werden:
tolerations:
- key: dedicated
operator: Equal
value: experimental
effect: NoSchedule
Weitere Beispiele finden Sie unter Markierungen und Toleranzen.