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


In diesem Dokument wird erläutert, wie die Limits für das Anhängen nichtflüchtiger Volumes für nichtflüchtige Compute Engine-Speicher und Hyperdisks auf GKE-Knoten (Google Kubernetes Engine) 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 Speichern 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 Limits für das Anhängen an eine einzelne Instanz verwenden, können Sie ein Knotenlabel verwenden, um die Standardlimits für das Anhängen zu ü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 Trusted Cloud by S3NS -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 von Compute Engine (pd.csi.storage.gke.io) anfordern, wird ein Blockspeicher-Volume über den Dienst für nichtflüchtigen Speicher von Compute Engine Trusted Cloud 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-Scheduler Planungsentscheidungen, um zu verhindern, dass zu viele Pods, die persistente Volumes benötigen, auf einem Knoten geplant werden, der seine Kapazität für das Anhängen erreicht hat. Wenn der PDCSI-Treiber ungenaue Limits für das Anhängen 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. Dies kann bei Maschinentypen der dritten Generation wie C3 passieren, die unterschiedliche Beschränkungen für das Anhängen von Hyperdisks und Persistent Disks haben.

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

Bei Maschinengenerationen vor der vierten Generation legt der Compute Engine-PDCSI-Treiber ein aggregiertes Limit für das Anhängen nichtflüchtiger 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 bis 128 Persistent Volumes.
  • Im Gegensatz dazu meldet der PDCSI-Treiber für Maschinentypen der dritten Generation wie C3 ein Standard-Anhängelimit für Kubernetes als festes Limit von 128 Laufwerken. Dies kann zu einem Fehler bei der Pod-Planung führen, da das tatsächliche Limit je nach Anzahl der vCPUs niedriger als 128 sein 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 persistenten Volumes an Ihre Knoten anhängen möchten, können Sie das Standardlimit für das Anhängen persistenter 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 oder höher
  • 1.33.1-gke.1386000 oder 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 Anbringen von 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, die die neue Anzahl der nichtflüchtigen Volumes angibt, 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 persistenter Volumes. Das Standardlimit beträgt 128 für Maschinen der dritten Generation und einen auf der Anzahl der vCPUs basierenden 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 jeweiligen Knotenpools ist, in dem Sie das Override-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