Limits für das Anhängen nichtflüchtiger Volumes für GKE-Knoten

In diesem Dokument wird erläutert, wie die Grenzwerte für das Anhängen nichtflüchtiger Volumes für Compute Engine Persistent Disks und Hyperdisks auf Google Kubernetes Engine-Knoten (GKE) funktionieren. Für die richtige Planung von Arbeitslasten und die richtige Dimensionierung von Knotenpools ist es wichtig, dass Sie die maximale Anzahl von nichtflüchtigen Volumes kennen, die an einen GKE-Knoten angehängt werden können. Wenn Sie mehr Kontrolle über die Planung von Arbeitslasten haben möchten, insbesondere wenn Sie mehrere Festplattentypen mit unterschiedlichen Anhängelimits für eine einzelne Instanz verwenden, können Sie mit einem Knotenlabel die Standardanhängelimits überschreiben.

Dieses Dokument richtet sich an Speicherspezialisten, die Speicherplatz erstellen und zuweisen, sowie an GKE-Administratoren, die die Planung von Arbeitslasten und die Größe von Knotenpools verwalten. Weitere Informationen zu gängigen Rollen und Beispielaufgaben, auf die in Google Cloud Inhalten verwiesen wird, finden Sie unter Häufig verwendete GKE Enterprise-Nutzerrollen und -Aufgaben.

Übersicht

Wenn Sie in GKE ein PersistentVolume (PV) mit dem CSI-Treiber für nichtflüchtigen Speicher der Compute Engine (pd.csi.storage.gke.io) anfordern, wird ein Blockspeichervolume über den Google Cloud Persistent Disk-Dienst bereitgestellt.

Wenn Sie den CSI-Treiber für Persistent Disk von Compute Engine (PDCSI) in GKE-Clustern aktivieren, berechnet und meldet der PDCSI-Treiber das Limit für das Anhängen von Persistent Volumes pro Knoten an das kubelet. Anhand dieser Informationen trifft der Kubernetes-Planer Planungsentscheidungen, um zu verhindern, dass zu viele Pods, die nichtflüchtige Speicher benötigen, auf einem Knoten geplant werden, der seine Anhangskapazität erreicht hat. Wenn der PDCSI-Treiber ungenaue Anhängelimit gemeldet hat, insbesondere eine Zahl, die höher als das tatsächliche Limit ist, können die Pods nicht geplant werden und bleiben im Status Pending hängen. Das kann bei Maschinentypen der dritten Generation wie C3 passieren, die unterschiedliche Limits für das Anhängen von Hyperdisks und Persistent Disks haben.

Limits für das Anhängen nichtflüchtiger Volumes

Für Maschinengenerationen, die älter als die vierte sind, legt der Compute Engine-PDCSI-Treiber ein aggregiertes Limit für das Anhängen von nichtflüchtigen Volumes von 128 Laufwerken (127 Datenlaufwerke plus ein Bootlaufwerk) für alle Maschinentypen fest. Das Limit für das Anhängen gilt für Persistent Disk- und Hyperdisk-Volumes zusammen. Bei Hyperdisk wird das Limit für das Anhängen durch den zugrunde liegenden Compute Engine-Maschinentyp, die Anzahl der vCPUs der Maschine und den jeweiligen Hyperdisk-Typ bestimmt.

Beispiel:

  • Bei Maschinentypen der vierten Generation wie C4 meldet der PDCSI-Treiber ein Standardlimit für das Anhängen an Kubernetes, das anhand der vCPU-Anzahl des Knotens berechnet wird. Das gemeldete Limit für das Anhängen liegt in der Regel im Bereich von 8–128 nichtflüchtigen Volumes.
  • Bei Maschinentypen der dritten Generation wie C3 meldet der PDCSI-Treiber dagegen ein Standardlimit für das Anhängen an Kubernetes als festes Limit von 128 Laufwerken. Dies kann zu Fehlern bei der Pod-Planung führen, da das tatsächliche Limit je nach vCPU-Anzahl unter 128 liegen kann.

Sie können das Standardlimit für das Anhängen mit einem Knotenlabel überschreiben.

Weitere Informationen finden Sie in den folgenden hilfreichen Ressourcen in der Compute Engine-Dokumentation:

Standardlimit für das Anhängen nichtflüchtiger Volumes überschreiben

Wenn Sie bestimmte Anforderungen oder Knotenkonfigurationen haben, bei denen Sie eine bestimmte Anzahl von nichtflüchtigen Volumes an Ihre Knoten anhängen möchten, können Sie das Standardlimit für das Anhängen von nichtflüchtigen Volumes für einen Knotenpool mit dem folgenden Knotenlabel überschreiben: node-restriction.kubernetes.io/gke-volume-attach-limit-override: VALUE.

Sie können dieses Knotenlabel in den folgenden GKE-Versionen verwenden:

  • 1.32.4-gke.1698000 und höher.
  • 1.33.1-gke.1386000 und höher.

Neuer Knotenpool

Führen Sie den folgenden Befehl aus, um einen neuen Knotenpool mit einem bestimmten Limit für das Anhängen von nichtflüchtigen Volumes zu erstellen:

gcloud container node-pools create NODE_POOL_NAME \
    --cluster=CLUSTER_NAME \
    --node-labels=node-restriction.kubernetes.io/gke-volume-attach-limit-override=VALUE

Vorhandener Knotenpool

So ändern Sie das aktuelle Limit für das Anhängen von persistenten Volumes eines vorhandenen Knotenpools:

  1. Aktualisieren Sie das Limit für das Anhängen für den Knotenpool:

    gcloud container node-pools update NODE_POOL_NAME \
        --cluster=CLUSTER_NAME \
        --node-labels=node-restriction.kubernetes.io/gke-volume-attach-limit-override=VALUE
    
  2. Starten Sie das DaemonSet pdcsi-node neu:

    kubectl rollout restart ds pdcsi-node -n kube-system
    

    Das neue Limit für das Anhängen gilt, nachdem sich die pdcsi-node-Pods im Status Running befinden.

Ersetzen Sie Folgendes:

  • NODE_POOL_NAME: Der Name des Knotenpools, den Sie erstellen oder aktualisieren möchten.
  • CLUSTER_NAME: der Name des Clusters für den Knotenpool, den Sie erstellen oder aktualisieren möchten.
  • VALUE: Eine Ganzzahl zwischen 0 und 127, um die neue Anzahl der nichtflüchtigen Speicher anzugeben, die angehängt werden können. Wenn Sie einen Wert über 127 angeben, wird das Knotenlabel ignoriert und der PDCSI-Treiber verwendet stattdessen das Standardlimit für das Anhängen von nichtflüchtigen Volumes. Das Standardlimit ist 128 für Maschinen der dritten Generation und ein auf der Anzahl der vCPUs basierender Wert für Maschinen der vierten Generation.

Überschreibung überprüfen

Prüfen Sie die Knotenlabels und die Knotenkapazität, um festzustellen, ob die Überschreibung korrekt angewendet wurde.

Ersetzen Sie in den folgenden Befehlen NODE_NAME durch den Namen eines Knotens, der Teil des spezifischen Knotenpools ist, auf den Sie das Überschreibungs-Knotenlabel angewendet haben.

  1. Prüfen Sie die Knotenlabels:

    kubectl get node NODE_NAME --show-labels
    

    Die Ausgabe sollte das Label node-restriction.kubernetes.io/gke-volume-attach-limit-override enthalten.

  2. Prüfen Sie die Knotenkapazität:

    kubectl describe node NODE_NAME
    

    Die Ausgabe sollte die attachable-volumes-gce-pd-Kapazität enthalten, die mit dem Überschreibungswert übereinstimmen sollte, den Sie für den Knotenpool festgelegt haben. Weitere Informationen finden Sie unter Zuweisbare Ressourcen auf einem Knoten prüfen.

Nächste Schritte