Utilizzare il provisioning automatico dei nodi


Questa pagina spiega come abilitare e configurare il provisioning automatico dei nodi nei cluster Google Kubernetes Engine (GKE) Standard. Utilizzando esempi, questa pagina mostra come utilizzare i file di configurazione YAML per configurare impostazioni avanzate come limiti delle risorse, riparazione automatica e upgrade automatico e per impostare alcuni valori predefiniti per il provisioning automatico.

Imparerai anche a:

  • Migliora la sicurezza del cluster utilizzando le chiavi di crittografia gestite dal cliente (CMEK) e configurando l'integrità dei nodi.
  • Ottimizza l'utilizzo delle risorse e riduci al minimo le interruzioni specificando strategie di upgrade surge o blue-green e separando i pod gestiti da GKE dai workload utente.
  • Migliora le prestazioni utilizzando acceleratori, come GPU o TPU, con il provisioning automatico.

Questa pagina è destinata a operatori, architetti cloud, sviluppatori e ingegneri di rete che eseguono il provisioning e la configurazione delle risorse cloud ed eseguono il deployment dei carichi di lavoro sui cluster GKE. 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.

Prima di leggere questa pagina, assicurati di avere familiarità con quanto segue:

Prima di iniziare

Prima di iniziare, assicurati di aver eseguito le seguenti operazioni:

  • Attiva l'API Google Kubernetes Engine.
  • Attiva l'API Google Kubernetes Engine
  • Se vuoi utilizzare Google Cloud CLI per questa attività, installala e poi inizializza gcloud CLI. Se hai già installato gcloud CLI, scarica l'ultima versione eseguendo gcloud components update.
  • Assicurati di avere un cluster standard esistente. Per abilitare il provisioning automatico sui cluster che eseguono VM TPU, assicurati che il cluster GKE esegua una delle seguenti versioni:

    • Versione 1.27.6 e successive o 1.28 e successive, per Cloud TPU v4 e v5e.
    • Versioni 1.28.7-gke.1020000 o successive e 1.29.2-gke.1035000 o successive per Cloud TPU v5p.
    • Versione 1.31.1-gke.1146000 o successive per Cloud TPU Trillium.

    Per creare un cluster standard, consulta Crea un cluster regionale.

Limitazioni

Il provisioning automatico dei nodi presenta le seguenti limitazioni delle risorse:

  • Devi pianificare con attenzione l'intervallo di indirizzi IP dei nodi. Puoi espandere l'intervallo di indirizzi IP dei nodi dopo aver creato un cluster. Tuttavia, ti consigliamo di non espandere l'intervallo di indirizzi IP dei nodi dopo aver creato il cluster, in quanto devi aggiornare le regole firewall in modo che includano il nuovo intervallo come origine. Puoi espandere l'intervallo di indirizzi IP dei pod utilizzando il CIDR multi-pod discontinuo con il provisioning automatico dei nodi.

  • Quando definisci gli intervalli massimi di CPU e memoria, i limiti vengono calcolati per l'intero cluster GKE, non per nodo o perpool di nodil. Il provisioning automatico dei nodi controlla questi limiti considerando la somma delle risorse dei pool di nodi esistenti creati manualmente, di tutti i pool di nodi con provisioning automatico attivi e di tutti i nuovi nodi potenziali che il provisioning automatico dei nodi potrebbe creare. Se il provisioning di un nuovo nodo causerebbe il superamento di uno di questi massimi specificati per l'utilizzo totale delle risorse del cluster, il provisioning automatico dei nodi non crea il nuovo nodo. Questo scenario può comportare la mancata pianificazione dei pod se richiedono risorse che superano i valori massimi definiti.

Abilita provisioning automatico dei nodi

Puoi attivare il provisioning automatico dei nodi su un cluster con gcloud CLI o la consoleGoogle Cloud .

gcloud

Per abilitare il provisioning automatico dei nodi, esegui questo comando:

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

Sostituisci quanto segue:

  • CLUSTER_NAME: il nome del cluster per attivare il provisioning automatico dei nodi.
  • MINIMUM_CPU: il numero minimo di core nel cluster.
  • MINIMUM_MEMORY: il numero minimo di gigabyte di memoria nel cluster.
  • MAXIMUM_CPU: il numero massimo di core nel cluster. Questo limite somma le risorse CPU in tutti i pool di nodi esistenti creati manualmente e in tutti i potenziali pool di nodi creati dal provisioning automatico dei nodi.
  • MAXIMUM_MEMORY: il numero massimo di gigabyte di memoria nel cluster. Questo limite somma le risorse di memoria in tutti i pool di nodi esistenti creati manualmente e in tutti i potenziali pool di nodi creati dal provisioning automatico dei nodi.

Il seguente esempio attiva il provisioning automatico dei nodi su dev-cluster e consente la scalabilità tra una dimensione totale del cluster di 1 CPU e 1 gigabyte di memoria e un massimo di 10 CPU e 64 gigabyte di memoria:

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

Console

Per abilitare il provisioning automatico dei nodi, segui questi passaggi:

  1. Vai alla pagina Google Kubernetes Engine nella console Google Cloud .

    Vai a Google Kubernetes Engine

  2. Fai clic sul nome del cluster.

  3. Nella sezione Automazione, in Provisioning automatico dei nodi, fai clic su Modifica.

  4. Seleziona la casella di controllo Abilita provisioning automatico dei nodi.

  5. Imposta l'utilizzo minimo e massimo di CPU e memoria per il cluster.

  6. Fai clic su Salva modifiche.

Utilizzo di un file di configurazione del provisioning automatico

Il provisioning automatico dei nodi può essere configurato utilizzando un file di configurazione YAML. Il file di configurazione può contenere una sola riga se viene utilizzato per modificare una singola impostazione. È possibile specificare più impostazioni in un unico file di configurazione. In questo caso, tutte queste impostazioni verranno modificate quando viene applicato il file di configurazione.

Alcune configurazioni avanzate possono essere specificate solo utilizzando un file di configurazione.

Esempio 1: L'applicazione del seguente file di configurazione abilita la riparazione automatica dei nodi e l'upgrade automatico per tutti i nuovi pool di nodi creati dal provisioning automatico dei nodi:

management:
  autoRepair: true
  autoUpgrade: true

Esempio 2: L'applicazione del seguente file di configurazione modificherebbe le seguenti impostazioni:

resourceLimits:
  - resourceType: 'cpu'
    minimum: 4
    maximum: 10
  - resourceType: 'memory'
    maximum: 64
  - resourceType: 'nvidia-tesla-t4'
    maximum: 4
management:
  autoRepair: true
  autoUpgrade: true
shieldedInstanceConfig:
  enableSecureBoot: true
  enableIntegrityMonitoring: true
diskSizeGb: 100

Per utilizzare un file di configurazione del provisioning automatico:

  1. Crea un file con la configurazione desiderata in una posizione in cui gcloud CLI può accedervi.

  2. Applica la configurazione al cluster eseguendo il seguente comando:

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

    Sostituisci quanto segue:

    • CLUSTER_NAME: il nome del cluster.
    • FILE_NAME: il nome del file di configurazione.

    Per saperne di più, consulta la documentazione gcloud container clusters update.

Impostazioni predefinite del provisioning automatico

Il provisioning automatico dei nodi esamina i requisiti dei pod nel cluster per determinare il tipo di nodi più adatto. Tuttavia, alcune impostazioni pool di nodi non sono specificate direttamente dai pod (ad esempio le impostazioni relative agli upgrade dei nodi). Puoi impostare valori predefiniti per queste impostazioni, che verranno applicati a tutti i node pool appena creati.

Impostazione del tipo di immagine del nodo predefinito

Puoi specificare il tipo di immagine del nodo da utilizzare per tutti i nuovi pool di nodi con provisioning automatico utilizzando gcloud CLI o un file di configurazione. Questa impostazione è disponibile solo per la versione del cluster GKE 1.20.6-gke.1800 e successive.

gcloud

Per impostare il tipo di immagine nodo predefinito, esegui questo comando:

gcloud container clusters update CLUSTER_NAME \
  --enable-autoprovisioning \
  --autoprovisioning-image-type IMAGE_TYPE

Sostituisci quanto segue:

  • CLUSTER_NAME: il nome del cluster.
  • IMAGE_TYPE: il tipo di immagine del nodo, che può essere uno dei seguenti:

    • cos_containerd: Container-Optimized OS con containerd.
    • ubuntu_containerd: Ubuntu con containerd.

YAML

Per tutti i nuovi pool di nodi di cui è stato eseguito il provisioning automatico, puoi specificare il tipo di immagine del nodo da utilizzare utilizzando un file di configurazione. La seguente configurazione YAML specifica che per i nuovi node pool di cui è stato eseguito il provisioning automatico, il tipo di immagine è cos_containerd e presenta limiti di risorse associati per CPU e memoria. Per attivare il provisioning automatico, devi specificare i valori massimi per CPU e memoria.

  1. Salva la configurazione YAML:

    resourceLimits:
      - resourceType: 'cpu'
        minimum: 4
        maximum: 10
      - resourceType: 'memory'
        maximum: 64
    imageType: 'cos_containerd'
    
  2. Applica la configurazione:

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

    Sostituisci quanto segue:

    • CLUSTER_NAME: il nome del cluster.
    • FILE_NAME: il nome del file di configurazione.

Impostazione dei valori predefiniti dell'identità per i pool di nodi di cui è stato eseguito il provisioning automatico

Le autorizzazioni per le risorse Google Cloud sono fornite dalle identità.

Puoi specificare l'identità predefinita (un account di servizio o uno o più ambiti) per i nuovi node pool di cui è stato eseguito il provisioning automatico utilizzando gcloud CLI o tramite un file di configurazione.

gcloud

Per specificare l'account di servizio IAM predefinito utilizzato dal provisioning automatico dei nodi, esegui questo comando:

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

Sostituisci quanto segue:

  • CLUSTER_NAME: il nome del cluster.
  • SERVICE_ACCOUNT: il nome del service account predefinito.

L'esempio seguente imposta test-service-account@google.com come account di servizio predefinito sul cluster dev-cluster:

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

Per specificare gli ambiti predefiniti utilizzati dal provisioning automatico dei nodi, esegui il seguente comando:

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

Sostituisci quanto segue:

  • CLUSTER_NAME: il nome del cluster.
  • SCOPE: gli ambiti Google Cloud utilizzati dai pool di nodi di cui è stato eseguito il provisioning automatico. Per specificare più ambiti, separali con una virgola (ad esempio, SCOPE1, SCOPE2,...).

L'esempio seguente imposta l'ambito predefinito sul cluster dev-cluster su devstorage.read_only:

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

YAML

Puoi specificare l'identità predefinita utilizzata dal provisioning automatico dei nodi utilizzando un file di configurazione. La seguente configurazione YAML imposta il account di servizio IAM:

  serviceAccount: SERVICE_ACCOUNT

Sostituisci SERVICE_ACCOUNT con il nome del account di servizio predefinito.

In alternativa, puoi utilizzare la seguente configurazione YAML per specificare gli ambiti predefiniti utilizzati dal provisioning automatico dei nodi:

  scopes: SCOPE

Sostituisci SCOPE con l'ambito Google Cloud utilizzato dai pool di nodi di cui è stato eseguito il provisioning automatico. Per specificare più ambiti, separali con una virgola (ad esempio, SCOPE1, SCOPE2,...).

Per utilizzare un file di configurazione del provisioning automatico:

  1. Crea un file di configurazione che specifichi i valori predefiniti dell'identità in una posizione in cui gcloud CLI possa accedervi.

  2. Applica la configurazione al cluster eseguendo il seguente comando:

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

Sostituisci quanto segue:

  • CLUSTER_NAME: il nome del cluster.
  • FILE_NAME: il nome del file di configurazione.

Chiavi di crittografia gestite dal cliente (CMEK)

Puoi specificare le chiavi di crittografia gestite dal cliente (CMEK) utilizzate dai nuovi node pool di cui viene eseguito il provisioning automatico.

Puoi abilitare la crittografia gestita dal cliente per i dischi di avvio utilizzando un file di configurazione. La seguente configurazione YAML imposta la chiave CMEK:

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

Sostituisci quanto segue:

  • KEY_PROJECT_ID: il tuo ID progetto chiave.
  • LOCATION: la posizione delle chiavi automatizzate.
  • KEY_RING: il nome del tuo keyring.
  • KEY_NAME: il nome della chiave.

Per utilizzare un file di configurazione del provisioning automatico:

  1. Crea un file di configurazione che specifichi una chiave CMEK in una posizione in cui la gcloud CLI possa accedervi.

  2. Applica la configurazione al cluster eseguendo il seguente comando:

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

    Sostituisci quanto segue:

    • CLUSTER_NAME: il nome del cluster.
    • FILE_NAME: il nome del file di configurazione.

Integrità del nodo

Il provisioning automatico dei nodi supporta la creazione di node pool con avvio protetto e monitoraggio dell'integrità abilitati.

Puoi attivare l'avvio protetto e il monitoraggio dell'integrità utilizzando un file di configurazione. La seguente configurazione YAML attiva l'avvio protetto e disattiva il monitoraggio dell'integrità:

  shieldedInstanceConfig:
    enableSecureBoot: true
    enableIntegrityMonitoring: false

Per utilizzare un file di configurazione del provisioning automatico:

  1. Copia la configurazione precedente in un file in una posizione in cui gcloud CLI può accedervi. Modifica i valori per enableSecureBoot e enableIntegrityMonitoring. Salva il file.

  2. Applica la configurazione al cluster eseguendo il seguente comando:

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

    Sostituisci quanto segue:

    • CLUSTER_NAME: il nome del cluster.
    • FILE_NAME: il nome del file di configurazione.

Riparazione automatica e upgrade automatico dei nodi

Il provisioning automatico dei nodi supporta la creazione di node pool con riparazione automatica dei nodi e upgrade automatico dei nodi abilitati.

gcloud

Per abilitare la riparazione e l'upgrade automatici per tutti i nuovi pool di nodi di cui è stato eseguito il provisioning automatico, esegui questo comando:

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

Sostituisci CLUSTER_NAME con il nome del cluster.

Per disattivare la riparazione automatica e l'upgrade automatico per tutti i nuovi pool di nodi con provisioning automatico, esegui questo comando:

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

Sostituisci CLUSTER_NAME con il nome del cluster.

YAML

Puoi attivare o disattivare la riparazione automatica e l'upgrade automatico dei nodi utilizzando un file di configurazione. La seguente configurazione YAML attiva la riparazione automatica e disattiva l'upgrade automatico:

  management:
    autoRepair: true
    autoUpgrade: false

Per utilizzare un file di configurazione del provisioning automatico:

  1. Copia la configurazione precedente in un file in una posizione in cui gcloud CLI può accedervi. Modifica i valori per autoUpgrade e autoRepair. Salva il file.

  2. Applica la configurazione al cluster eseguendo il seguente comando:

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

Sostituisci quanto segue:

  • CLUSTER_NAME: il nome del cluster.
  • FILE_NAME: il nome del file di configurazione.

Utilizza gli upgrade di sovraccarico per i nuovi node pool di cui è stato eseguito il provisioning automatico

Puoi specificare le impostazioni di upgrade controllato su tutti i nuovi pool di nodi di cui è stato eseguito il provisioning automatico utilizzando gcloud CLI o un file di configurazione. Per impostazione predefinita, GKE imposta la strategia di upgrade dei nodi sugli upgrade inattivi.

gcloud

Per specificare le impostazioni di upgrade controllato per tutti i nuovi node pool di cui è stato eseguito il provisioning automatico, esegui questo comando:

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

Sostituisci quanto segue:

  • CLUSTER_NAME: il nome del cluster.
  • MAX_SURGE: il numero massimo di nodi che possono essere aggiunti al pool di nodi durante gli upgrade.
  • MAX_UNAVAILABLE: il numero massimo di nodi nel pool di nodi che possono non essere disponibili contemporaneamente durante gli upgrade.

YAML

Puoi specificare le impostazioni di upgrade inattivo per tutti i nuovi pool di nodi di cui è stato eseguito il provisioning automatico utilizzando un file di configurazione come il seguente:

  upgradeSettings:
    maxSurgeUpgrade: 1
    maxUnavailableUpgrade: 2

Per utilizzare un file di configurazione del provisioning automatico:

  1. Copia la configurazione precedente in un file in una posizione a cui gcloud può accedere. Modifica i valori per maxSurgeUpgrade e maxUnavailableUpgrade. Salva il file.

  2. Applica la configurazione al cluster eseguendo il seguente comando:

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

Sostituisci quanto segue:

  • CLUSTER_NAME: il nome del cluster.
  • FILE_NAME: il nome del file di configurazione.

Per saperne di più, consulta la documentazione gcloud container clusters update.

Per tornare a utilizzare gli upgrade inattivi per i nuovi node pool di cui è stato eseguito il provisioning automatico, esegui questo comando:

gcloud container clusters update CLUSTER_NAME \
  --enable-autoprovisioning \
  --enable-autoprovisioning-surge-upgrade

Sostituisci CLUSTER_NAME con il nome del cluster.

Se vuoi, puoi includere i flag per impostazioni specifiche come nei comandi precedenti. GKE riutilizza la configurazione precedente per la strategia di upgrade, se è stata impostata.

Utilizza gli upgrade blu/verde per i nuovi node pool di cui è stato eseguito il provisioning automatico

Puoi utilizzare gli upgrade blue-green per tutti i nuovi node pool di cui è stato eseguito il provisioning automatico utilizzando gcloud CLI. Con gli upgrade blu/verde, puoi utilizzare le impostazioni predefinite o ottimizzarle per il tuo ambiente. Per saperne di più sugli upgrade blu/verde, consulta Upgrade blu/verde.

Per aggiornare la strategia di upgrade dei nodi per qualsiasi pool di nodi di cui è stato eseguito il provisioning automatico, consulta Attivare o disattivare l'upgrade inattivo per un node pool esistente e Aggiornamento di una strategia di upgrade blue-green di un pool di nodi esistente.

Le seguenti variabili vengono utilizzate nei comandi elencati di seguito:

  • CLUSTER_NAME: il nome del cluster per il node pool.
  • COMPUTE_ZONE: la zona del cluster.
  • NODE_POOL_NAME: il nome del pool di nodi.
  • NUMBER_NODES: il numero di nodi nel pool di nodi in ciascuna delle zone del cluster.
  • BATCH_NODE_COUNT: il numero di nodi blu da svuotare in un batch durante la fase di svuotamento del pool blu. Il valore predefinito è 1. Se il valore è impostato su zero, la fase di svuotamento del pool blu verrà ignorata.
  • BATCH_PERCENT: la percentuale di nodi blu da svuotare in un batch durante la fase di svuotamento del pool blu. Deve essere compreso nell'intervallo [0.0, 1.0].
  • BATCH_SOAK_DURATION: la durata in secondi di attesa dopo lo svuotamento di ogni batch. Il valore predefinito è zero.
  • NODE_POOL_SOAK_DURATION: la durata in secondi di attesa dopo aver completato lo svuotamento di tutti i batch. Il valore predefinito è 3600 secondi.

Le impostazioni predefinite per gli upgrade blu/verde sono:

  • BATCH_NODE_COUNT = 1
  • BATCH_SOAK_DURATION = 0 secondi
  • NODE_POOL_SOAK_DURATION = 3600 secondi (1 ora)

Aggiorna un cluster in modo che utilizzi gli upgrade blu/verde per i nuovi node pool di cui è stato eseguito il provisioning automatico

I seguenti comandi utilizzano gcloud container clusters update per aggiornare la strategia di upgrade dei nodi per i nuovi node pool di cui è stato eseguito il provisioning automatico.

Puoi utilizzare questi flag anche quando:

Per aggiornare un cluster in modo che utilizzi gli upgrade blue-green con le impostazioni predefinite per i nuovi node pool con provisioning automatico, utilizza questo comando:

gcloud container clusters update CLUSTER_NAME \
  --enable-autoprovisioning \
  --enable-autoprovisioning-blue-green-upgrade

Puoi aggiornare un cluster in modo che utilizzi gli upgrade blue-green con impostazioni specifiche per i nuovi pool di nodi di cui viene eseguito il provisioning automatico. Questi comandi possono essere utilizzati anche senza il flag --enable-autoprovisioning-blue-green-upgrade per aggiornare le impostazioni.

Il seguente comando utilizza BATCH_NODE_COUNT per impostare una dimensione batch di conteggio dei nodi assoluto:

gcloud container clusters update CLUSTER_NAME \
  --enable-autoprovisioning \
  --enable-autoprovisioning-blue-green-upgrade \
  --autoprovisioning-node-pool-soak-duration=NODE_POOL_SOAK_DURATION \
  --autoprovisioning-standard-rollout-policy=batch-node-count=BATCH_NODE_COUNT,batch-soak-duration=BATCH_SOAK_DURATION

Puoi anche utilizzare BATCH_PERCENT per impostare una dimensione batch basata sulla percentuale, sostituendo batch-node-count nell'ultimo comando con batch-percent e utilizzando un decimale compreso tra 0 e 1 (ad es. il 25% è 0.25). Per scoprire come vengono impostate le dimensioni batch basate sulla percentuale, consulta Aggiornare un pool di nodi con l'upgrade blu/verde utilizzando dimensioni batch basate sulla percentuale.

Dischi di avvio personalizzati

Il provisioning automatico dei nodi supporta la creazione di pool di nodi con dischi di avvio personalizzati.

Puoi personalizzare l'impostazione del disco di avvio utilizzando un file di configurazione. GKE riserva una parte del disco di avvio del nodo per le funzioni di kubelet. Per saperne di più, consulta Spazio di archiviazione temporaneo supportato dal disco di avvio del nodo.

La seguente configurazione YAML fa sì che il provisioning automatico dei nodi crei pool di nodi con dischi SSD da 100 GB:

  diskSizeGb: 100
  diskType: pd-ssd

Specifica quanto segue:

  • diskSizeGb: le dimensioni del disco, specificate in GB.
  • diskType: il tipo di disco, che può essere uno dei seguenti valori:
    • pd-balanced (valore predefinito)
    • pd-standard
    • pd-ssd. In GKE versione 1.22 e precedenti, se specifichi pd-ssd, il provisioning automatico dei nodi prende in considerazione solo i tipi di macchine N1 durante la creazione dei node pool.

Per utilizzare un file di configurazione del provisioning automatico:

  1. Crea un file con la configurazione del disco di avvio desiderata in una posizione in cui gcloud CLI può accedervi.

  2. Applica la configurazione al cluster eseguendo il seguente comando:

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

    Sostituisci quanto segue:

    • CLUSTER_NAME: il nome del cluster.
    • FILE_NAME: il nome del file di configurazione.

Separa i pod gestiti da GKE dai tuoi workload

In qualità di amministratore del cluster, potresti voler separare i pod gestiti da GKE dai tuoi carichi di lavoro. Questa separazione consente di evitare problemi di riduzione delle dimensioni se nel cluster sono presenti nodi sottoutilizzati che eseguono pod di sistema.

L'esempio seguente mostra come separare i pod gestiti dai tuoi workload utilizzando una combinazione di provisioning automatico dei nodi e taint e tolleranze di Kubernetes.

  1. Crea un pool di nodi di VM e2-standard-2 e applica un taint del nodo che consente l'esecuzione dei workload di sistema GKE solo su questi nodi:

    gcloud container node-pools create NODE_POOL_NAME \
        --cluster=CLUSTER_NAME \
        --machine-type=e2-standard-2 \
        --node-taints=components.gke.io/gke-managed-components=true:NoSchedule
    

    Sostituisci quanto segue:

    • NODE_POOL_NAME: il nome che scegli per il tuo pool di nodi.
    • CLUSTER_NAME: il nome del cluster.
  2. Abilita il provisioning automatico dei nodi per il cluster:

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

    Il cluster può scalare tra una dimensione totale del cluster di 1 CPU e 1 gigabyte di memoria e un massimo di 10 CPU e 64 gigabyte di memoria.

  3. Testa questa configurazione salvando il seguente manifest di esempio come nginx.yaml:

    apiVersion: v1
    kind: Pod
    metadata:
      name: nginx
      labels:
        env: test
    spec:
      containers:
      - name: nginx
        image: nginx
        imagePullPolicy: IfNotPresent
      tolerations:
      - key: dedicated
        operator: Equal
        value: ui-team
        effect: NoSchedule
      nodeSelector:
        dedicated: ui-team
    

    Questo manifest esegue il deployment di un pod di carico di lavoro di test nel cluster con un'etichetta nodeSelector e una taint del nodo dedicated: ui-team. Senza il provisioning automatico dei nodi, questo pod del carico di lavoro non può essere pianificato perché nessunpool di nodil ha l'etichetta e le incompatibilità corrette.

  4. Applica il manifest al cluster:

    kubectl apply -f nginx.yaml
    

    L'output è simile al seguente:

    pod/nginx created
    
  5. Visualizza il nuovo pool di nodi che corrisponde all'etichetta ui-team:

    kubectl get node --selector=dedicated=ui-team
    

    L'output è simile al seguente:

    NAME                                            STATUS   ROLES    AGE   VERSION
    gke-test-nap-e2-medium-14b723z1-19f89fa8-jmhr   Ready    <none>   14s   v1.21.11-gke.900
    

Il cluster separa i workload dai pod GKE gestiti.

Limita il tempo di esecuzione dei nodi di cui è stato eseguito il provisioning automatico

In GKE versione 1.31.2-gke.1518000 e successive, puoi limitare il tempo di esecuzione dei nodi di cui è stato eseguito il provisioning automatico utilizzando il selettore di nodi cloud.google.com/gke-max-run-duration-seconds. Aggiungi il seguente campo al manifest:

spec:
  nodeSelector:
    cloud.google.com/gke-max-run-duration-seconds: "MAX_RUN_DURATION"

Sostituisci MAX_RUN_DURATION con la durata in secondi per cui vuoi che il nodo di cui è stato eseguito il provisioning automatico venga eseguito prima di essere terminato automaticamente. Per informazioni sulle limitazioni, vedi Limitazioni MaxRunDuration.

Utilizza gli acceleratori per i nuovi pool di nodi di cui è stato eseguito il provisioning automatico

Puoi abilitare il provisioning automatico dei nodi e configurare GKE per eseguire automaticamente il provisioning degli acceleratori GPU o Cloud TPU per garantire la capacità necessaria per pianificare i carichi di lavoro AI/ML.

Configurazione dei limiti di GPU

Quando utilizzi il provisioning automatico dei nodi con le GPU, devi impostare il limite massimo per ogni tipo di GPU nel cluster utilizzando gcloud CLI o la consoleGoogle Cloud . Il conteggio del limite di GPU è il numero massimo di GPU. Ad esempio, una VM con 16 GPU viene conteggiata come 16 e non come 1 ai fini di questo limite. Per configurare più tipi di GPU, devi utilizzare un file di configurazione.

Per elencare i tipi di risorse disponibili, esegui gcloud compute accelerator-types list.

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

Sostituisci quanto segue:

  • CLUSTER_NAME: il nome del cluster.
  • MAXIMUM_CPU: il numero massimo di core nel cluster.
  • MAXIMUM_MEMORY: il numero massimo di gigabyte di memoria nel cluster.
  • GPU_TYPE: il tipo di GPU.
  • MINIMUM_ACCELERATOR: il numero minimo di acceleratori GPU nel cluster.
  • MAXIMUM_ACCELERATOR: il numero massimo di acceleratori GPU nel cluster.

L'esempio seguente imposta i limiti della GPU per il tipo di acceleratore GPU nvidia-tesla-t4 nel cluster dev-cluster:

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

YAML

Puoi caricare i limiti per più tipi di GPU utilizzando un file di configurazione. La seguente configurazione YAML configura due diversi tipi di GPU:

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

Per utilizzare un file di configurazione del provisioning automatico:

  1. Copia la configurazione precedente in un file in una posizione in cui gcloud CLI può accedervi. Modifica i valori per cpu e memory. Aggiungi tutti i valori per resourceType che ti servono. Salva il file.

  2. Applica la configurazione al cluster eseguendo il seguente comando:

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

Sostituisci quanto segue:

  • CLUSTER_NAME: il nome del cluster.
  • FILE_NAME: il nome del file di configurazione.

Per saperne di più, consulta la documentazione gcloud container clusters update.

Console

Per abilitare il provisioning automatico dei nodi con risorse GPU, segui questi passaggi:

  1. Vai alla pagina Google Kubernetes Engine nella console Google Cloud .

    Vai a Google Kubernetes Engine

  2. Fai clic sul nome del cluster.

  3. Nella sezione Automazione, in Provisioning automatico dei nodi, fai clic su Modifica.

  4. Seleziona la casella di controllo Abilita provisioning automatico dei nodi.

  5. Imposta l'utilizzo minimo e massimo di CPU e memoria per il cluster.

  6. Fai clic su Aggiungi risorsa.

  7. Seleziona il tipo di GPU (ad esempio, NVIDIA T4) che vuoi aggiungere. Imposta il numero minimo e massimo di GPU da aggiungere al cluster.

  8. Accetta le limitazioni delle GPU in GKE.

  9. Fai clic su Salva modifiche.

Scegli una versione del driver da installare

In GKE versione 1.29.2-gke.1108000 e successive, puoi selezionare una versione del driver GPU da installare automaticamente da GKE nei nodi GPU di cui è stato eseguito il provisioning automatico. Aggiungi il seguente campo al manifest:

spec:
  nodeSelector:
    cloud.google.com/gke-gpu-driver-version: "DRIVER_VERSION"

Sostituisci DRIVER_VERSION con uno dei seguenti valori:

  • default: il driver stabile predefinito per la versione GKE del nodo. Se ometti nodeSelector nel manifest, questa è l'opzione predefinita.
  • latest: la versione del driver più recente disponibile per la versione GKE del nodo.

Configurazione delle Cloud TPU

Se utilizzi il provisioning automatico dei nodi per una o più risorse TPU, devi configurare i limiti TPU. Per scoprire di più su come funziona il provisioning automatico dei nodi con le TPU, consulta la pagina Acceleratori di machine learning supportati.

Configura i pod per utilizzare le risorse TPU utilizzando gcloud CLI. Per configurare più tipi di TPU, devi utilizzare un file di configurazione.

gcloud

  1. Aggiorna il cluster e definisci i limiti della TPU:

    gcloud container clusters update CLUSTER_NAME \
        --enable-autoprovisioning \
        [--min-cpu  MINIMUM_CPU ] \
        --max-cpu MAXIMUM_CPU \
        [--min-memory MINIMUM_MEMORY ] \
        --max-memory MAXIMUM_MEMORY \
        --min-accelerator=type=TPU_TYPE,count= MINIMUM_ACCELERATOR  \
        --max-accelerator=type=TPU_TYPE,count= MAXIMUM_ACCELERATOR
    

    Sostituisci quanto segue:

    • CLUSTER_NAME: il nome del cluster.
    • MINIMUM_CPU: il numero minimo di vCPU nel cluster.
    • MAXIMUM_CPU: il numero massimo di vCPU nel cluster.
    • MINIMUM_MEMORY:il numero minimo di gigabyte di memoria nel cluster.
    • MAXIMUM_MEMORY: il numero massimo di gigabyte di memoria nel cluster.
    • TPU_TYPE: il tipo di TPU che scegli:
      • Per selezionare TPU v4, utilizza tpu-v4-podslice.
      • Per selezionare TPU v5e con un tipo di macchina che inizia con ct5lp-, utilizza tpu-v5-lite-podslice.
      • Per selezionare TPU v5p con un tipo di macchina che inizia con ct5p-, utilizza tpu-v5p-slice.
      • Per selezionare TPU Trillium, utilizza tpu-v6e-slice.
    • MINIMUM_ACCELERATOR: il numero minimo di chip TPU nel cluster.
      • Tieni presente che l'utilizzo di MINIMUM_ACCELERATOR potrebbe bloccarefare lo scale downà delle sezioni TPU multi-host anche se count è inferiore al numero di chip TPU nella sezione.
    • MAXIMUM_ACCELERATOR: il numero massimo di chip TPU nel cluster.
      • Se la configurazione del pod richiede una sezione TPU multi-host, GKE crea questa sezione in modo atomico. Imposta il valore count in modo che sia sufficiente per il provisioning di tutti i chip TPU della topologia specificata. Il numero di chip in ogni sezione TPU è uguale al prodotto della topologia. Ad esempio, se la topologia della sezione TPU multi-host è 2x2x2, il numero di chip TPU è pari a 8, pertanto MAXIMUM_ACCELERATOR deve essere superiore a 8.

    L'esempio seguente imposta i limiti TPU per i tipi di macchine ct5lp-hightpu-1t, ct5lp-hightpu-4t e ct5lp-hightpu-8t nel cluster dev-cluster. Ad esempio, è possibile eseguire il provisioning di un massimo di dieci macchine ct5lp-hightpu-4t, ognuna con 4 chip TPU, 112 vCPU e 192 GiB di memoria.

    gcloud container clusters update dev-cluster-inference \
          --enable-autoprovisioning \
          --min-cpu 0 \
          --max-cpu 1120 \
          --min-memory 0 \
          --max-memory 1920 \
          --min-accelerator=type=tpu-v5-lite-podslice,count=0 \
          --max-accelerator=type=tpu-v5-lite-podslice,count=40
    
  2. Crea una specifica di deployment che generi un pod che richiede risorse TPU. Ad esempio, il seguente manifest farà in modo che GKE provisioni quattro nodi ct5lp-hightpu-4t:

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: tpu-workload
      labels:
        app: tpu-workload
    spec:
      replicas: 4
      selector:
        matchLabels:
          app: nginx-tpu
      template:
        metadata:
          labels:
            app: nginx-tpu
        spec:
          nodeSelector:
            cloud.google.com/gke-tpu-accelerator: tpu-v5-lite-podslice
            cloud.google.com/gke-tpu-topology:  2x2
            cloud.google.com/reservation-name: my-reservation
          containers:
          - name: nginx
            image: nginx:1.14.2
            resources:
              requests:
                google.com/tpu: 4
              limits:
                google.com/tpu: 4
            ports:
            - containerPort: 80
    

    Nel campo nodeSelector, definisci il tipo di TPU, la topologia TPU e il conteggio degli acceleratori, dove:

    • cloud.google.com/gke-tpu-accelerator: definisce il tipo di TPU, ad esempio tpu-v4-podslice.
    • cloud.google.com/gke-tpu-topology: definisce la topologia TPU, ad esempio 2x2x1 o 4x4x8.
    • limits: google.com/tpu: definisce il numero di chip TPU per nodo.

    (Facoltativo) Puoi configurare i seguenti campi in nodeSelector:

    • Prenotazione TPU: per utilizzare una prenotazione esistente con il tuo carico di lavoro, specifica il nome della prenotazione in cloud.google.com/reservation-name.
    • Pianificazione della raccolta: per creare una raccolta con il provisioning automatico dei nodi, includi i seguenti valori in base al tipo di pool di nodi che richiedi:
      • Pool di nodi della sezione TPU single-host: cloud.google.com/gke-workload-type: HIGH_AVAILABILITY.
      • Node pool TPU multi-host: cloud.google.com/gke-nodepool-group-name: COLLECTION_NAME, cloud.google.com/gke-workload-type: HIGH_AVAILABILITY. Sostituisci il valore COLLECTION_NAME con il nome della raccolta. Questo valore deve rispettare i requisiti per le etichette del cluster.

YAML

Puoi assegnare limiti per più tipi di TPU utilizzando un file di configurazione. La seguente configurazione YAML configura due diversi tipi di TPU:

  resourceLimits:
    - resourceType: 'cpu'
      maximum: 10000
    - resourceType: 'memory'
      maximum: 10000
    - resourceType: 'tpu-v4-podslice'
      maximum: 32
    - resourceType: 'tpu-v5-lite'
      maximum: 64

Per utilizzare un file di configurazione del provisioning automatico:

  1. Copia la configurazione precedente in un file in una posizione in cui gcloud CLI può accedervi. Modifica i valori per resourceType e maximum. Aggiungi tutti i valori per resourceType che ti servono. Salva il file.

  2. Applica la configurazione al cluster eseguendo il seguente comando:

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

Sostituisci quanto segue:

  • CLUSTER_NAME: il nome del cluster.
  • FILE_NAME: il nome del file di configurazione.

Per saperne di più, consulta la documentazione gcloud container clusters update.

Località del provisioning automatico dei nodi

Imposti le zone in cui il provisioning automatico dei nodi può creare nuovi node pool. Le località regionali non sono supportate. Le zone devono appartenere alla stessa regione del cluster, ma non sono limitate alle località dei nodi definite a livello di cluster. La modifica delle località per il provisioning automatico dei nodi non influisce sui pool di nodi esistenti.

Per impostare le località in cui il provisioning automatico dei nodi può creare nuovi node pool, utilizza gcloud CLI o un file di configurazione.

gcloud

Esegui questo comando:

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

Sostituisci quanto segue:

  • CLUSTER_NAME: il nome del cluster.
  • ZONE: la zona in cui il provisioning automatico dei nodi può creare nuovi pool di nodi. Per specificare più zone, separale con una virgola (ad esempio, ZONE1, ZONE2,...).

YAML

Per impostare le località in cui il provisioning automatico dei nodi può creare nuovi node pool, puoi utilizzare un file di configurazione.

Aggiungi la seguente configurazione YAML che imposta la nuova posizione dei pool di nodi:

    autoprovisioningLocations:
      - ZONE

Sostituisci ZONE con la zona in cui il provisioning automatico dei nodi può creare nuovi node pool. Per specificare più zone, aggiungi altre zone all'elenco. Salva il file.

Per utilizzare un file di configurazione del provisioning automatico:

  1. Crea un file di configurazione in una posizione in cui gcloud CLI possa accedervi.

  2. Applica la configurazione al cluster:

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

    Sostituisci quanto segue:

    • CLUSTER_NAME: il nome del cluster.
    • FILE_NAME: il percorso del file di configurazione.

Nodi fisicamente più vicini con posizionamento compatto

A partire dalla versione 1.25 di GKE, il provisioning automatico dei nodi supporta la policy di posizionamento compatto. Con la policy di posizionamento compatto, puoi indicare a GKE di creare pool di nodi più vicini tra loro all'interno di una zona.

Per definire una policy di posizionamento compatto, aggiungi un nodeSelector alla specifica del pod con le seguenti chiavi:

  • cloud.google.com/gke-placement-group è l'identificatore che assegni al gruppo di pod che devono essere eseguiti insieme, nello stesso gruppo di posizionamento compatto.

  • cloud.google.com/machine-family è il nome della famiglia di macchine. Per saperne di più, consulta le famiglie di macchine che supportano il posizionamento compatto.

L'esempio seguente imposta una policy di posizionamento compatto con un identificatore del gruppo di posizionamento placement-group-1 e una famiglia di macchine c2:

apiVersion: v1
kind: Pod
metadata:
  ...
spec:
  ...
  nodeSelector:
    cloud.google.com/gke-placement-group: placement-group-1
    cloud.google.com/machine-family: c2

Per saperne di più, scopri come definire il posizionamento compatto per i nodi GKE.

La disabilitazione del provisioning automatico dei nodi

Quando disabiliti il provisioning automatico dei nodi per un cluster, il provisioning automatico dei node pool non viene più eseguito.

gcloud

Per disattivare il provisioning automatico dei nodi per un cluster, esegui questo comando:

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

Sostituisci CLUSTER_NAME con il nome del cluster.

YAML

Per disattivare il provisioning automatico dei nodi utilizzando la console Google Cloud :

  1. Vai alla pagina Google Kubernetes Engine nella console Google Cloud .

    Vai a Google Kubernetes Engine

  2. Fai clic sul nome del cluster.

  3. Nella sezione Automazione, in Provisioning automatico dei nodi, fai clic su Modifica.

  4. Deseleziona la casella di controllo Abilita provisioning automatico dei nodi.

  5. Fai clic su Salva modifiche.

Contrassegno del pool di nodi come di cui è stato eseguito il provisioning automatico

Dopo aver abilitato il provisioning automatico dei nodi sul cluster, puoi specificare i node pool di cui viene eseguito il provisioning automatico. Un pool di nodi di cui è stato eseguito il provisioning automatico viene eliminato automaticamente quando non viene utilizzato da alcun workload.

Per contrassegnare un pool di nodi come sottoposto a provisioning automatico, esegui questo comando:

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

Sostituisci NODE_POOL_NAME con il nome del pool di nodi.

Contrassegno del pool di nodi come non sottoposto a provisioning automatico

Per contrassegnare un pool di nodi come non sottoposto al provisioning automatico, esegui questo comando:

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

Sostituisci NODE_POOL_NAME con il nome del pool di nodi.

Utilizzo di una famiglia di macchine personalizzata

Puoi scegliere una serie di macchine Compute Engine specifica, ad esempio n2 o t2d, per i tuoi carichi di lavoro impostando uno dei seguenti campi nel manifest:

  • Imposta l'affinità del nodo con la chiave cloud.google.com/machine-family, l'operatore In e il valore che corrisponde alla famiglia di macchine desiderata (ad esempio, n2).
  • Aggiungi un nodeSelector con la chiave cloud.google.com/machine-family e il valore della famiglia di macchine desiderata.

Ecco un esempio che imposta nodeAffinity su una famiglia di macchine di n2:

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

Dopo aver applicato le modifiche, il provisioning automatico dei nodi sceglie il pool di nodi migliore con un tipo di macchina all'interno della serie di macchine specificata. Se specifichi più voci per matchExpressions, GKE sceglie arbitrariamente una serie di macchine tra le voci specificate.

Controllare gli attributi dei nodi utilizzando una classe di calcolo personalizzata

Per un maggiore controllo sugli attributi dei node pool di cui è stato eseguito il provisioning automatico, crea e utilizza classi di calcolo personalizzate. Le classi di calcolo personalizzate ti consentono di configurare comportamenti di scalabilità come le priorità di fallback quando scegli i tipi di macchine per i nodi o soglie di utilizzo delle risorse specifiche che attivano il consolidamento dei carichi di lavoro sui nodi per liberare le risorse inutilizzate. Le classi di calcolo personalizzate sono disponibili per l'utilizzo in GKE versione 1.30.3-gke.1451000 e successive.

Per scoprire di più sulle funzionalità delle classi di computing personalizzate e su come utilizzarle con il provisioning automatico dei nodi, consulta Informazioni sulle classi di computing personalizzate.

Piattaforma CPU minima

Il provisioning automatico dei nodi supporta la creazione di node pool con una piattaforma CPU minima specificata. Puoi specificare la piattaforma CPU minima a livello di workload (opzione consigliata) o a livello di cluster.

Passaggi successivi