Automatische Knotenbereitstellung verwenden


Auf dieser Seite wird erläutert, wie Sie die automatische Knotenbereitstellung in Standardclustern von Google Kubernetes Engine (GKE) verwenden.

Mit Autopilot-Clustern müssen Sie sich keine Gedanken über die Bereitstellung von Knoten oder die Verwaltung von Knotenpools machen, da Knotenpools automatisch über die automatische Knotenbereitstellung bereitgestellt und automatisch skaliert werden, um die Anforderungen Ihrer Arbeitslasten zu erfüllen.

Übersicht

Mit der automatischen Knotenbereitstellung wird eine Reihe von Knotenpools für den Nutzer automatisch verwaltet. Ohne die automatische Knotenbereitstellung startet GKE neue Knoten nur, wenn sie aus den vom Nutzer erstellten Knotenpools stammen. Mit der automatischen Knotenbereitstellung können neue Knotenpools automatisch erstellt und gelöscht werden.

Vorbereitung

Führen Sie die folgenden Aufgaben aus, bevor Sie beginnen:

Mit den folgenden Methoden können Sie die gcloud-Einstellungen festlegen:

  • Verwenden Sie gcloud init, wenn Sie die Standardeinstellungen ansehen möchten.
  • Verwenden Sie gcloud config, um Ihre Projekt-ID, Zone und Region individuell festzulegen.

gcloud init verwenden

Wenn Sie die Fehlermeldung One of [--zone, --region] must be supplied: Please specify location erhalten, führen Sie diesen Abschnitt aus.

  1. Führen Sie gcloud init aus und folgen Sie der Anleitung:

    gcloud init

    Wenn Sie SSH auf einem Remote-Server verwenden, können Sie mit dem Flag --console-only verhindern, dass mit dem Befehl ein Browserfenster geöffnet wird:

    gcloud init --console-only
  2. Folgen Sie der Anleitung, um gcloud zur Verwendung Ihres Google Cloud-Kontos zu autorisieren.
  3. Erstellen Sie eine neue Konfiguration oder wählen Sie eine vorhandene aus.
  4. Wählen Sie ein Google Cloud-Projekt aus.
  5. Wählen Sie eine Compute Engine-Standardzone für zonale Cluster oder eine Region für regionale oder Autopilot-Cluster aus.

gcloud config verwenden

  • Legen Sie Ihre standardmäßige Projekt-ID fest:
    gcloud config set project PROJECT_ID
  • Wenn Sie mit zonalen Clustern arbeiten, legen Sie die Standardzone für Compute Engine fest:
    gcloud config set compute/zone COMPUTE_ZONE
  • Wenn Sie mit Autopilot oder regionalen Clustern arbeiten, legen Sie die Compute-Standardregion fest:
    gcloud config set compute/region COMPUTE_REGION
  • Aktualisieren Sie gcloud auf die neueste Version:
    gcloud components update

Anforderungen

Die automatische Knotenbereitstellung ist in den folgenden GKE-Releases verfügbar:

  • Version 1.11.2-gke.25 und höher für zonale Cluster
  • Version 1.12.x und höher für regionale Cluster

Nicht unterstützte Features

Die folgenden Features werden von der automatischen Knotenbereitstellung nicht unterstützt. Das bedeutet, dass die automatische Knotenbereitstellung keine Knotenpools mit diesen Features bereitstellt, vorhandene Knotenpools jedoch automatisch skaliert:

Aktion

Die automatische Knotenbereitstellung ist ein Mechanismus von Cluster Autoscaler. Damit erfolgt die Skalierung spezifisch für die einzelnen Knotenpools. Wenn die automatische Knotenbereitstellung aktiviert ist, kann der Cluster Autoscaler die Knotenpools gemäß den Spezifikationen nicht planbarer Pods automatisch erweitern.

Die automatische Knotenbereitstellung erstellt Knotenpools anhand der folgenden Informationen:

Ressourcenlimits

Für die automatische Knotenbereitstellung und das Autoscaling des Clusters gelten Einschränkungen auf zwei Ebenen:

  • Knotenpoolebene
  • Clusterebene

Limits für Knotenpools

Knotenpools, die durch die automatische Knotenbereitstellung erstellt werden, sind auf 1.000 Knoten beschränkt.

Limits für Cluster

Die von Ihnen definierten Limits und ihre Durchsetzung beziehen sich auf die Gesamtheit der für Ihren Cluster verwendeten CPU- und Arbeitsspeicherressourcen und nicht nur auf die automatisch bereitgestellten Pools.

Der Cluster Autoscaler erstellt keine neuen Knoten, wenn dadurch ein definierter Grenzwert überschritten würde. Sind die Limits bereits überschritten, werden Knoten nicht automatisch gelöscht.

Arbeitslasttrennung

Wenn ausstehende Pods mit Knotenaffinitäten und -toleranzen vorhanden sind, können über die automatische Knotenbereitstellung Knoten mit übereinstimmenden Labels und Markierungen bereitgestellt werden.

Knotenpools mit Labels und Markierungen können erstellt werden, wenn alle folgenden Bedingungen erfüllt sind:

  • Für einen ausstehenden Pod ist ein Knoten mit einem bestimmten Labelschlüssel und -wert erforderlich.
  • Der Pod hat eine Toleranz für eine Markierung mit demselben Schlüssel.
  • Die Toleranz gilt für den NoSchedule-Effekt, den NoExecute-Effekt oder alle Effekte.

Die Spezifikation des Pods kann auf zwei Arten zum Ausdruck bringen, dass Knoten mit bestimmten Labels erforderlich sind:

  • Mithilfe des Feldes nodeSelector.
  • Mithilfe des Feldes nodeAffinity und des Operators In sowie genau eines Wertes.

Das folgende Beispiel ist ein Auszug einer Pod-Spezifikation, die als Anfrage zur Arbeitslasttrennung interpretiert wird. In diesem Beispiel hat der Clusteradministrator dedicated als Schlüssel ausgewählt, der zum Isolieren von Arbeitslasten genutzt wird. Das UI-Team hat außerdem festgestellt, dass dedizierte Knoten für die Arbeitslasten benötigt werden.

Der Pod hat eine Toleranz für Knoten mit dem Label dedicated=ui-team und verwendet nodeAffinity für die Knotenauswahl:

spec:
  tolerations:
  - key: dedicated
    operator: Equal
    value: ui-team
    effect: NoSchedule
  affinity:
    nodeAffinity:
      requiredDuringSchedulingIgnoredDuringExecution:
        nodeSelectorTerms:
        - matchExpressions:
          - key: dedicated
            operator: In
            values:
            - ui-team

Wenn dieser Pod vorhanden ist, werden Knoten mit der Markierung dedicated=ui-team:NoSchedule und dem Label dedicated=ui-team beim Erstellen von der automatischen Knotenbereitstellung berücksichtigt.

Im folgenden Beispiel wird nodeSelector verwendet, was den gleichen Effekt hat:

spec:
  tolerations:
  - key: dedicated
    operator: Equal
    value: ui-team
    effect: NoSchedule
  nodeSelector:
    dedicated: ui-team

Automatisch bereitgestellte Knotenpools löschen

Wenn sich in einem automatisch bereitgestellten Knotenpool keine Knoten befinden, löscht GKE den Knotenpool. Knotenpools, die nicht als automatisch bereitgestellt gekennzeichnet sind, werden nicht gelöscht.

Unterstützte Maschinentypen

Ab GKE 1.19.7-gke.800 berücksichtigt die automatische Knotenbereitstellung bei der Erstellung von Knotenpools alle Maschinentypen mit Ausnahme von N1-Maschinen. Die automatische Knotenbereitstellung berücksichtigt außerdem nur Maschinen mit bis zu 64 vCPUs. Standardmäßig wird die E2-Maschinenfamilie verwendet, außer in folgenden Fällen:

  • Die Arbeitslastanfrage kann von der E2-Maschinenfamilie nicht erfüllt werden. Wird z. B. eine GPU von der Arbeitslast angefordert, wird für den neuen Knotenpool die N1-Maschinenfamilie verwendet.
  • Die Arbeitslast verwendet das Label der Maschinenfamilie. Dies kann überschrieben werden, wenn die Arbeitslastanfrage vom vorherigen Punkt nicht erfüllt werden kann. Weitere Informationen finden Sie unter Benutzerdefinierte Maschinenfamilie verwenden.

In Versionen vor 1.19.7-gke.800 werden bei der automatischen Knotenbereitstellung nur N1-Maschinentypen mit bis zu 64 vCPUs berücksichtigt.

Unterstützte Knoten-Images

Derzeit wird bei der automatischen Knotenbereitstellung nur die Erstellung von Knotenpools mit dem Knoten-Image von Container-Optimized OS berücksichtigt.

Unterstützung für VMs auf Abruf

Die automatische Knotenbereitstellung unterstützt die Erstellung von Knotenpools auf der Grundlage von VM-Instanzen auf Abruf.

Knotenpools werden nur auf der Grundlage von VM-Instanzen auf Abruf erstellt, wenn nicht planbare Pods mit Toleranz für die Markierung cloud.google.com/gke-preemptible="true":NoSchedule vorhanden sind.

Knoten, die auf VMs auf Abruf basieren und von automatisch bereitgestellten Knotenpools erstellt wurden, sind mit dieser Markierung versehen.

Unterstützung für Pods, die flüchtigen Speicher anfordern

Die automatische Knotenbereitstellung unterstützt das Erstellen von Knotenpools, wenn Pods einen flüchtigen Speicher anfordern. Die Größe des in den Knotenpools bereitgestellten Bootlaufwerks ist für alle neu automatisch bereitgestellten Knotenpools konstant. Diese Größe des Bootlaufwerks kann angepasst werden, wobei der Standardwert 100 GiB ist. Flüchtiger Speicher mit lokalen SSDs wird nicht unterstützt.

Bei der automatischen Knotenbereitstellung wird ein Knotenpool nur dann bereitgestellt, wenn der zuweisbare flüchtige Speicher eines Knotens mit einem festgelegten Bootlaufwerk größer oder gleich dem von einem ausstehenden Pod angeforderten flüchtigen Speicher ist. Wenn der angeforderte flüchtige Speicher größer ist als alle zuweisbaren Ressourcen, wird mit der automatischen Knotenbereitstellung kein Knotenpool bereitgestellt. Die Laufwerksgröße für Knoten wird nicht dynamisch anhand von Anfragen für flüchtigen Speicher ausstehender Pods konfiguriert.

Dieser flüchtige Speicher für Pods wird in den GKE-Versionen 1.19.7-gke.800 oder höher und 1.18.12-gke.1210 oder höher unterstützt.

Einschränkungen der Skalierbarkeit

Für die automatische Knotenbereitstellung gelten die gleichen Einschränkungen wie für den Cluster Autoscaler sowie die folgenden zusätzlichen Einschränkungen:

Begrenzte Anzahl von getrennten Arbeitslasten
Bei der automatischen Knotenbereitstellung werden maximal 100 separate Arbeitslasten unterstützt.
Begrenzte Anzahl von Knotenpools
Bei der automatischen Knotenbereitstellung wird die Priorität zum Erstellen neuer Knotenpools aufgehoben, wenn die Anzahl der Pools 100 erreicht. Zwar können mehr als 100 Knotenpools erstellt werden, aber beim Erstellen eines Knotenpools besteht die einzige Option darin, einen ausstehenden Pod zu planen.

Automatische Knotenbereitstellung aktivieren

Sie aktivieren die automatische Knotenbereitstellung auf einem Cluster mit gcloud oder der Google Cloud Console.

gcloud

Führen Sie den folgenden Befehl aus, um die automatische Knotenbereitstellung zu aktivieren:

gcloud container clusters update CLUSTER_NAME \
    --enable-autoprovisioning \
    --min-cpu MINIMUM_CPU \
    --min-memory MIMIMUM_MEMORY \
    --max-cpu MAXIMUM_CPU \
    --max-memory MAXIMUM_MEMORY
    --autoprovisioning-scopes=https://www.googleapis.com/auth/logging.write,https://www.googleapis.com/auth/monitoring,https://www.googleapis.com/auth/devstorage.read_only

Dabei gilt:

  • CLUSTER_NAME: der Name des Clusters zum Aktivieren der automatischen Knotenbereitstellung
  • MINIMUM_CPU: die Mindestanzahl von Kernen im Cluster
  • MINIMUM_MEMORY: die Mindestanzahl von Gigabyte Arbeitsspeicher im Cluster
  • MAXIMUM_CPU: die maximale Anzahl der Kerne im Cluster
  • MAXIMUM_MEMORY: die maximale Anzahl von Gigabyte Arbeitsspeicher im Cluster

Im folgenden Beispiel wird die automatische Bereitstellung von Knoten auf dev-cluster aktiviert. Dadurch wird die Skalierung von einer Clustergesamtgröße von 1 CPU und 1 GB Arbeitsspeicher auf maximal 10 CPU und 64 GB Arbeitsspeicher ermöglicht:

gcloud container clusters update dev-cluster \
    --enable-autoprovisioning \
    --min-cpu 1 \
    --min-memory 1 \
    --max-cpu 10 \
    --max-memory 64

Console

Führen Sie die folgenden Schritte aus, um die automatische Knotenbereitstellung zu aktivieren:

  1. Rufen Sie in der Cloud Console das Kubernetes Engine-Menü auf.

Zum Google Kubernetes Engine-Menü

  1. Wählen Sie den gewünschten Cluster aus.
  2. Klicken Sie auf das Symbol .
  3. Scrollen Sie nach unten zu Automatische Bereitstellung von Knoten und wählen Sie Aktiviert aus.
  4. Legen Sie die gewünschte minimale und maximale CPU- und Arbeitsspeicherauslastung für den Cluster fest.
  5. Klicken Sie auf Speichern. GKE aktualisiert Ihren Cluster.

Konfigurationsdatei für die automatische Bereitstellung verwenden

Die automatische Knotenbereitstellung kann mit einer YAML-Konfigurationsdatei konfiguriert werden. Die Konfigurationsdatei kann nur eine einzelne Zeile enthalten, wenn damit eine einzelne Einstellung geändert wird. In einer einzelnen Konfigurationsdatei können mehrere Einstellungen festgelegt werden. In diesem Fall werden beim Anwenden der Konfigurationsdatei alle diese Einstellungen geändert.

Einige erweiterte Konfigurationen können nur mithilfe einer Konfigurationsdatei angegeben werden.

Beispiel 1: Wenn Sie die folgende Konfigurationsdatei anwenden, werden automatische Knotenreparaturen und automatische Upgrades für alle neuen Knotenpools aktiviert, die durch die automatische Knotenbereitstellung erstellt werden:

management:
  autoRepair: true
  autoUpgrade: true

Beispiel 2: Durch die Anwendung der folgenden Konfigurationsdatei würden die folgenden Einstellungen geändert werden:

  • Ressourcenlimits werden für CPU, Arbeitsspeicher und GPU festgelegt. Wenn die Gesamtgröße des Clusters die angegebenen Ressourcenlimits überschreitet, wird die automatische Knotenbereitstellung keinen Knoten erstellen.
  • Automatische Knotenreparaturen und automatische Upgrades werden für alle neuen Knotenpools aktiviert, die durch die automatische Knotenbereitstellung erstellt werden.
  • Secure Boot und Integritätsmonitoring werden für alle neuen Knotenpools aktiviert, die durch die automatische Knotenbereitstellung erstellt werden.
  • Die Größe des Bootlaufwerks wird für neue Knotenpools, die durch die automatische Knotenbereitstellung erstellt werden, auf 100 GB festgelegt.
resourceLimits:
  -resourceType: 'cpu'
   minimum: 4
   maximum: 10
  -resourceType: 'memory'
   maximum: 64
  -resourceType: 'nvidia-tesla-k80'
   maximum: 4
management:
  autoRepair: true
  autoUpgrade: true
shieldedInstanceConfig:
  enableSecureBoot: true
  enableIntegrityMonitoring: true
diskSizeGb: 100

So verwenden Sie eine Konfigurationsdatei für die automatische Bereitstellung:

  1. Erstellen Sie eine Datei mit der gewünschten Konfiguration an einem Standort, an dem gcloud darauf zugreifen kann.

  2. Wenden Sie die Konfiguration auf Ihren Cluster an, indem Sie den folgenden Befehl ausführen:

    gcloud container clusters update CLUSTER_NAME \
       --enable-autoprovisioning \
       --autoprovisioning-config-file FILE_NAME

    Dabei gilt:

    • CLUSTER_NAME ist der Name des Clusters.
    • FILE_NAME: der Name der Konfigurationsdatei

    Weitere Informationen finden Sie in der Dokumentation zu gcloud container clusters update.

Standardeinstellungen für die automatische Bereitstellung

Bei der automatischen Knotenbereitstellung werden die Pod-Anforderungen in Ihrem Cluster untersucht, um festzustellen, welcher Knotentyp am besten zu diesen Pods passt. Einige Knotenpooleinstellungen werden jedoch nicht direkt durch Pods bestimmt (z. B. Einstellungen für Knotenupgrades). Sie können für diese Einstellungen Standardwerte festlegen, die dann auf alle neu erstellten Knotenpools angewendet werden.

Standardeinstellungen der Identität für automatisch bereitgestellte Knotenpools festlegen

Berechtigungen für Google Cloud-Ressourcen werden von Identitäten bereitgestellt.

Sie können die Standardidentität (entweder ein Dienstkonto oder einen oder mehrere Bereiche) für neue automatisch bereitgestellte Knotenpools mit dem gcloud-Tool oder über eine Konfigurationsdatei festlegen.

gcloud

Führen Sie zum Festlegen des  IAM-Standarddienstkontos, das bei der automatischen Knotenbereitstellung verwendet werden soll, den folgenden Befehl aus:

gcloud container clusters update CLUSTER_NAME \
    --enable-autoprovisioning --autoprovisioning-service-account=SERVICE_ACCOUNT

Dabei gilt:

  • CLUSTER_NAME ist der Name des Clusters.
  • SERVICE_ACCOUNT: der Name des Standarddienstkontos.

Im folgenden Beispiel wird test-service-account@google.com als Standarddienstkonto für den Cluster dev-cluster festgelegt:

gcloud container clusters update dev-cluster \
    --enable-autoprovisioning --autoprovisioning-service-account=test-service-account@google.com

Führen Sie den folgenden Befehl aus, um die Standardbereiche anzugeben, die von der automatischen Knotenbereitstellung verwendet werden:

gcloud container clusters update CLUSTER_NAME \
    --enable-autoprovisioning --autoprovisioning-scopes=SCOPE

Dabei gilt:

  • CLUSTER_NAME ist der Name des Clusters.
  • SCOPE: die Google Cloud-Bereiche, die von automatisch bereitgestellten Knotenpools verwendet werden Wenn Sie mehrere Bereiche angeben möchten, trennen Sie die Bereiche durch ein Komma (z. B. SCOPE1, SCOPE2,...).

Im folgenden Beispiel wird der Standardbereich für den Cluster dev-cluster auf devstorage.read_only festgelegt:

gcloud container clusters update dev-cluster \
    --enable-autoprovisioning \
    --autoprovisioning-scopes=https://www.googleapis.com/auth/pubsub,https://www.googleapis.com/auth/devstorage.read_only

Datei

Sie können die von der automatischen Knotenbereitstellung verwendeten Standardwerte für Identitäten mithilfe einer Konfigurationsdatei festlegen. Mit der folgenden YAML-Konfiguration wird das IAM-Dienstkonto festgelegt:

  serviceAccount: SERVICE_ACCOUNT

Ersetzen Sie SERVICE_ACCOUNT durch den Namen des Standarddienstkontos.

Alternativ können Sie die folgende YAML-Konfiguration verwenden, um Standardbereiche festzulegen, die von der automatischen Knotenbereitstellung verwendet werden:

  scopes: SCOPE

Ersetzen Sie SCOPE durch den Google Cloud-Bereich, der von automatisch bereitgestellten Knotenpools verwendet wird. Wenn Sie mehrere Bereiche angeben möchten, trennen Sie die Bereiche durch ein Komma (z. B. SCOPE1, SCOPE2,...).

So verwenden Sie eine Konfigurationsdatei für die automatische Bereitstellung:

  1. Erstellen Sie eine Konfigurationsdatei, in der die Standardwerte der Identitäten an einem Speicherort festgelegt sind, an dem gcloud darauf zugreifen kann.

  2. Wenden Sie die Konfiguration auf Ihren Cluster an, indem Sie den folgenden Befehl ausführen:

    gcloud container clusters update CLUSTER_NAME \
       --enable-autoprovisioning \
       --autoprovisioning-config-file FILE_NAME

Dabei gilt:

  • CLUSTER_NAME ist der Name des Clusters.
  • FILE_NAME: der Name der Konfigurationsdatei

Vom Kunden verwaltete Verschlüsselungsschlüssel (CMEK)

Sie können vom Kunden verwaltete Verschlüsselungsschlüssel (Customer Managed Encryption Keys, CMEK) angeben, die von neuen automatisch bereitgestellten Knotenpools verwendet werden.

Sie können die vom Kunden verwaltete Verschlüsselung von Bootlaufwerken mit einer Konfigurationsdatei aktivieren. Mit der folgenden YAML-Konfiguration wird der CMEK-Schlüssel festgelegt:

  bootDiskKmsKey: projects/KEY_PROJECT_ID/locations/LOCATION/keyRings/KEY_RING/cryptoKeys/KEY_NAME

Dabei gilt:

  • KEY_PROJECT_ID: Ihre Schlüsselprojekt-ID
  • LOCATION: der Speicherort Ihres Schlüsselbunds
  • KEY_RING: der Name des Schlüsselbunds
  • KEY_NAME: der Name des Schlüssels

So verwenden Sie eine Konfigurationsdatei für die automatische Bereitstellung:

  1. Erstellen Sie eine Konfigurationsdatei, in der ein CMEK-Schlüssel an einem Speicherort festgelegt ist, an dem gcloud darauf zugreifen kann.

  2. Wenden Sie die Konfiguration auf Ihren Cluster an, indem Sie den folgenden Befehl ausführen:

    gcloud container clusters update CLUSTER_NAME \
       --enable-autoprovisioning \
       --autoprovisioning-config-file FILE_NAME

    Dabei gilt:

    • CLUSTER_NAME ist der Name des Clusters.
    • FILE_NAME: der Name der Konfigurationsdatei

Knotenintegrität

Die automatische Knotenbereitstellung unterstützt die Erstellung von Knotenpools mit aktiviertem Secure Boot und Integritätsmonitoring.

Sie können Secure Boot und das Integritätsmonitoring mit einer Konfigurationsdatei aktivieren. Die folgende YAML-Konfiguration aktiviert Secure Boot und deaktiviert das Integritätsmonitoring:

  shieldedInstanceConfig:
    enableSecureBoot: true
    enableIntegrityMonitoring: false

So verwenden Sie eine Konfigurationsdatei für die automatische Bereitstellung:

  1. Kopieren Sie die Konfiguration oben in eine Datei an einem Speicherort, auf den gcloud zugreifen kann. Bearbeiten Sie die Werte für enableSecureBoot und enableIntegrityMonitoring. Speichern Sie die Datei.

  2. Wenden Sie die Konfiguration auf Ihren Cluster an, indem Sie den folgenden Befehl ausführen:

    gcloud container clusters update CLUSTER_NAME \
       --enable-autoprovisioning \
       --autoprovisioning-config-file FILE_NAME

    Dabei gilt:

    • CLUSTER_NAME ist der Name des Clusters.
    • FILE_NAME: der Name der Konfigurationsdatei

Automatische Knotenreparatur und automatische Upgrades

Die automatische Knotenbereitstellung unterstützt das Erstellen von Knotenpools mit aktivierter automatischer Reparatur und automatischem Upgrade.

gcloud

Führen Sie den folgenden Befehl aus, um die automatische Reparatur und das automatische Upgrade für alle neuen, automatisch bereitgestellten Knotenpools zu aktivieren:

gcloud container clusters update CLUSTER_NAME \
    --enable-autoprovisioning --enable-autoprovisioning-autorepair \
    --enable-autoprovisioning-autoupgrade

Ersetzen Sie CLUSTER_NAME durch den Namen des Clusters.

Führen Sie den folgenden Befehl aus, um die automatische Reparatur und das automatische Upgrade für alle neuen, automatisch bereitgestellten Knotenpools zu deaktivieren:

gcloud container clusters update CLUSTER_NAME \
    --enable-autoprovisioning --no-enable-autoprovisioning-autorepair \
    --no-enable-autoprovisioning-autoupgrade

Ersetzen Sie CLUSTER_NAME durch den Namen des Clusters.

Datei

Sie können die automatische Reparatur und das automatische Upgrade von Knoten mit einer Konfigurationsdatei aktivieren oder deaktivieren. Die folgende YAML-Konfiguration aktiviert die automatische Reparatur und deaktiviert das automatische Upgrade:

  management:
    autoRepair: true
    autoUpgrade: false

So verwenden Sie eine Konfigurationsdatei für die automatische Bereitstellung:

  1. Kopieren Sie die Konfiguration oben in eine Datei an einem Speicherort, auf den gcloud zugreifen kann. Bearbeiten Sie die Werte für autoUpgrade und autoRepair. Speichern Sie die Datei.

  2. Wenden Sie die Konfiguration auf Ihren Cluster an, indem Sie den folgenden Befehl ausführen:

gcloud container clusters update CLUSTER_NAME \
    --enable-autoprovisioning \
    --autoprovisioning-config-file FILE_NAME

Dabei gilt:

  • CLUSTER_NAME ist der Name des Clusters.
  • FILE_NAME: der Name der Konfigurationsdatei

Surge-Upgrade-Einstellungen von Knoten

Die automatische Knotenbereitstellung ermöglicht das Erstellen von Knotenpools mit bestimmten Einstellungen fürs Surge-Upgrade.

gcloud

Führen Sie den folgenden Befehl aus, um die Surge-Upgrade-Einstellungen für alle neuen, automatisch bereitgestellten Knotenpools zu übernehmen:

gcloud container clusters update CLUSTER_NAME \
    --autoprovisioning-max-surge-upgrade MAX_SURGE \
    --autoprovisioning-max-unavailable-upgrade MAX_UNAVAILABLE

Dabei gilt:

  • CLUSTER_NAME ist der Name des Clusters.
  • MAX_SURGE: die maximale Anzahl von Knoten, die während eines Upgrades dem Knotenpool hinzugefügt werden können.
  • MAX_UNAVAILABLE: die maximale Anzahl von Knoten im Knotenpool, die während Upgrades gleichzeitig nicht verfügbar sind.

Datei

Mithilfe einer Konfigurationsdatei wie der Folgenden können Sie Surge-Upgrade-Einstellungen für alle neuen, automatisch bereitgestellten Knotenpools festlegen:

  upgradeSettings:
    maxSurgeUpgrade: 1
    maxUnavailableUpgrade: 2

So verwenden Sie eine Konfigurationsdatei für die automatische Bereitstellung:

  1. Kopieren Sie die Konfiguration oben in eine Datei an einem Speicherort, auf den gcloud zugreifen kann. Bearbeiten Sie die Werte für maxSurgeUpgrade und maxUnavailableUpgrade. Speichern Sie die Datei.

  2. Wenden Sie die Konfiguration auf Ihren Cluster an, indem Sie den folgenden Befehl ausführen:

gcloud container clusters update CLUSTER_NAME \
    --enable-autoprovisioning \
    --autoprovisioning-config-file FILE_NAME

Dabei gilt:

  • CLUSTER_NAME ist der Name des Clusters.
  • FILE_NAME: der Name der Konfigurationsdatei

Weitere Informationen finden Sie in der Dokumentation zu gcloud container clusters update.

Benutzerdefinierte Bootlaufwerke

Die automatische Knotenbereitstellung unterstützt die Erstellung von Knotenpools mit benutzerdefinierten Bootlaufwerken.

Sie können die Einstellung des Bootlaufwerks mit einer Konfigurationsdatei anpassen. Die folgende YAML-Konfiguration bewirkt, dass die automatische Knotenbereitstellung Knotenpools mit SSD-Laufwerken mit einer Größe von 100 GB erstellt:

  diskSizeGb: 100
  diskType: pd-ssd

Geben Sie Folgendes an:

  • diskSizeGb: die Größe des Laufwerks in GB
  • diskType: der Typ des Laufwerks, nämlich einer der folgenden Werte:
    • pd-standard: ein nichtflüchtiger Standardspeicher (Standard)
    • pd-ssd: ein nichtflüchtiger SSD-Speicher

So verwenden Sie eine Konfigurationsdatei für die automatische Bereitstellung:

  1. Erstellen Sie eine Datei mit der gewünschten Bootlaufwerkkonfiguration an einem Speicherort, an dem gcloud darauf zugreifen kann.

  2. Wenden Sie die Konfiguration auf Ihren Cluster an, indem Sie den folgenden Befehl ausführen:

    gcloud container clusters update CLUSTER_NAME \
       --enable-autoprovisioning \
       --autoprovisioning-config-file FILE_NAME

    Dabei gilt:

    • CLUSTER_NAME ist der Name des Clusters.
    • FILE_NAME: der Name der Konfigurationsdatei

GPU-Limits konfigurieren

Wenn Sie die automatische Knotenbereitstellung mit GPUs verwenden, können Sie mit dem gcloud-Tool oder der Google Cloud Console die Höchstgrenze für jeden GPU-Typ im Cluster festlegen. Wenn Sie mehrere GPU-Typen konfigurieren möchten, müssen Sie eine Konfigurationsdatei verwenden.

Führen Sie den Befehl gcloud compute accelerator-types list aus, um die verfügbaren resourceTypes auflisten zu lassen.

gcloud

gcloud container clusters update CLUSTER_NAME \
    --enable-autoprovisioning \
    --max-cpu MAXIMUM_CPU \
    --max-memory MAXIMUM_MEMORY \
    --min-accelerator type=GPU_TYPE,count=MINIMUM_ACCELERATOR \
    --max-accelerator type=GPU_TYPE,count=MAXIMUM_ACCELERATOR

Dabei gilt:

  • CLUSTER_NAME ist der Name des Clusters.
  • MAXIMUM_CPU: die maximale Anzahl der Kerne im Cluster
  • MAXIMUM_MEMORY: die maximale Anzahl von Gigabyte Arbeitsspeicher im Cluster
  • GPU_TYPE: GPU-Typ
  • MINIMUM_ACCELERATOR: die Mindestanzahl von -GPU-Beschleunigern im Cluster
  • MAXIMUM_ACCELERATOR: die maximale Anzahl von -GPU-Beschleunigern im Cluster

Im folgenden Beispiel werden die GPU-Limits für den GPU-Beschleunigertyp nvidia-tesla-k80 im Cluster dev-cluster festgelegt:

gcloud container clusters update dev-cluster \
    --enable-autoprovisioning \
    --max-cpu 10 \
    --max-memory 64 \
    --min-accelerator type=nvidia-tesla-k80,count=1 \
    --max-accelerator type=nvidia-tesla-k80,count=4

Datei

Wenn Sie eine Konfigurationsdatei verwenden, können Sie Limits für mehrere Grafikprozessortypen laden. Mit der folgenden YAML-Konfiguration werden zwei verschiedene GPU-Typen konfiguriert:

  resourceLimits:
    -resourceType: 'cpu'
     minimum: 4
     maximum: 10
    -resourceType: 'memory'
     maximum: 64
    -resourceType: 'nvidia-tesla-k80'
     maximum: 4
    -resourceType: 'nvidia-tesla-v100'
     maximum: 2

So verwenden Sie eine Konfigurationsdatei für die automatische Bereitstellung:

  1. Kopieren Sie die Konfiguration oben in eine Datei an einem Speicherort, auf den gcloud zugreifen kann. Bearbeiten Sie die Werte für cpu und memory. Fügen Sie beliebig viele Werte für resourceType hinzu. Speichern Sie die Datei.

  2. Wenden Sie die Konfiguration auf Ihren Cluster an, indem Sie den folgenden Befehl ausführen:

gcloud container clusters update CLUSTER_NAME \
    --enable-autoprovisioning \
    --autoprovisioning-config-file FILE_NAME

Dabei gilt:

  • CLUSTER_NAME ist der Name des Clusters.
  • FILE_NAME: der Name der Konfigurationsdatei

Weitere Informationen finden Sie in der Dokumentation zu gcloud container clusters update.

Console

Führen Sie die folgenden Schritte aus, um die automatische Knotenbereitstellung mit GPU-Ressourcen zu aktivieren:

  1. Rufen Sie in der Cloud Console das Kubernetes Engine-Menü auf.

Zum Google Kubernetes Engine-Menü

  1. Wählen Sie den gewünschten Cluster aus.
  2. Klicken Sie auf das Symbol Bearbeiten.
  3. Scrollen Sie nach unten zu Automatische Bereitstellung von Knoten und wählen Sie Aktiviert aus.
  4. Legen Sie die gewünschte minimale und maximale CPU- und Arbeitsspeicherauslastung für den Cluster fest.
  5. Klicken Sie auf Ressource hinzufügen.
  6. Wählen Sie den GPU-Typ aus, den Sie hinzufügen möchten, z. B. NVIDIA TESLA K80. Legen Sie die gewünschte Mindest- und Höchstzahl von GPUs fest, die dem Cluster hinzugefügt werden sollen.
  7. Akzeptieren Sie die Einschränkungen für GPUs in GKE.
  8. Klicken Sie auf Speichern. GKE aktualisiert Ihren Cluster.

Standorte für die automatische Bereitstellung von Knoten

Sie legen die Zonen fest, in denen über die automatische Knotenbereitstellung neue Knotenpools erstellt werden können. Regionale Standorte werden nicht unterstützt. Zonen müssen zu derselben Region wie der Cluster gehören, sind aber nicht auf Knotenstandorte beschränkt, die auf Clusterebene definiert sind. Eine Änderung der Standorte für die automatische Knotenbereitstellung hat keine Auswirkungen auf vorhandene Knotenpools.

Führen Sie den folgenden Befehl aus, um Standorte festzulegen, an denen durch die automatische Knotenbereitstellung neue Knotenpools erstellt werden können:

gcloud container clusters update CLUSTER_NAME \
    --enable-autoprovisioning --autoprovisioning-locations=ZONE

Dabei gilt:

  • CLUSTER_NAME ist der Name des Clusters.
  • ZONE: die Zone, in der durch die automatische Knotenbereitstellung neue Knotenpools erstellt werden können Wenn Sie mehrere Zonen angeben möchten, trennen Sie die Zonen durch ein Komma voneinander ab (z. B. ZONE1, ZONE2,...).

Automatische Knotenbereitstellung deaktivieren

Wenn Sie die automatische Knotenbereitstellung für einen Cluster deaktivieren, werden Knotenpools nicht mehr automatisch bereitgestellt.

gcloud

Führen Sie den folgenden Befehl aus, um die automatische Knotenbereitstellung für einen Cluster zu deaktivieren:

gcloud container clusters update CLUSTER_NAME \
  --no-enable-autoprovisioning

Ersetzen Sie CLUSTER_NAME durch den Namen Ihres Clusters.

Console

So deaktivieren Sie die automatische Knotenbereitstellung über die Google Cloud Console:

  1. Rufen Sie in der Cloud Console das Kubernetes Engine-Menü auf.

Zum Google Kubernetes Engine-Menü

  1. Wählen Sie den gewünschten Cluster aus.
  2. Klicken Sie auf das Symbol Bearbeiten.
  3. Scrollen Sie nach unten zu Automatische Bereitstellung von Knoten und wählen Sie Deaktiviert aus.

Knotenpool als automatisch bereitgestellt markieren

Nach dem Aktivieren der automatischen Knotenbereitstellung für den Cluster können Sie angeben, welche Knotenpools automatisch bereitgestellt werden sollen. Ein automatisch bereitgestellter Knotenpool wird automatisch gelöscht, wenn er von keinen Arbeitslasten verwendet wird.

Führen Sie den folgenden Befehl aus, um einen Knotenpool als automatisch bereitgestellt zu kennzeichnen:

gcloud container node-pools update NODE_POOL_NAME \
  --enable-autoprovisioning

Ersetzen Sie NODE_POOL_NAME durch den Namen des Knotenpools.

Knotenpool als nicht automatisch bereitgestellt markieren

Führen Sie den folgenden Befehl aus, um einen Knotenpool als nicht automatisch bereitgestellt zu kennzeichnen:

gcloud container node-pools update NODE_POOL_NAME \
  --no-enable-autoprovisioning

Ersetzen Sie NODE_POOL_NAME durch den Namen des Knotenpools.

Benutzerdefinierte Maschinenfamilie verwenden

Ab GKE 1.19.7-gke.800 können Sie für Ihre Arbeitslasten eine Maschinenfamilie auswählen. Dafür gibt es zwei Möglichkeiten:

  • Sie legen die Knotenaffinität mit dem Schlüssel von cloud.google.com/machine-family, mit dem Operator In und mit dem Wert für die gewünschte Maschinenfamilie (z. B. n2) fest.
  • Sie fügen nodeSelector mit dem Schlüssel von cloud.google.com/machine-family und mit dem Wert für die gewünschte Maschinenfamilie hinzu.

Im folgenden Beispiel wird für nodeAffinity die Maschinenfamilie n2 festgelegt:

spec:
  affinity:
    nodeAffinity:
      requiredDuringSchedulingIgnoredDuringExecution:
        nodeSelectorTerms:
        - matchExpressions:
          - key: cloud.google.com/machine-family
            operator: In
            values:
            - n2

Nach Anwendung der Änderungen wählt die automatische Knotenbereitstellung den besten Knotenpool mit einem Maschinentyp aus der angegebenen Maschinenfamilie aus. Wenn für den Übereinstimmungsausdruck mehrere Werte verwendet werden, wird ein Wert zufällig ausgewählt.

Nächste Schritte