Limiti di collegamento dei volumi permanenti per i nodi GKE

Questo documento ti aiuta a capire come funzionano i limiti di collegamento dei volumi permanenti per i dischi permanenti e gli Hyperdisk di Compute Engine sui nodi Google Kubernetes Engine (GKE). Per una corretta pianificazione dei workload e dimensionamento pool di nodi, è fondamentale comprendere il numero massimo di volumi permanenti che possono essere collegati a un nodo GKE. Se vuoi un maggiore controllo sulla pianificazione dei workload, soprattutto quando utilizzi più tipi di disco con limiti di collegamento diversi su una singola istanza, puoi utilizzare un'etichetta del nodo per eseguire l'override dei limiti di collegamento predefiniti.

Questo documento è destinato agli specialisti di Storage che creano e allocano spazio di archiviazione e agli amministratori GKE che gestiscono la pianificazione dei carichi di lavoro e il dimensionamento pool di nodi. Per scoprire di più sui ruoli comuni e sulle attività di esempio a cui viene fatto riferimento nei contenuti di Google Cloud , consulta Ruoli utente e attività comuni di GKE Enterprise.

Panoramica

In GKE, quando richiedi un PersistentVolume (PV) utilizzando il driver CSI per Compute Engine Persistent Disk (pd.csi.storage.gke.io), viene eseguito il provisioning di un volume di archiviazione a blocchi dal servizio Persistent Disk Google Cloud .

Quando abiliti il driver CSI per Persistent Disk di Compute Engine (PDCSI) sui cluster GKE, il driver PDCSI calcola e segnala al kubelet il limite di collegamento dei volumi permanenti per nodo. In base a queste informazioni, lo scheduler di Kubernetes prende decisioni di pianificazione per garantire che non vengano pianificati troppi pod che richiedono volumi permanenti su un nodo che ha raggiunto la sua capacità di collegamento. Se il driver PDCSI ha segnalato limiti di collegamento imprecisi, in particolare un numero superiore al limite effettivo, i pod non verranno pianificati e rimarranno bloccati in uno stato Pending. Questo può accadere con i tipi di macchine di terza generazione, come C3, che hanno limiti di collegamento diversi per Hyperdisk e Persistent Disk.

Informazioni sui limiti di collegamento dei volumi permanenti

Per le generazioni di macchine precedenti alla quarta, il driver PDCSI di Compute Engine imposta un limite di collegamento del volume permanente aggregato di 128 dischi (127 dischi dati più un disco di avvio) per tutti i tipi di macchina. Il limite di collegamento si applica sia ai volumi Persistent Disk che a quelli Hyperdisk combinati. Per Hyperdisk, il limite di collegamento è determinato dal tipo di macchina Compute Engine sottostante, dal numero di vCPU della macchina e dal tipo specifico di Hyperdisk.

Ad esempio:

  • Per i tipi di macchina di quarta generazione come C4, il driver PDCSI segnala con precisione un limite di collegamento predefinito a Kubernetes calcolato in base al numero di vCPU del nodo. Il limite di allegati segnalato in genere rientra in un intervallo di 8-128 volumi permanenti.
  • Al contrario, per i tipi di macchine di terza generazione come C3, il driver PDCSI segnala un limite di collegamento predefinito a Kubernetes come limite fisso di 128 dischi, il che può portare a un errore di pianificazione dei pod perché il limite effettivo può essere inferiore a 128 in base al numero di vCPU.

Puoi ignorare il limite di allegati predefinito utilizzando un'etichetta del nodo.

Consulta le seguenti risorse utili nella documentazione di Compute Engine:

Esegui l'override del limite di collegamento dei volumi permanenti predefinito

Se hai requisiti o configurazioni dei nodi specifici in cui vuoi collegare un numero specifico di volumi permanenti ai nodi, puoi eseguire l'override del limite predefinito di collegamento dei volumi permanenti per un pool di nodi utilizzando l'etichetta del nodo seguente: node-restriction.kubernetes.io/gke-volume-attach-limit-override: VALUE.

Puoi utilizzare questa etichetta del nodo nelle seguenti versioni di GKE:

  • 1.32.4-gke.1698000 e versioni successive.
  • 1.33.1-gke.1386000 e versioni successive.

Nuovo node pool

Per creare un nuovo pool di nodi con un limite di collegamento del volume permanente specifico, esegui questo comando:

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

Pool di nodi esistente

Per modificare il limite attuale di collegamento del volume permanente di un pool di nodi esistente:

  1. Aggiorna il limite di collegamento nel pool di nodi:

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

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

    Il nuovo limite di collegamento viene applicato dopo che i pod pdcsi-node sono in stato Running.

Sostituisci quanto segue:

  • NODE_POOL_NAME: il nome del pool di nodi che vuoi creare o aggiornare.
  • CLUSTER_NAME: il nome del cluster per il pool di nodi che vuoi creare o aggiornare.
  • VALUE: un numero intero compreso tra 0 e 127 per specificare il nuovo numero di volumi permanenti che possono essere collegati. Se specifichi un valore superiore a 127, l'etichetta del nodo viene ignorata e il driver PDCSI utilizza il limite predefinito di collegamento dei volumi permanenti. Il limite predefinito è 128 per le macchine di terza generazione e un valore basato sul conteggio delle vCPU per le macchine di quarta generazione.

Verifica l'override

Per verificare se l'override è stato applicato correttamente, controlla le etichette dei nodi e la capacità dei nodi.

Nei comandi seguenti, sostituisci NODE_NAME con il nome di un nodo che fa parte del pool di nodi specifico in cui hai applicato l'etichetta del nodo di override.

  1. Controlla le etichette dei nodi:

    kubectl get node NODE_NAME --show-labels
    

    L'output deve includere l'etichetta node-restriction.kubernetes.io/gke-volume-attach-limit-override.

  2. Controlla la capacità del nodo:

    kubectl describe node NODE_NAME
    

    L'output dovrebbe includere la capacità attachable-volumes-gce-pd, che dovrebbe corrispondere al valore di override impostato per il pool di nodi. Per saperne di più, consulta Controllare le risorse allocabili su un nodo.

Passaggi successivi