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 di Compute Engine e gli hyperdisk sui nodi Google Kubernetes Engine (GKE). Per una corretta pianificazione del carico di lavoro e dimensionamento del 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 dischi con limiti di collegamento diversi su una singola istanza, puoi utilizzare un'etichetta del nodo per ignorare i limiti di collegamento predefiniti.

Questo documento è destinato agli specialisti di archiviazione che creano e allocano spazio di archiviazione e agli amministratori GKE che gestiscono la pianificazione dei workload 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 Trusted Cloud by S3NS , consulta Ruoli utente e attività comuni di GKE Enterprise.

Panoramica

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

Quando abiliti il driver CSI per il disco permanente di Compute Engine (PDCSI) sui cluster GKE, il driver PDCSI calcola e segnala il limite di collegamento del volume permanente per nodo a kubelet. In base a queste informazioni, lo scheduler Kubernetes prende decisioni di pianificazione per garantire di non pianificare troppi pod che richiedono volumi permanenti su un nodo che ha raggiunto la capacità di collegamento. Se il driver PDCSI ha segnalato limiti di collegamento imprecisi, in particolare un numero superiore al limite effettivo, la pianificazione dei pod non andrà a buon fine e questi rimarranno bloccati nello stato Pending. Ciò può verificarsi su 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 di dati più un disco di avvio) per tutti i tipi di macchine. Il limite di collegamento si applica alla combinazione di volumi Persistent Disk e Hyperdisk. 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 macchine 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 rientra in genere in un intervallo di 8-128 volumi permanenti.
  • Al contrario, per i tipi di macchina 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ò causare un errore di pianificazione dei pod perché il limite effettivo può essere inferiore a 128 in base al conteggio delle vCPU.

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

Consulta le seguenti risorse utili nella documentazione di Compute Engine:

Eseguire l'override del limite di collegamento del volume permanente 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 di collegamento del volume permanente corrente di un pool di nodi esistente:

  1. Aggiorna il limite di collegamento sul 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 allegati si applica dopo che i pdcsi-node Pod si trovano nello 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 invece il limite predefinito di collegamento del volume persistente. 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 deve includere la capacità attachable-volumes-gce-pd, che deve corrispondere al valore di override impostato per il pool di nodi. Per ulteriori informazioni, consulta Controllare le risorse allocabili su un nodo.

Passaggi successivi