Configura la creazione automatica dei pool di nodi

Puoi ridurre la quantità di gestione manuale dell'infrastruttura nei cluster Google Kubernetes Engine (GKE) Standard consentendo a GKE di creare automaticamente i node pool per i pod in attesa. Questo documento mostra come attivare la creazione automatica di pool di nodi per cluster e carichi di lavoro, impostare valori predefiniti per i nodi creati automaticamente e attivare la creazione automatica per alcuni casi d'uso comuni.

Questo documento è rivolto ad amministratori, operatori e sviluppatori di cluster che gestiscono l'infrastruttura e distribuiscono i carichi di lavoro nei cluster standard. Per ulteriori informazioni sul funzionamento della creazione automatica dei pool di nodi e sui diversi metodi di attivazione (come ComputeClass e il provisioning automatico dei nodi a livello di cluster), consulta Informazioni sulla creazione automatica dei pool di nodi pool.

Limitazioni

La creazione automatica del node pool presenta le seguenti limitazioni:

  • Tutte le limitazioni del gestore della scalabilità automatica del cluster si applicano anche alla creazione automatica dei pool di nodi.
  • I cluster con più di 200 node pool totali potrebbero avere una latenza maggiore durante la scalabilità automatica. Qualsiasi configurazione che attiva la creazione di un nuovo pool di nodi, ad esempio la separazione dei workload o l'utilizzo di più ComputeClass, aumenta questo numero. Per ulteriori informazioni sui limiti dei cluster, vedi Limiti e best practice in "Pianificazione di cluster di grandi dimensioni".
  • Eventuali limiti delle risorse impostati per il cluster quando abiliti il provisioning automatico dei nodi vengono applicati anche ai node pool che GKE crea per le ComputeClass.
  • Le seguenti impostazioni non sono supportate da ComputeClasses:
    • Upgrade di picco o upgrade blu/verde.
    • Integrità del nodo e avvio protetto.
  • Per abilitare la creazione automatica del pool di nodi per una ComputeClass nelle versioni di GKE precedenti alla 1.33.3-gke.1136000, devi anche abilitare il provisioning automatico dei nodi a livello di cluster. Questa limitazione non si applica a GKE versione 1.33.3-gke.1136000 e successive.

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 il comando gcloud components update. Le versioni precedenti di gcloud CLI potrebbero non supportare l'esecuzione dei comandi in questo documento.

Requisiti

Puoi abilitare la creazione automatica dei pool di nodi per l'intero cluster in qualsiasi versione di GKE utilizzando la funzionalità di provisioning automatico dei nodi. Se vuoi utilizzare una ComputeClass per attivare la creazione automatica del pool di nodi a livello di workload e non vuoi attivare il provisioning automatico dei nodi, il cluster deve soddisfare i seguenti requisiti:

  • Utilizza GKE 1.33.3-gke.1136000 o versioni successive.
  • Utilizza il canale di rilascio rapido.

Per attivare la creazione automatica pool di nodi per configurazioni di nodi specifiche, devi soddisfare i requisiti di versione corrispondenti. Per saperne di più sul supporto delle versioni per varie configurazioni, consulta le note di rilascio di GKE (nuove funzionalità) o la documentazione per il tuo caso d'uso.

Abilita la creazione automatica a livello di workload

Puoi abilitare la creazione automatica di pool di nodi per carichi di lavoro specifici nel cluster utilizzando una ComputeClass. Il campo nodePoolAutoCreation in una specifica ComputeClass controlla se GKE può creare nuovi pool di nodi per i pod che selezionano ComputeClass. In GKE versione 1.33.3-gke.1136000 e successive, puoi abilitare la creazione automatica del pool di nodi per una ComputeClass anche se il provisioning automatico dei nodi non è abilitato nel cluster. Nelle versioni precedenti alla 1.33.3-gke.1136000, devi anche abilitare il provisioning automatico dei nodi a livello di cluster.

Per attivare la creazione automatica del pool di nodi per una ComputeClass:

  1. Utilizza un cluster Standard nuovo o esistente che soddisfi i seguenti requisiti:

    • Utilizza GKE 1.33.3-gke.1136000 o versioni successive.
    • Utilizza il canale di rilascio rapido.

    Se vuoi, puoi creare un nuovo cluster standard.

  2. Se il cluster non soddisfa i requisiti del passaggio precedente, abilita il provisioning automatico dei nodi a livello di cluster.

  3. Salva il seguente esempio di ComputeClass come file YAML:

    apiVersion: cloud.google.com/v1
    kind: ComputeClass
    metadata:
      name: COMPUTE_CLASS
    spec:
      priorities:
      -  machineFamily: n4
      -  machineFamily: n2
      whenUnsatisfiable: ScaleUpAnyway
      nodePoolAutoCreation:
        enabled: true
    

    Sostituisci COMPUTE_CLASS con un nome per la nuova ComputeClass. Per ulteriori informazioni sui campi disponibili in ComputeClasses, consulta la CustomResourceDefinition ComputeClass.

  4. Applica il manifest ComputeClass al cluster:

    kubectl apply -f PATH_TO_COMPUTECLASS_MANIFEST
    

    Sostituisci PATH_TO_COMPUTECLASS_MANIFEST con il percorso del file manifest di ComputeClass.

  5. Salva il seguente esempio di deployment, che seleziona una ComputeClass, come helloweb-deploy.yaml:

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: helloweb
      labels:
        app: hello
    spec:
      selector:
        matchLabels:
          app: hello
      template:
        metadata:
          labels:
            app: hello
        spec:
          nodeSelector:
            # Replace with the name of a compute class
            cloud.google.com/compute-class: COMPUTE_CLASS 
          containers:
          - name: hello-app
            image: us-docker.pkg.dev/google-samples/containers/gke/hello-app:1.0
            ports:
            - containerPort: 8080
            resources:
              requests:
                cpu: "250m"
                memory: "1Gi"

  6. Crea il deployment nel cluster:

    kubectl apply -f helloweb-deploy.yaml
    
  7. Per verificare che GKE abbia creato un nuovo pool di nodi per il tuo pod, recupera un elenco dei node pool nel tuo cluster:

    gcloud container node-pools list \
        --cluster=CLUSTER_NAME \
        --location=CONTROL_PLANE_LOCATION
    

    Sostituisci quanto segue:

    • CLUSTER_NAME: il nome del tuo cluster.
    • CONTROL_PLANE_LOCATION: la regione o la zona del control plane del cluster, ad esempio us-central1 o us-central1-a.

Abilita il provisioning automatico dei nodi a livello di cluster

Per attivare la creazione automatica pool di nodi per l'intero cluster GKE, utilizza l'impostazione provisioning automatico dei nodi. Il provisioning automatico dei nodi consente a GKE di creare nuovi node pool per i carichi di lavoro in attesa nel cluster in base alla configurazione nella specifica del pod o in una ComputeClass. Puoi abilitare il provisioning automatico dei nodi per cluster nuovi o esistenti.

Prima di attivare il provisioning automatico dei nodi, pianifica le dimensioni dell'intervallo di indirizzi IPv4 principale della subnet VPC. GKE utilizza questo intervallo di indirizzi IP come intervallo di indirizzi IP dei nodi principale. A seconda delle dimensioni e della scalabilità del cluster, l'intervallo di indirizzi IP nodo predefinito potrebbe non avere indirizzi IP sufficienti da assegnare ai nuovi nodi. Se aggiorni le dimensioni dell'intervallo di indirizzi IP dei nodi dopo aver creato il cluster, devi aggiornare le regole firewall del cluster GKE per consentire il traffico dai nuovi indirizzi IP.

Per ottenere node pool creati automaticamente nelle versioni di GKE precedenti alla 1.33.3-gke.1136000, devi eseguire i passaggi descritti in questa sezione. Puoi anche abilitare il provisioning automatico dei nodi per un cluster esistente modificando la configurazione del cluster nella console Google Cloud .

Per abilitare il provisioning automatico dei nodi quando crei un nuovo cluster, seleziona una delle seguenti opzioni:

Console

  1. Nella console Google Cloud , vai alla pagina Crea un cluster Kubernetes.

    Vai a Crea un cluster Kubernetes

  2. Nella pagina Impostazioni di base del cluster, specifica un nome e una posizione per il nuovo cluster.

  3. Nel menu di navigazione, fai clic su Automazione.

  4. Seleziona la casella di controllo Abilita provisioning automatico dei nodi. Viene visualizzata una sezione Limiti.

  5. Specifica i limiti per CPU e memoria.

  6. Fai clic su Salva modifiche.

gcloud

gcloud container clusters create CLUSTER_NAME \
    --location=CONTROL_PLANE_LOCATION \
    --enable-autoprovisioning \
    --min-cpu=MINIMUM_CPU \
    --min-memory=MINIMUM_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.
  • CONTROL_PLANE_LOCATION: la regione o la zona del control plane del cluster, ad esempio us-central1 o us-central1-a.
  • MINIMUM_CPU: il numero minimo di core nel cluster.
  • MINIMUM_MEMORY: la capacità di memoria minima, in GiB, nel cluster.
  • MAXIMUM_CPU: il numero massimo di core nel cluster. Questo limite si applica alla somma dei core della CPU in tutti i nodi nuovi ed esistenti nel cluster, inclusi i pool di nodi creati manualmente.
  • MAXIMUM_MEMORY: la capacità massima di memoria, in GiB, nel cluster. Questo limite si applica alla somma della capacità di memoria di tutti i pool di nodi nuovi ed esistenti nel cluster, inclusi quelli creati manualmente.

Configurare le impostazioni con un file di configurazione del provisioning automatico dei nodi

Puoi configurare i limiti delle risorse e le impostazioni di configurazione dei nodi per il provisioning automatico dei nodi utilizzando un file di configurazione YAML. Il file di configurazione ti consente di specificare in modo dichiarativo i valori predefiniti per i pool di nodi creati automaticamente e di eseguire la configurazione avanzata, ad esempio l'attivazione della riparazione automatica dei nodi. Questo file non è correlato a ComputeClasses, che sono risorse personalizzate di Kubernetes. Il file di configurazione esiste invece come alternativa più estensibile all'utilizzo di flag della riga di comando per specificare le impostazioni per il provisioning automatico dei nodi. Per saperne di più, consulta la sezione Impostazioni predefinite a livello di cluster con un file di configurazione.

Per creare e utilizzare un file di configurazione:

  1. In un editor di testo, crea un file YAML in un percorso a cui Google Cloud CLI può accedere.
  2. Aggiungi le configurazioni che vuoi impostare o modificare, come nell'esempio seguente:

    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
    

    Questo esempio ha le seguenti impostazioni per il provisioning automatico dei nodi:

    • resourceLimits: imposta i limiti delle risorse per CPU, capacità di memoria e GPU NVIDIA T4 nel cluster. Questi limiti si applicano alla somma della capacità delle risorse nel cluster, inclusi i node pool creati manualmente.
    • management: abilita la riparazione automatica e l'upgrade automatico dei nodi per tutti i nuovi node pool creati automaticamente nel cluster.
    • shieldedInstanceConfig: abilita l'avvio protetto e il monitoraggio dell'integrità dei nodi per tutti i nuovi node pool creati automaticamente nel cluster.
  3. Fornisci il file di configurazione a GKE specificando il flag --autoprovisioning-config-file e il flag --enable-autoprovisioning per un cluster nuovo o esistente:

    gcloud container clusters create CLUSTER_NAME \
        --location=CONTROL_PLANE_LOCATION \
        --enable-autoprovisioning \
        --autoprovisioning-config-file=PATH_TO_CONFIGURATION_FILE
    

    Sostituisci quanto segue:

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

Dopo aver applicato il file di configurazione al cluster, GKE utilizza le impostazioni del file per i nuovi pool di nodi creati automaticamente nel cluster. Queste impostazioni non si applicano ai node pool esistenti creati da GKE nel cluster.

Configura i limiti delle risorse per il provisioning automatico dei nodi

Quando utilizzi il provisioning automatico dei nodi a livello di cluster, devi configurare i limiti per la quantità totale di risorse che il cluster può avere in tutti i suoi node pool. Per abilitare il provisioning automatico dei nodi per un cluster, devi specificare i limiti per la capacità di CPU e memoria nel cluster. Inoltre, per utilizzare altri tipi di risorse collegate come GPU e TPU, devi specificare i limiti per queste risorse. Questi limiti sono obbligatori solo se attivi l'impostazione di provisioning automatico dei nodi per il tuo cluster. Se utilizzi solo ComputeClass per ottenere node pool creati automaticamente, non devi configurare limiti di risorse.

Puoi aggiungere o modificare i limiti delle risorse per la creazione automatica del pool di nodi utilizzando uno dei seguenti metodi:

Per configurare i limiti delle risorse per un cluster esistente, seleziona una delle seguenti opzioni:

Console

  1. Nella console Google Cloud , vai alla pagina Cluster Kubernetes.

    Vai ai cluster Kubernetes

  2. Fai clic sul nome del cluster. Viene visualizzata la pagina Dettagli cluster.

  3. Fai clic sulla scheda Dettagli.

  4. Nella sezione Automazione, nella riga Provisioning automatico dei nodi, fai clic su Modifica. Viene visualizzato il riquadro Modifica provisioning automatico dei nodi.

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

  6. Nella sezione Limiti, specifica i valori minimo e massimo per la capacità di CPU e memoria nel cluster.

  7. Per configurare i limiti per un'altra risorsa, come GPU o TPU, segui questi passaggi:

    1. Fai clic su Aggiungi risorsa.
    2. Nell'elenco a discesa Tipo di risorsa, seleziona il modello di GPU o il tipo di macchina TPU, ad esempio NVIDIA A100 80 GB o ct5p.
    3. Specifica i valori minimo e massimo per la risorsa.
  8. (Facoltativo) Nella sezione Località del pool di nodi, seleziona zone specifiche in cui GKE deve creare i nodi. Ad esempio, se prevedi di eseguire workload GPU, seleziona le zone con alta disponibilità per il tipo di GPU selezionato.

  9. Fai clic su Salva modifiche.

gcloud

Esegui uno dei seguenti comandi:

  • Specifica i limiti delle risorse di CPU e memoria:

    gcloud container clusters update CLUSTER_NAME \
        --location=CONTROL_PLANE_LOCATION \
        --enable-autoprovisioning \
        --min-cpu=MINIMUM_CPU \
        --min-memory=MINIMUM_MEMORY \
        --max-cpu=MAXIMUM_CPU \
        --max-memory=MAXIMUM_MEMORY
    

    Sostituisci quanto segue:

    • MINIMUM_CPU: il numero minimo di core nel cluster.
    • MINIMUM_MEMORY: la capacità di memoria minima, in GiB, nel cluster.
    • MAXIMUM_CPU: il numero massimo di core nel cluster. Questo limite si applica alla somma dei core della CPU in tutti i node pool del cluster, inclusi quelli creati manualmente.
    • MAXIMUM_MEMORY: la capacità massima di memoria, in GiB, nel cluster. Questo limite si applica alla somma della capacità di memoria di tutti i node pool del cluster, compresi quelli creati manualmente.
  • Specifica i limiti delle risorse GPU:

    gcloud container clusters update CLUSTER_NAME \
        --location=CONTROL_PLANE_LOCATION \
        --enable-autoprovisioning \
        --min-cpu=MINIMUM_CPU \
        --min-memory=MINIMUM_MEMORY \
        --max-cpu=MAXIMUM_CPU \
        --max-memory=MAXIMUM_MEMORY \
        --min-accelerator=type=GPU_TYPE,count=MINIMUM_GPU_COUNT \
        --max-accelerator=type=GPU_TYPE,count=MAXIMUM_GPU_COUNT
    

    Sostituisci quanto segue:

    • GPU_TYPE: il tipo di GPU per cui impostare un limite, ad esempio nvidia-l4.
    • MINIMUM_GPU_COUNT: il numero minimo di GPU del tipo specificato che il cluster può avere.
    • MAXIMUM_GPU_COUNT: il numero massimo di GPU del tipo specificato che il cluster può avere.
  • Specifica i limiti delle risorse TPU:

    gcloud container clusters update CLUSTER_NAME \
        --location=CONTROL_PLANE_LOCATION \
        --enable-autoprovisioning \
        --min-cpu=MINIMUM_CPU \
        --min-memory=MINIMUM_MEMORY \
        --max-cpu=MAXIMUM_CPU \
        --max-memory=MAXIMUM_MEMORY \
        --min-accelerator=type=TPU_TYPE,count=MINIMUM_TPU_COUNT \
        --max-accelerator=type=TPU_TYPE,count=MAXIMUM_TPU_COUNT
    

    Sostituisci quanto segue:

    • TPU_TYPE: il tipo di TPU per cui impostare un limite. Sono supportati i seguenti valori:
      • tpu-v4-podslice: TPU v4.
      • tpu-v5-lite-podslice: TPU v5e con tipi di macchina che iniziano con ct5lp-.
      • tpu-v5p-slice: TPU v5e con tipi di macchina che iniziano con ct5p-.
      • tpu-v6e-slice: TPU Trillium.
    • MINIMUM_TPU_COUNT: il numero minimo di chip TPU del tipo specificato che il cluster può avere. Se il valore che specifichi è maggiore del numero di chip TPU in una sezione TPU multi-host, la sezione TPU potrebbe non essere fare lo scale down.
    • MAXIMUM_TPU_COUNT: il numero massimo di chip TPU del tipo specificato che il cluster può avere. Per gli slice TPU multihost, specifica un valore maggiore del numero di chip in ogni slice in modo che GKE possa scalare lo slice in modo atomico. Il numero di chip in una sezione è il prodotto della topologia TPU. Ad esempio, se la topologia è 2x2x2, il numero di chip nella sezione è 8, il che significa che il valore di MAXIMUM_TPU_COUNT deve essere maggiore di 8.

File di configurazione

  1. Nel file di configurazione, specifica uno dei seguenti set di campi nel campo resourceLimits:

    • Specifica i limiti delle risorse di CPU e memoria:

      resourceLimits:
        - resourceType: 'cpu'
          minimum: MINIMUM_CPU
          maximum: MAXIMUM_CPU
        - resourceType: 'memory'
          minimum: MINIMUM_MEMORY
          maximum: MAXIMUM_MEMORY
      

      Sostituisci quanto segue:

      • MINIMUM_CPU: il numero minimo di core nel cluster.
      • MINIMUM_MEMORY: la capacità di memoria minima, in GiB, nel cluster.
      • MAXIMUM_CPU: il numero massimo di core nel cluster. Questo limite si applica alla somma dei core della CPU in tutti i node pool del cluster, inclusi quelli creati manualmente.
      • MAXIMUM_MEMORY: la capacità massima di memoria, in GiB, nel cluster. Questo limite si applica alla somma della capacità di memoria di tutti i node pool del cluster, compresi quelli creati manualmente.
    • Specifica i limiti delle risorse GPU:

      resourceLimits:
        - resourceType: 'cpu'
          minimum: MINIMUM_CPU
          maximum: MAXIMUM_CPU
        - resourceType: 'memory'
          minimum: MINIMUM_MEMORY
          maximum: MAXIMUM_MEMORY
        - resourceType: 'GPU1_TYPE'
          minimum: MINIMUM_GPU1_COUNT
          maximum: MAXIMUM_GPU1_COUNT
        - resourceType: 'GPU2_TYPE'
          minimum: MINIMUM_GPU2_COUNT
          maximum: MAXIMUM_GPU2_COUNT
      

      Sostituisci quanto segue:

      • GPU1_TYPE,GPU2_TYPE: i tipi di GPU per cui impostare i limiti, ad esempio nvidia-l4.
      • MINIMUM_GPU1_COUNT,MINIMUM_GPU2_COUNT: il numero minimo di GPU dei tipi specificati che il cluster può avere.
      • MAXIMUM_GPU1_COUNT,MAXIMUM_GPU2_COUNT: il numero massimo di GPU dei tipi specificati che il cluster può avere.
    • Specifica i limiti delle risorse TPU:

      resourceLimits:
        - resourceType: 'cpu'
          minimum: MINIMUM_CPU
          maximum: MAXIMUM_CPU
        - resourceType: 'memory'
          minimum: MINIMUM_MEMORY
          maximum: MAXIMUM_MEMORY
        - resourceType: 'TPU1_TYPE'
          minimum: MINIMUM_TPU1_COUNT
          maximum: MAXIMUM_TPU1_COUNT
        - resourceType: 'TPU2_TYPE'
          minimum: MINIMUM_TPU2_COUNT
          maximum: MAXIMUM_TPU2_COUNT
      

      Sostituisci quanto segue:

      • TPU1_TYPE,TPU2_TYPE: i tipi di TPU per cui impostare i limiti. Sono supportati i seguenti valori:
        • tpu-v4-podslice: TPU v4.
        • tpu-v5-lite-podslice: TPU v5e con tipi di macchina che iniziano con ct5lp-.
        • tpu-v5p-slice: TPU v5e con tipi di macchina che iniziano con ct5p-.
        • tpu-v6e-slice: TPU Trillium.
      • MINIMUM_TPU1_COUNT,MINIMUM_TPU2_COUNT: il numero minimo di chip TPU del tipo specificato che il cluster può avere. Se il valore specificato è maggiore del numero di chip TPU in una sezione TPU multi-host, la sezione TPU potrebbe non esserefare lo scale downa.
      • MAXIMUM_TPU1_COUNT,MAXIMUM_TPU2_COUNT: il numero massimo di chip TPU del tipo specificato che il cluster può avere. Per le sezioni TPU multihost, specifica un valore maggiore del numero di chip in ogni sezione in modo che GKE possa scalare la sezione in modo atomico. Il numero di chip in una sezione è il prodotto della topologia della TPU. Ad esempio, se la topologia per TPU1_TYPE è 2x2x2, il numero di chip nella sezione è 8, il che significa che il valore di MAXIMUM_TPU1_COUNT deve essere maggiore di 8.
  2. Fornisci il file di configurazione a GKE specificando il flag --autoprovisioning-config-file e il flag --enable-autoprovisioning per un cluster nuovo o esistente:

    gcloud container clusters create CLUSTER_NAME \
        --location=CONTROL_PLANE_LOCATION \
        --enable-autoprovisioning \
        --autoprovisioning-config-file=PATH_TO_CONFIGURATION_FILE
    

    Sostituisci quanto segue:

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

Contrassegnare i node pool esistenti come creati automaticamente

Dopo aver abilitato il provisioning automatico dei nodi a livello di cluster, puoi contrassegnare tutti i node pool esistenti nel cluster come creati automaticamente. GKE gestisce lo scaling in questi pool di nodi, inclusa l'eliminazione dei pool di nodi quando sono vuoti. Puoi contrassegnare i node pool creati manualmente come creati automaticamente per consentire a GKE di gestirli per te.

Se disabiliti il provisioning automatico per il cluster, GKE interrompe la gestione di tutti i node pool creati automaticamente esistenti nel cluster. Se riattivi il provisioning automatico per il cluster in un secondo momento, GKE non riprende automaticamente la gestione di questi node pool esistenti. Devi contrassegnare i pool di nodi esistenti come creati automaticamente.

Per contrassegnare un pool di nodi esistente come creato automaticamente, esegui questo comando:

gcloud container node-pools update NODE_POOL_NAME \
    --cluster=CLUSTER_NAME \
    --location=CONTROL_PLANE_LOCATION \
    --enable-autoprovisioning

Sostituisci NODE_POOL_NAME con il nome del pool di nodi.

Configura le impostazioni predefinite per i node pool creati automaticamente

GKE utilizza le specifiche di ComputeClass e dei pod per determinare i tipi di nodi che possono eseguire in modo ottimale i pod in attesa. Se vuoi, puoi configurare le impostazioni predefinite che GKE applica ai pool di nodi creati automaticamente, ad esempio un account di servizio Identity and Access Management (IAM) personalizzato per i nodi o configurazioni personalizzate del disco di avvio. Queste impostazioni predefinite sostituiscono i valori predefiniti corrispondenti impostati da Google per i tuoi cluster. Ad esempio, puoi impostare un'immagine del nodo Ubuntu come predefinita per i pool di nodi creati automaticamente, che sostituisce l'immagine del nodo Container-Optimized OS predefinita di GKE.

Puoi configurare le impostazioni predefinite a livello di cluster utilizzando il provisioning automatico dei nodi o a livello di workload in ComputeClasses. Prima di configurare un'impostazione a uno di questi livelli, tieni presente quanto segue:

  • Le impostazioni a livello di cluster si applicano a qualsiasi pool di nodi creato automaticamente nel cluster, mentre le impostazioni di ComputeClass si applicano solo ai carichi di lavoro che utilizzano ComputeClass.
  • Se specifichi la stessa impostazione predefinita in una ComputeClass e a livello di cluster, GKE utilizza l'impostazione ComputeClass per i carichi di lavoro che utilizzano ComputeClass.
  • I valori predefiniti che configuri si applicano solo ai pool di nodi creati automaticamente nuovi. I node pool esistenti non sono interessati.

Le sezioni seguenti mostrano come configurare impostazioni predefinite specifiche.

Impostare l'immagine del nodo predefinita

Seleziona una delle seguenti opzioni:

ComputeClass

  1. In un manifest ComputeClass, utilizza il campo nodePoolConfig.imageType. Questo campo è disponibile in GKE versione 1.32.4-gke.1198000 e successive.

    apiVersion: cloud.google.com/v1
    kind: ComputeClass
    metadata:
      name: COMPUTE_CLASS
    spec:
      priorities:
      - machineFamily: n4
      - machineFamily: n4d
      nodePoolConfig:
        imageType: IMAGE_TYPE
      whenUnsatisfiable: ScaleUpAnyway
      nodePoolAutoCreation:
        enabled: true
    

    Sostituisci IMAGE_TYPE con un valore per l'immagine del nodo, che può essere uno dei seguenti:

    • cos_containerd: Container-Optimized OS con containerd.
    • ubuntu_containerd: Ubuntu con containerd.
  2. Applica il manifest ComputeClass al cluster:

    kubectl apply -f PATH_TO_COMPUTECLASS_MANIFEST
    

    Sostituisci PATH_TO_COMPUTECLASS_MANIFEST con il percorso del file manifest di ComputeClass.

gcloud

Per impostare l'immagine del nodo predefinita dalla riga di comando, utilizza il flag --autoprovisioning-image-type:

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

Sostituisci quanto segue:

  • CLUSTER_NAME: il nome del cluster.
  • IMAGE_TYPE: l'immagine del nodo, che può essere una delle seguenti:
    • cos_containerd: Container-Optimized OS con containerd.
    • ubuntu_containerd: Ubuntu con containerd.

Per impostare l'immagine del nodo predefinita in un file di configurazione:

  1. Nel file di configurazione, specifica il campo imageType:

      imageType: 'IMAGE_TYPE'
    

    Se il file di configurazione contiene altre impostazioni, non modificarle. Eventuali modifiche o rimozioni nel file di configurazione modificano anche le impostazioni corrispondenti a livello di cluster.

  2. Fornisci il file di configurazione a GKE specificando il flag --autoprovisioning-config-file e il flag --enable-autoprovisioning per un cluster nuovo o esistente:

    gcloud container clusters create CLUSTER_NAME \
        --location=CONTROL_PLANE_LOCATION \
        --enable-autoprovisioning \
        --autoprovisioning-config-file=PATH_TO_CONFIGURATION_FILE
    

    Sostituisci quanto segue:

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

Imposta il account di servizio IAM predefinito per i nodi

I nodi GKE utilizzano un service account IAM per attività di sistema come il logging e il monitoraggio. Per modificare il account di servizio IAM per i node pool creati automaticamente, seleziona una delle seguenti opzioni:

ComputeClass

  1. In un manifest Computeclass, utilizza il campo nodePoolConfig.serviceAccount. Questo campo è disponibile in GKE versione 1.31.4-gke.1072000 e successive.

    apiVersion: cloud.google.com/v1
    kind: ComputeClass
    metadata:
      name: COMPUTE_CLASS
    spec:
      priorities:
      - machineFamily: n4
      - machineFamily: n4d
      nodePoolConfig:
        serviceAccount: SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com
      whenUnsatisfiable: ScaleUpAnyway
      nodePoolAutoCreation:
        enabled: true
    

    Sostituisci quanto segue:

    • SERVICE_ACCOUNT_NAME: il nome del account di servizio IAM, ad esempio my-node-account.
    • PROJECT_ID: l'ID progetto del progetto dell'account di servizio.
  2. Applica il manifest ComputeClass al cluster:

    kubectl apply -f PATH_TO_COMPUTECLASS_MANIFEST
    

    Sostituisci PATH_TO_COMPUTECLASS_MANIFEST con il percorso del file manifest di ComputeClass.

gcloud

Quando utilizzi gcloud CLI per configurare un account di servizio predefinito per i pool di nodi creati automaticamente, devi anche specificare ambiti di accesso necessari per il corretto funzionamento dei pool di nodi.

Per impostare il account di servizio e gli ambiti di accesso predefiniti sulla riga di comando, utilizza i flag --autoprovisioning-service-account e --autoprovisioning-scopes:

gcloud container clusters update CLUSTER_NAME \
    --location=CONTROL_PLANE_LOCATION \
    --enable-autoprovisioning \
    --autoprovisioning-service-account=SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com \
    --autoprovisioning-scopes=https://www.googleapis.com/auth/devstorage.read_only,https://www.googleapis.com/auth/service.management.readonly,https://www.googleapis.com/auth/servicecontrol,https://www.googleapis.com/auth/trace.append

Sostituisci quanto segue:

  • SERVICE_ACCOUNT_NAME: il nome del account di servizio IAM, ad esempio my-node-account.
  • PROJECT_ID: l'ID progetto del progetto dell'account di servizio.

Per impostare l'account di servizio e gli ambiti di accesso predefiniti in un file di configurazione, segui questi passaggi:

  1. Nel file di configurazione, specifica i campi serviceAccount e scopes:

    serviceAccount: SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com
    scopes: https://www.googleapis.com/auth/devstorage.read_only,https://www.googleapis.com/auth/service.management.readonly,https://www.googleapis.com/auth/servicecontrol,https://www.googleapis.com/auth/trace.append
    

    Se il file di configurazione contiene altre impostazioni, non modificarle. Eventuali modifiche o rimozioni nel file di configurazione modificano anche le impostazioni corrispondenti a livello di cluster.

  2. Fornisci il file di configurazione a GKE specificando il flag --autoprovisioning-config-file e il flag --enable-autoprovisioning per un cluster nuovo o esistente:

    gcloud container clusters create CLUSTER_NAME \
        --location=CONTROL_PLANE_LOCATION \
        --enable-autoprovisioning \
        --autoprovisioning-config-file=PATH_TO_CONFIGURATION_FILE
    

    Sostituisci quanto segue:

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

Imposta le zone predefinite per i nodi creati automaticamente

Per impostazione predefinita, GKE crea automaticamente i nodi nelle seguenti zone, a seconda del tipo di cluster:

  • Cluster regionali: GKE crea nodi in tre zone casuali nella regione del cluster.
  • Cluster di zona: GKE crea nodi nella stessa zona del piano di controllo del cluster.

Puoi specificare manualmente un elenco di zone in cui GKE crea automaticamente i nodi. Queste zone devono trovarsi nella stessa regione del control plane del cluster. Ad esempio, se hai un cluster di zona con il control plane in us-central1-a, puoi specificare qualsiasi zona nella regione us-central1 per consentire a GKE di creare automaticamente i nodi. Se modifichi le zone predefinite per i nodi creati automaticamente in un cluster esistente, le modifiche si applicano solo ai nuovi node pool creati da GKE.

Per specificare le zone predefinite per i nodi creati automaticamente, seleziona una delle seguenti opzioni:

ComputeClass

  1. In un manifest ComputeClass, utilizza il campo spec.priorityDefaults.location.zones. Questo campo è disponibile in GKE versione 1.33.1-gke.1545000 e successive.

    apiVersion: cloud.google.com/v1
    kind: ComputeClass
    metadata:
      name: COMPUTE_CLASS
    spec:
      priorityDefaults:
        location:
          zones: ['ZONE1','ZONE2','...']
      priorities:
      - machineFamily: n4
      - machineFamily: n4d
      whenUnsatisfiable: ScaleUpAnyway
      nodePoolAutoCreation:
        enabled: true
    

    Sostituisci ZONE1,ZONE2,... con un elenco separato da virgole delle zone predefinite per i nodi creati automaticamente, ad esempio "us-central1-a','us-central1-b', 'us-central1-f'". GKE utilizza queste zone se regole specifiche nel campo spec.priorities non includono un elenco esplicito di zone.

  2. Applica il manifest ComputeClass al cluster:

    kubectl apply -f PATH_TO_COMPUTECLASS_MANIFEST
    

    Sostituisci PATH_TO_COMPUTECLASS_MANIFEST con il percorso del file manifest di ComputeClass.

gcloud

Per impostare le zone predefinite per la creazione automatica pool di nodi sulla riga di comando, utilizza il flag --autoprovisioning-locations:

gcloud container clusters update CLUSTER_NAME \
    --location=CONTROL_PLANE_LOCATION \
    --enable-autoprovisioning \
    --autoprovisioning-locations=ZONE1,ZONE2,...

Sostituisci ZONE1,ZONE2,... con un elenco separato da virgole delle zone predefinite per i nodi creati automaticamente, ad esempio "us-central1-a','us-central1-b', 'us-central1-f'".

Per impostare le zone predefinite per la creazione automatica dei pool di nodi utilizzando un file di configurazione:

  1. Specifica il campo autoprovisioningLocations nel file di configurazione:

    autoprovisioningLocations:
    - ZONE1
    - ZONE2
    

    Sostituisci ZONE1,ZONE2 con le zone predefinite per i nodi creati automaticamente, ad esempio "us-central1-a" e "us-central1-b".

    Se il file di configurazione contiene altre impostazioni, non modificarle. Eventuali modifiche o rimozioni nel file di configurazione modificano anche le impostazioni corrispondenti a livello di cluster.

  2. Fornisci il file di configurazione a GKE specificando il flag --autoprovisioning-config-file e il flag --enable-autoprovisioning per un cluster nuovo o esistente:

    gcloud container clusters create CLUSTER_NAME \
        --location=CONTROL_PLANE_LOCATION \
        --enable-autoprovisioning \
        --autoprovisioning-config-file=PATH_TO_CONFIGURATION_FILE
    

    Sostituisci quanto segue:

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

Imposta le chiavi di crittografia gestite dal cliente per la crittografia del disco di avvio

Puoi specificare una chiave di crittografia gestita dal cliente (CMEK) in Cloud Key Management Service che GKE utilizza per criptare i dischi di avvio dei nodi nei node pool creati automaticamente. Devi creare la chiave prima di utilizzarla con la creazione automatica del pool di nodi. Per impostare una chiave CMEK per i dischi di avvio dei nodi, seleziona una delle seguenti opzioni:

ComputeClass

In ComputeClasses, devi specificare la chiave in ogni regola di priorità nel campo spec.priorities di ComputeClass.

  1. In un manifest ComputeClass, utilizza il campo priorities.storage.bootDiskKMSKey:

    apiVersion: cloud.google.com/v1
    kind: ComputeClass
    metadata:
      name: COMPUTE_CLASS
    spec:
      priorities:
      - machineFamily: n4
        storage:
          bootDiskKMSKey: projects/KEY_PROJECT_ID/locations/KEY_LOCATION/keyRings/KEY_RING/cryptoKeys/KEY_NAME
      - machineFamily: n4d
        storage:
          bootDiskKMSKey: projects/KEY_PROJECT_ID/locations/KEY_LOCATION/keyRings/KEY_RING/cryptoKeys/KEY_NAME
      whenUnsatisfiable: ScaleUpAnyway
      nodePoolAutoCreation:
        enabled: true
    

    Sostituisci quanto segue:

    • KEY_PROJECT_ID: l'ID progetto del progetto che contiene la chiave.
    • KEY_LOCATION: la posizione delle chiavi automatizzate.
    • KEY_RING: il nome delle chiavi automatizzate che contengono la chiave.
    • KEY_NAME: il nome della chiave.
  2. Applica il manifest ComputeClass al cluster:

    kubectl apply -f PATH_TO_COMPUTECLASS_MANIFEST
    

    Sostituisci PATH_TO_COMPUTECLASS_MANIFEST con il percorso del file manifest di ComputeClass.

gcloud

  1. Specifica il campo bootDiskKmsKey nel file di configurazione:

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

    Sostituisci quanto segue:

    • KEY_PROJECT_ID: l'ID progetto del progetto che contiene la chiave.
    • KEY_LOCATION: la posizione delle chiavi automatizzate.
    • KEY_RING: il nome delle chiavi automatizzate che contengono la chiave.
    • KEY_NAME: il nome della chiave.

    Se il file di configurazione contiene altre impostazioni, non modificarle. Eventuali modifiche o rimozioni nel file di configurazione modificano anche le impostazioni corrispondenti a livello di cluster.

  2. Fornisci il file di configurazione a GKE specificando il flag --autoprovisioning-config-file e il flag --enable-autoprovisioning per un cluster nuovo o esistente:

    gcloud container clusters create CLUSTER_NAME \
        --location=CONTROL_PLANE_LOCATION \
        --enable-autoprovisioning \
        --autoprovisioning-config-file=PATH_TO_CONFIGURATION_FILE
    

    Sostituisci quanto segue:

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

Configurare l'integrità dei nodi e l'avvio protetto

Puoi abilitare l'avvio protetto e il monitoraggio dell'integrità per i node pool creati automaticamente solo utilizzando il file di configurazione del provisioning automatico dei nodi.

  1. Specifica il campo shieldedInstanceConfig nel file di configurazione:

    shieldedInstanceConfig:
      enableSecureBoot: true
      enableIntegrityMonitoring: true
    

    Se il file di configurazione contiene altre impostazioni, non modificarle. Eventuali modifiche o rimozioni nel file di configurazione modificano anche le impostazioni corrispondenti a livello di cluster.

  2. Fornisci il file di configurazione a GKE specificando il flag --autoprovisioning-config-file e il flag --enable-autoprovisioning per un cluster nuovo o esistente:

    gcloud container clusters create CLUSTER_NAME \
        --location=CONTROL_PLANE_LOCATION \
        --enable-autoprovisioning \
        --autoprovisioning-config-file=PATH_TO_CONFIGURATION_FILE
    

    Sostituisci quanto segue:

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

Configura la riparazione e l'upgrade automatici dei nodi

Puoi modificare le impostazioni per le riparazioni automatiche dei nodi e gli upgrade automatici dei nodi nei node pool creati automaticamente. Queste funzionalità sono abilitate per impostazione predefinita in tutti i cluster GKE e i pool di nodi. Ti consigliamo di mantenere attive queste funzionalità per migliorare l'affidabilità e la stabilità dei tuoi cluster.

Per modificare le impostazioni di riparazione automatica e upgrade automatico dei nodi, seleziona una delle seguenti opzioni:

ComputeClass

  1. In un manifest ComputeClass, utilizza il campo autoRepair e il campo autoUpgrade nel campo spec.nodePoolConfig. Questi campi sono disponibili in GKE versione 1.34.0-gke.2201000 e successive.

    apiVersion: cloud.google.com/v1
    kind: ComputeClass
    metadata:
      name: COMPUTE_CLASS
    spec:
      nodePoolConfig:
        autoRepair: true
        autoUpgrade: true
      priorities:
      - machineFamily: n4
      - machineFamily: n4d
      whenUnsatisfiable: ScaleUpAnyway
      nodePoolAutoCreation:
        enabled: true
    
  2. Applica il manifest ComputeClass al cluster:

    kubectl apply -f PATH_TO_COMPUTECLASS_MANIFEST
    

    Sostituisci PATH_TO_COMPUTECLASS_MANIFEST con il percorso del file manifest di ComputeClass.

gcloud

  • Per attivare le impostazioni di riparazione automatica e upgrade automatico dalla riga di comando, utilizza i flag --enable-autoprovisioning-autorepair e --enable-autoprovisioning-autoupgrade:

    gcloud container clusters update CLUSTER_NAME \
        --location=CONTROL_PLANE_LOCATION \
        --enable-autoprovisioning \
        --enable-autoprovisioning-autorepair \
        --enable-autoprovisioning-autoupgrade
    
  • Per disattivare le impostazioni di riparazione automatica e upgrade automatico dalla riga di comando, utilizza i flag --no-enable-autoprovisioning-autorepair e --no-enable-autoprovisioning-autoupgrade:

    gcloud container clusters update CLUSTER_NAME \
        --location=CONTROL_PLANE_LOCATION \
        --enable-autoprovisioning \
        --no-enable-autoprovisioning-autorepair \
        --no-enable-autoprovisioning-autoupgrade
    
  • Per modificare le impostazioni per la riparazione e l'upgrade automatici dei nodi utilizzando un file di configurazione:

    1. Specifica i campi management.autoRepair e management.autoUpgrade nel file di configurazione:

      management:
        autoRepair: true
        autoUpgrade: true
      

      Se il file di configurazione contiene altre impostazioni, non modificarle. Eventuali modifiche o rimozioni nel file di configurazione modificano anche le impostazioni corrispondenti a livello di cluster.

    2. Fornisci il file di configurazione a GKE specificando il flag --autoprovisioning-config-file e il flag --enable-autoprovisioning per un cluster nuovo o esistente:

      gcloud container clusters create CLUSTER_NAME \
          --location=CONTROL_PLANE_LOCATION \
          --enable-autoprovisioning \
          --autoprovisioning-config-file=PATH_TO_CONFIGURATION_FILE
      

      Sostituisci quanto segue:

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

Configurare le impostazioni di upgrade con picco

Puoi specificare le impostazioni di upgrade inatteso nei node pool creati automaticamente. Gli upgrade inattivi sono la strategia di upgrade dei nodi GKE predefinita. Per modificare le impostazioni di upgrade rapido, devi configurare il provisioning automatico dei nodi a livello di cluster.

  • Per specificare le impostazioni di upgrade inattivo nella riga di comando, utilizza i flag --autoprovisioning-max-surge-upgrade e --autoprovisioning-max-unavailable-upgrade:

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

    Sostituisci quanto segue:

    • 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.
  • Per specificare le impostazioni di upgrade in caso di picco utilizzando un file di configurazione:

    1. Specifica i campi upgradeSettings.maxSurgeUpgrade e upgradeSettings.maxUnavailableUpgrade nel file di configurazione:

      upgradeSettings:
        maxSurgeUpgrade: MAX_SURGE
        maxUnavailableUpgrade: MAX_UNAVAILABLE
      

      Se il file di configurazione contiene altre impostazioni, non modificarle. Eventuali modifiche o rimozioni nel file di configurazione modificano anche le impostazioni corrispondenti a livello di cluster.

    2. Fornisci il file di configurazione a GKE specificando il flag --autoprovisioning-config-file e il flag --enable-autoprovisioning per un cluster nuovo o esistente:

      gcloud container clusters create CLUSTER_NAME \
          --location=CONTROL_PLANE_LOCATION \
          --enable-autoprovisioning \
          --autoprovisioning-config-file=PATH_TO_CONFIGURATION_FILE
      

      Sostituisci quanto segue:

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

Le impostazioni di upgrade controllato che specifichi vengono applicate solo se il cluster utilizza gli upgrade controllati per eseguire l'upgrade dei node pool creati automaticamente. Per passare alla strategia di upgrade dei nodi con upgrade in blocco per i nuovi node pool creati automaticamente, esegui questo comando:

gcloud container clusters update CLUSTER_NAME \
    --location=CONTROL_PLANE_LOCATION \
    --enable-autoprovisioning \
    --enable-autoprovisioning-surge-upgrade

Quando cambi la strategia di upgrade, GKE utilizza le impostazioni che hai configurato in precedenza per quella strategia di upgrade.

Utilizzare gli upgrade blu/verde per i nuovi node pool creati automaticamente

Puoi passare alla strategia di upgrade dei nodi blue-green per tutti i nuovi pool di nodi creati automaticamente e ottimizzare le impostazioni predefinite per gli upgrade blue-green. Per modificare la strategia di upgrade, devi configurare il provisioning automatico dei nodi a livello di cluster. Le modifiche che apporti si applicano solo ai nuovi pool di nodi creati automaticamente. Puoi anche aggiornare i pool di nodi esistenti creati automaticamente per utilizzare gli upgrade blue-green.

  • Per utilizzare gli upgrade blue-green e le impostazioni predefinite di GKE per i nuovi pool di nodi creati automaticamente, esegui il seguente comando:

    gcloud container clusters update CLUSTER_NAME \
        --location=CONTROL_PLANE_LOCATION
        --enable-autoprovisioning \
        --enable-autoprovisioning-blue-green-upgrade
    
  • Per utilizzare gli upgrade blue-green e configurare le tue impostazioni predefinite per i nuovi pool di nodi creati automaticamente, esegui questo comando:

    gcloud container clusters update CLUSTER_NAME \
        --location=CONTROL_PLANE_LOCATION \
        --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
    

    Sostituisci quanto segue:

    • NODE_POOL_SOAK_DURATION: la durata, in secondi, per cui GKE attende dopo lo svuotamento di tutti i batch di nodi nel pool blu prima di eliminare il pool blu. Il valore predefinito è 3600.
    • BATCH_NODE_COUNT: il numero di nodi da svuotare in un batch durante la fase di svuotamento del pool blu. Il valore predefinito è 1. Se specifichi un valore di 0, GKE salta la fase di svuotamento del pool blu.
    • BATCH_SOAK_DURATION: la durata, in secondi, per cui GKE attende di avviare un'operazione di svuotamento batch dopo il completamento dell'operazione di svuotamento precedente. Il valore predefinito è 0.

Configura dischi di avvio dei nodi personalizzati

Per specificare il tipo e la dimensione dei dischi di avvio che GKE collega a ogni VM nodo in un pool di nodi creato automaticamente, seleziona una delle seguenti opzioni:

ComputeClass

  1. Utilizza i campi bootDiskType e bootDiskSize nel campo spec.priorities.storage in un ComputeClass:

    apiVersion: cloud.google.com/v1
    kind: ComputeClass
    metadata:
      name: COMPUTE_CLASS
    spec:
      priorities:
      - machineFamily: n4
        storage:
          bootDiskType: BOOT_DISK_TYPE
          bootDiskSize: BOOT_DISK_SIZE
      - machineFamily: n4d
        storage:
          bootDiskType: BOOT_DISK_TYPE
          bootDiskSize: BOOT_DISK_SIZE
      whenUnsatisfiable: ScaleUpAnyway
      nodePoolAutoCreation:
        enabled: true
    

    Sostituisci quanto segue:

    • BOOT_DISK_TYPE: il tipo di disco da utilizzare come disco di avvio del nodo. Il valore specificato deve essere supportato dal tipo di macchina Compute Engine utilizzato da GKE per questa regola di priorità. Il valore deve essere uno dei seguenti:
      • pd-balanced: Persistent Disk bilanciato.
      • pd-standard: Persistent Disk standard.
      • pd-ssd: Persistent Disk (SSD) prestazionale.
      • hyperdisk-balanced: Google Cloud Hyperdisk bilanciato.
    • BOOT_DISK_SIZE: le dimensioni, in GiB, del disco di avvio del nodo. Il valore minimo è 10.
  2. Applica il manifest ComputeClass al cluster:

    kubectl apply -f PATH_TO_COMPUTECLASS_MANIFEST
    

    Sostituisci PATH_TO_COMPUTECLASS_MANIFEST con il percorso del file manifest di ComputeClass.

gcloud

  1. Nel file di configurazione, specifica i campi diskSizeGb e diskType:

    diskSizeGb: BOOT_DISK_SIZE
    diskType: BOOT_DISK_TYPE
    

    Sostituisci quanto segue:

    • BOOT_DISK_TYPE: il tipo di disco da utilizzare come disco di avvio del nodo. Il valore specificato deve essere supportato dal tipo di macchina Compute Engine utilizzato da GKE per questa regola di priorità. Il valore deve essere uno dei seguenti:
      • pd-balanced: Persistent Disk bilanciato.
      • pd-standard: Persistent Disk standard.
      • pd-ssd: Persistent Disk (SSD) prestazionale.
      • hyperdisk-balanced: Google Cloud Hyperdisk bilanciato.
    • BOOT_DISK_SIZE: le dimensioni, in GiB, del disco di avvio del nodo. Il valore minimo è 10.

    Se il file di configurazione contiene altre impostazioni, non modificarle. Eventuali modifiche o rimozioni nel file di configurazione modificano anche le impostazioni corrispondenti a livello di cluster.

  2. Fornisci il file di configurazione a GKE specificando il flag --autoprovisioning-config-file e il flag --enable-autoprovisioning per un cluster nuovo o esistente:

    gcloud container clusters create CLUSTER_NAME \
        --location=CONTROL_PLANE_LOCATION \
        --enable-autoprovisioning \
        --autoprovisioning-config-file=PATH_TO_CONFIGURATION_FILE
    

    Sostituisci quanto segue:

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

GKE riserva una parte del disco di avvio del nodo per la funzionalità di sistema e per lo spazio di archiviazione temporaneo. Per saperne di più, consulta Spazio di archiviazione temporaneo supportato dal disco di avvio del nodo.

Configura i pool di nodi creati automaticamente per gli scenari comuni

Le seguenti sezioni mostrano come richiedere node pool creati automaticamente per alcuni casi d'uso comuni di GKE. Per ulteriori informazioni su casi d'uso aggiuntivi e configurazioni supportate, consulta la documentazione relativa al tuo caso d'uso specifico.

Seleziona una serie di macchine o un tipo di macchina

Per selezionare una serie o un tipo di macchina Compute Engine supportati, seleziona una delle seguenti opzioni:

ComputeClass

  1. In un manifest ComputeClass, specifica uno dei seguenti campi nel campo spec.priorities. Puoi specificare entrambi questi campi nello stesso manifest ComputeClass, ma non nella stessa regola di priorità.

    • Per selezionare una serie di macchine, specifica il campo machineFamily in una regola di priorità:

      apiVersion: cloud.google.com/v1
      kind: ComputeClass
      metadata:
        name: COMPUTE_CLASS
      spec:
        priorities:
        - machineFamily: MACHINE_SERIES
        whenUnsatisfiable: ScaleUpAnyway
        nodePoolAutoCreation:
          enabled: true
      

      Sostituisci MACHINE_SERIES con una serie di macchine Compute Engine, ad esempio n4.

    • Per selezionare un tipo di macchina, specifica il campo machineType in una regola di priorità:

      apiVersion: cloud.google.com/v1
      kind: ComputeClass
      metadata:
        name: COMPUTE_CLASS
      spec:
        priorities:
        - machineType: MACHINE_TYPE
        whenUnsatisfiable: ScaleUpAnyway
        nodePoolAutoCreation:
          enabled: true
      

      Sostituisci MACHINE_TYPE con un tipo di macchina Compute Engine, ad esempio c4-standard-96. In GKE versione 1.33.2-gke.1111000 e successive, puoi anche specificare tipi di macchine personalizzati in questo campo.

    Non puoi specificare il campo machineFamily e il campo machineType nella stessa regola di priorità.

  2. Applica il manifest ComputeClass al cluster:

    kubectl apply -f PATH_TO_COMPUTECLASS_MANIFEST
    

    Sostituisci PATH_TO_COMPUTECLASS_MANIFEST con il percorso del file manifest di ComputeClass.

  3. Seleziona ComputeClass in un carico di lavoro.

Specifica pod

  1. In un manifest del pod, seleziona una delle seguenti etichette del nodo:

    • Per selezionare una serie di macchine, utilizza l'etichetta del nodo cloud.google.com/machine-family:

      apiVersion: v1
      kind: Pod
      metadata:
        name: machine-series-pod
      spec:
        nodeSelector:
          cloud.google.com/machine-family: MACHINE_SERIES
        containers:
        - name: hello-app
          image: us-docker.pkg.dev/google-samples/containers/gke/hello-app:1.0
      

      Sostituisci MACHINE_SERIES con una serie di macchine Compute Engine, ad esempio n4.

    • Per selezionare un tipo di macchina predefinita, utilizza le etichette dei nodi cloud.google.com/machine-family e node.kubernetes.io/instance-type:

      apiVersion: v1
      kind: Pod
      metadata:
        name: machine-series-pod
      spec:
        nodeSelector:
          cloud.google.com/machine-family: MACHINE_SERIES
          node.kubernetes.io/instance-type: MACHINE_TYPE
        containers:
        - name: hello-app
          image: us-docker.pkg.dev/google-samples/containers/gke/hello-app:1.0
      

      Sostituisci MACHINE_TYPE con un tipo di macchina Compute Engine nella serie di macchine specificata. Ad esempio, se specifichi n4 per MACHINE_SERIES, puoi specificare n4-standard-80 per MACHINE_TYPE.

      Nella versione GKE 1.33.2-gke.1111000, puoi anche specificare tipi di macchine personalizzate in questo campo.

  2. Crea il pod:

    kubectl apply -f PATH_TO_POD_MANIFEST
    

    Sostituisci PATH_TO_POD_MANIFEST con il percorso del manifest di Pod.

Seleziona le GPU

Per richiedere GPU per i node pool creati automaticamente, seleziona una delle seguenti opzioni:

ComputeClass

  1. In un manifest ComputeClass, specifica il campo spec.priorities.gpu:

    apiVersion: cloud.google.com/v1
    kind: ComputeClass
    metadata:
      name: COMPUTE_CLASS
    spec:
      priorities:
      - gpu:
          type: GPU_TYPE
          count: GPU_COUNT
          driverVersion: DRIVER_VERSION
      whenUnsatisfiable: DoNotScaleUp
      nodePoolAutoCreation:
        enabled: true
    

    Sostituisci quanto segue:

    • GPU_TYPE: il tipo di GPU da collegare, ad esempio nvidia-l4.
    • GPU_COUNT: il numero di GPU da collegare a ogni nodo. Questo valore deve essere almeno pari a 1.
    • DRIVER_VERSION: la versione del driver GPU da installare. Questo valore deve essere default o latest. Questo campo richiede GKE 1.31.1-gke.1858000 o versioni successive.
  2. Applica il manifest ComputeClass al cluster:

    kubectl apply -f PATH_TO_COMPUTECLASS_MANIFEST
    

    Sostituisci PATH_TO_COMPUTECLASS_MANIFEST con il percorso del file manifest di ComputeClass.

  3. Seleziona ComputeClass in un workload GPU, come nel seguente esempio:

    apiVersion: v1
    kind: Pod
    metadata:
      name: my-gpu-pod
    spec:
      nodeSelector:
        cloud.google.com/compute-class: nvidia-l4-class
      containers:
      - name: my-gpu-container
        image: nvidia/cuda:11.0.3-runtime-ubuntu20.04
        command: ["/bin/bash", "-c", "--"]
        args: ["while true; do sleep 600; done;"]
        resources:
          limits:
          nvidia.com/gpu: 1
    

Specifica pod

Per selezionare le GPU nelle specifiche del pod, devi configurare il provisioning automatico dei nodi a livello di cluster e impostare i limiti delle risorse per quel tipo di GPU. Per configurare i limiti delle risorse GPU e selezionare le GPU nei pod, segui questi passaggi:

  1. Configura i limiti delle risorse a livello di cluster per le GPU che vuoi utilizzare, come descritto nella sezione Configurare i limiti delle risorse per la creazione automatica dei node pool.
  2. Seleziona le GPU utilizzando le etichette dei nodi nella specifica del pod:

    apiVersion: v1
    kind: Pod
    metadata:
      name: my-gpu-pod
    spec:
      nodeSelector:
        cloud.google.com/gke-accelerator: GPU_TYPE
        cloud.google.com/gke-accelerator-count: GPU_COUNT
        cloud.google.com/gke-gpu-driver-version: DRIVER_VERSION
      containers:
      - name: my-gpu-container
        image: nvidia/cuda:11.0.3-runtime-ubuntu20.04
        command: ["/bin/bash", "-c", "--"]
        args: ["while true; do sleep 600; done;"]
        resources:
          limits:
          nvidia.com/gpu: GPU_QUANTITY
    

    Sostituisci quanto segue:

    • GPU_TYPE: il tipo di GPU da collegare, ad esempio nvidia-l4.
    • GPU_COUNT: il numero di GPU da collegare a ogni nodo. Questo valore deve essere almeno pari a 1.
    • DRIVER_VERSION: la versione del driver GPU da installare. Questo valore deve essere default o latest. In GKE versione 1.32.2-gke.1297000 e successive, GKE installa automaticamente la versione del driver default. Questa etichetta del nodo richiede GKE 1.29.2-gke.1108000 o versioni successive. Per saperne di più, vedi Installazione dei driver utilizzando il provisioning automatico dei nodi con GPU.
    • GPU_QUANTITY: il numero di GPU da collegare al pod. Questo valore deve essere minore o uguale al valore di GPU_COUNT.

Seleziona TPU

Puoi richiedere TPU nelle specifiche di ComputeClass o del pod. Questa sezione presuppone che tu abbia familiarità con la selezione di Cloud TPU e che tu conosca il tipo, la topologia e il conteggio di TPU che vuoi utilizzare. I passaggi da seguire dipendono da come selezioni le TPU:

Limita il tempo di esecuzione dei nodi creati automaticamente

Puoi specificare una durata massima dopo la quale GKE termina i nodi creati automaticamente. A questo limite di tempo si applicano le limitazioni di Compute Engine.

Seleziona una delle seguenti opzioni:

ComputeClass

  1. In un manifest ComputeClass, utilizza il campo spec.priorities.maxRunDurationSeconds. Questo campo è disponibile in GKE versione 1.32.1-gke.1159000 e successive.

    apiVersion: cloud.google.com/v1
    kind: ComputeClass
    metadata:
      name: COMPUTE_CLASS
    spec:
      priorities:
      - machine-family: n4
        maxRunDurationSeconds: MAX_RUN_DURATION
      whenUnsatisfiable: DoNotScaleUp
      nodePoolAutoCreation:
        enabled: true
    

    Sostituisci MAX_RUN_DURATION con il tempo, in secondi, durante il quale i nodi creati automaticamente possono essere eseguiti prima che GKE li termini.

  2. Applica il manifest ComputeClass al cluster:

    kubectl apply -f PATH_TO_COMPUTECLASS_MANIFEST
    

    Sostituisci PATH_TO_COMPUTECLASS_MANIFEST con il percorso del file manifest di ComputeClass.

  3. Seleziona ComputeClass in un carico di lavoro.

Specifica pod

  1. Nel manifest del pod, utilizza un selettore di nodi per l'etichetta del nodo cloud.google.com/gke-max-run-duration-seconds. Questa etichetta del nodo è disponibile in GKE versione 1.31.2-gke.1518000 e successive.

    apiVersion: v1
    kind: Pod
    metadata:
      name: machine-series-pod
    spec:
      nodeSelector:
        cloud.google.com/machine-family: n4
        cloud.google.com/gke-max-run-duration-seconds: MAX_RUN_DURATION
      containers:
      - name: hello-app
        image: us-docker.pkg.dev/google-samples/containers/gke/hello-app:1.0
    

    Sostituisci MAX_RUN_DURATION con il tempo, in secondi, durante il quale i nodi creati automaticamente possono essere eseguiti prima che GKE li termini.

  2. Crea il pod:

    kubectl apply -f PATH_TO_POD_MANIFEST
    

    Sostituisci PATH_TO_POD_MANIFEST con il percorso del manifest di Pod.

Specifica una 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 carico di lavoro (opzione consigliata) o a livello di cluster.

Disabilita la creazione automatica del pool di nodi

Le sezioni seguenti mostrano come disattivare la creazione automatica di pool di nodi per pool di nodi specifici o per l'intero cluster. Puoi anche disattivare la creazione automatica del pool di nodi in una ComputeClass specificando un valore di false nel campo nodePoolAutoCreation.enabled di ComputeClass. Tuttavia, non ti consigliamo di disattivare la creazione automatica per ComputeClass, perché è uno dei principali vantaggi di ComputeClass, che ti consente di utilizzare funzionalità come la migrazione attiva e le priorità di failover.

Disabilitare la creazione automatica per node pool specifici

Puoi impedire a GKE di gestire i nodi nei node pool esistenti creati automaticamente. Questa azione ha i seguenti effetti:

  • Il gestore della scalabilità automatica del cluster interrompe la creazione o l'eliminazione dei nodi nel pool di nodi. Se vuoi che GKE esegua la scalabilità automatica dei nodi, puoi abilitare separatamente il gestore della scalabilità automatica dei cluster per quel node pool.
  • GKE non elimina il pool di nodi quando il numero di nodi è zero.
  • GKE continua a posizionare i pod in attesa sui nodi esistenti nel pool di nodi che hanno disponibilità. Se il provisioning automatico dei nodi è ancora abilitato per il cluster, GKE può anche creare nuovi node pool per i pod in attesa in base alle esigenze.

Per disattivare la creazione automatica per un pool di nodi specifico, esegui questo comando:

gcloud container node-pools update NODE_POOL_NAME \
    --cluster=CLUSTER_NAME \
    --location=CONTROL_PLANE_LOCATION \
    --no-enable-autoprovisioning

Disabilita il provisioning automatico dei nodi per il cluster

Puoi disabilitare la creazione automatica dei pool di nodi per l'intero cluster disattivando l'impostazione del cluster di provisioning automatico dei nodi. Questa azione ha i seguenti effetti:

  • Il gestore della scalabilità automatica dei cluster interrompe la creazione e l'eliminazione di nodi nei node pool esistenti creati automaticamente. I pool di nodi creati manualmente che utilizzano il gestore della scalabilità automatica dei cluster non sono interessati.
  • GKE non crea automaticamente nuovi node pool per i workload in attesa. Monitora il cluster per evitare pod bloccati.
  • Se il cluster soddisfa i seguenti requisiti, GKE continua a creare nuovi node pool per le ComputeClass che consentono la creazione automatica:

    • Utilizza GKE 1.33.3-gke.1136000 o versioni successive.
    • È registrato nel canale di rilascio rapido.

    Se il cluster non soddisfa questi requisiti, GKE non crea nuovi node pool per le ComputeClass che consentono la creazione automatica.

Se riattivi l'impostazione di provisioning automatico dei nodi a livello di cluster in un secondo momento, GKE non riattiva la creazione automatica pool di nodi nei node pool esistenti. Devi contrassegnare i singoli node pool come creati automaticamente.

Per disattivare l'impostazione di provisioning automatico dei nodi a livello di cluster, seleziona una delle seguenti opzioni:

Console

  1. Nella console Google Cloud , vai alla pagina Cluster Kubernetes:

    Vai ai cluster Kubernetes

  2. Fai clic sul nome del cluster da modificare. Viene visualizzata la pagina Dettagli cluster.

  3. Fai clic sulla scheda Dettagli.

  4. Nella sezione Automazione, nella riga Provisioning automatico dei nodi, fai clic su Modifica. Viene visualizzato il riquadro Modifica provisioning automatico dei nodi.

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

  6. Fai clic su Salva modifiche.

gcloud

gcloud container clusters update CLUSTER_NAME \
    --location=CONTROL_PLANE_LOCATION \
    --no-enable-autoprovisioning

Passaggi successivi