Utilizzo del provisioning automatico dei nodi


Questa pagina spiega come utilizzare il provisioning automatico dei nodi nei cluster Google Kubernetes Engine (GKE) standard.

Con i cluster Autopilot, non devi preoccuparti del provisioning dei nodi o della gestione dei pool di nodi, in quanto il provisioning dei pool di nodi viene eseguito automaticamente tramite il provisioning automatico dei nodi e viene scalato automaticamente per soddisfare i requisiti dei carichi di lavoro.

Panoramica

Il provisioning automatico dei nodi gestisce automaticamente un insieme di pool di nodi per conto dell'utente. Senza il provisioning automatico dei nodi, GKE avvia nuovi nodi solo dai pool di nodi creati dall'utente. Con il provisioning automatico dei nodi, vengono creati ed eliminati automaticamente nuovi pool di nodi.

Prima di iniziare

Prima di iniziare, assicurati di aver eseguito le seguenti attività:

  • Assicurati di aver abilitato l'API Google Kubernetes Engine.
  • Abilita l'API Google Kubernetes Engine
  • Assicurati di aver installato l'interfaccia a riga di comando di Google Cloud.
  • Configura le impostazioni dell'interfaccia a riga di comando di Google Cloud predefinite per il tuo progetto utilizzando uno dei seguenti metodi:
    • Utilizza gcloud init se vuoi avere istruzioni dettagliate sull'impostazione delle impostazioni predefinite del progetto.
    • Utilizza gcloud config per impostare singolarmente l'ID, la zona e l'area geografica del progetto.

    gcloud init

    1. Esegui gcloud init e segui le istruzioni:

      gcloud init

      Se utilizzi SSH su un server remoto, usa il flag --console-only per impedire l'avvio del comando da parte di un browser:

      gcloud init --console-only
    2. Segui le istruzioni per autorizzare l'interfaccia a riga di comando gcloud a utilizzare il tuo account Google Cloud.
    3. Crea una nuova configurazione o selezionane una esistente.
    4. Scegli un progetto Google Cloud.
    5. Scegli una zona Compute Engine predefinita.
    6. Scegli un'area geografica di Compute Engine predefinita.

    gcloud config

    1. Imposta l'ID progetto predefinito:
      gcloud config set project PROJECT_ID
    2. Imposta l'area geografica di Compute Engine predefinita (ad esempio us-central1):
      gcloud config set compute/region COMPUTE_REGION
    3. Imposta la zona Compute Engine predefinita (ad esempio us-central1-c):
      gcloud config set compute/zone COMPUTE_ZONE
    4. Aggiorna gcloud alla versione più recente:
      gcloud components update

    Impostando le posizioni predefinite puoi evitare errori nell'interfaccia a riga di comando gcloud come One of [--zone, --region] must be supplied: Please specify location:

Requisiti

Il provisioning automatico dei nodi è disponibile nelle seguenti release di GKE:

  • Versione 1.11.2-gke.25 e successive per cluster di zona.
  • Versione 1.12.x e successive per i cluster a livello di area geografica.

Funzionalità non supportate

Le seguenti funzionalità non sono supportate dal provisioning automatico dei nodi, il che significa che il provisioning automatico dei nodi non esegue il provisioning dei pool di nodi con queste funzionalità, ma consente di scalare automaticamente i pool di nodi esistenti:

Operazione

Il provisioning automatico dei nodi è un meccanismo del scalatore automatico dei cluster, che scala in base al pool di nodi. Con il provisioning automatico dei nodi abilitato, il gestore della scalabilità automatica dei cluster può estendere automaticamente i pool di nodi in base alle specifiche dei pod non pianificabili.

Il provisioning automatico dei nodi crea pool di nodi basati sulle seguenti informazioni:

Limiti delle risorse

Il provisioning automatico dei nodi e il gestore della scalabilità automatica dei cluster hanno limiti a due livelli:

  • Livello pool di nodi
  • Livello cluster

Limiti per i pool di nodi

I pool di nodi creati dal provisioning automatico dei nodi sono limitati a 1000 nodi.

Limiti per i cluster

I limiti che definisci vengono applicati in base alle risorse totali di CPU e memoria utilizzate nel cluster, non solo ai pool di cui è stato eseguito il provisioning automatico.

Il gestore della scalabilità automatica dei cluster non crea nuovi nodi se ciò supererebbe il limite definito. Se i limiti sono già stati superati, i nodi non vengono eliminati automaticamente.

Separazione dei carichi di lavoro

Se i pod in attesa presentano affinità e tolleranze, il provisioning automatico dei nodi può eseguire il provisioning dei nodi con etichette e incompatibilità corrispondenti.

Il provisioning automatico dei nodi potrebbe creare pool di nodi con etichette e incompatibilità se vengono soddisfatte tutte le seguenti condizioni:

  • Un pod in attesa richiede un nodo con una chiave e un valore di etichetta specifici.
  • Il pod ha una tolleranza per un'incompatibilità con la stessa chiave.
  • La tolleranza è relativa all'effetto NoSchedule, all'effetto NoExecute o a tutti gli effetti.

La specifica dei pod può indicare che richiede nodi con etichette specifiche in due modi:

  • Utilizzando un campo nodeSelector.
  • Utilizzare un campo nodeAffinity con un operatore In e esattamente un valore.

L'esempio seguente è un estratto di una specifica del pod interpretata come una richiesta di separazione del carico di lavoro. In questo esempio, l'amministratore del cluster ha scelto dedicated come chiave che verrà utilizzata per l'isolamento dei carichi di lavoro e il team UI ha stabilito che sono necessari nodi dedicati per i suoi carichi di lavoro.

Il pod ha una tolleranza per i nodi etichettati con dedicated=ui-team e utilizza nodeAffinity per la selezione dei nodi:

spec:
  tolerations:
  - key: dedicated
    operator: Equal
    value: ui-team
    effect: NoSchedule
  affinity:
    nodeAffinity:
      requiredDuringSchedulingIgnoredDuringExecution:
        nodeSelectorTerms:
        - matchExpressions:
          - key: dedicated
            operator: In
            values:
            - ui-team

Se esiste questo pod, i nodi con incompatibilità dedicated=ui-team:NoSchedule ed etichetta dedicated=ui-team vengono presi in considerazione per la creazione mediante il provisioning automatico dei nodi.

L'esempio seguente utilizza nodeSelector e ha lo stesso effetto:

spec:
  tolerations:
  - key: dedicated
    operator: Equal
    value: ui-team
    effect: NoSchedule
  nodeSelector:
    dedicated: ui-team

Eliminazione dei pool di nodi di cui è stato eseguito il provisioning automatico

Se non sono presenti nodi in un pool di nodi di cui è stato eseguito il provisioning automatico, GKE elimina il pool di nodi. I pool di nodi non contrassegnati come provisioning automatico non vengono eliminati.

Tipi di macchine supportati

A partire dalla versione 1.19.7-gke.800 di GKE, il provisioning automatico dei nodi considera tutti i tipi di macchine durante la creazione dei pool di nodi, con le seguenti eccezioni:

  • La famiglia di macchine T2D è supportata in GKE versione 1.19.16-gke.7600 e successive.
  • Per le macchine N1, il provisioning automatico dei nodi considera solo le macchine con un massimo di 64 vCPU.
  • Per impostazione predefinita viene utilizzata la famiglia di macchine E2, a meno che:
    • Il carico di lavoro richiede una funzionalità che non è disponibile nella famiglia di macchine E2. Ad esempio, se il carico di lavoro richiede una GPU, la famiglia di macchine N1 verrà utilizzata per il nuovo pool di nodi.
    • Il carico di lavoro utilizza l'etichetta machine-family. Potrebbero essere sostituiti se la richiesta del carico di lavoro non può essere soddisfatta (come dimostrato dal punto precedente). Per ulteriori informazioni, consulta Utilizzo di una famiglia di macchine personalizzate.

Nelle versioni precedenti a GKE 1.19.7-gke.800, il provisioning automatico dei nodi considera solo tipi di macchine N1 con un massimo di 64 vCPU.

Immagini del nodo supportate

Il provisioning automatico dei nodi crea pool di nodi utilizzando una delle seguenti immagini dei nodi:

  • Container-Optimized OS (cos o cos_containerd).
  • Ubuntu (ubuntu o ubuntu_containerd).

Supporto per VM Spot

Il provisioning automatico dei nodi supporta la creazione di pool di nodi in base alle VM Spot.

La creazione di pool di nodi in base alle VM Spot viene presa in considerazione solo se esistono pod non pianificabili con una tolleranza per l'incompatibilità cloud.google.com/gke-spot="true":NoSchedule. L'incompatibilità viene applicata automaticamente ai nodi in pool di nodi di cui è stato eseguito il provisioning automatico che si basano su VM Spot.

Puoi combinare l'utilizzo della tolleranza con una regola di affinità nodeSelector o nodo per l'etichetta del nodo cloud.google.com/gke-spot="true" per assicurarti che i carichi di lavoro vengano eseguiti solo nei pool di nodi in base alle VM Spot.

Supporto per pod che richiedono archiviazione temporanea

Il provisioning automatico dei nodi supporta la creazione di pool di nodi quando i pod richiedono l'archiviazione temporanea. La dimensione del disco di avvio di cui è stato eseguito il provisioning nei pool di nodi è costante per tutti i nuovi pool di nodi con provisioning automatico. Questa dimensione del disco di avvio può essere personalizzata, dove l'impostazione predefinita è 100 GiB. Lo spazio di archiviazione temporaneo supportato da SSD locali non è supportato.

Il provisioning automatico dei nodi esegue il provisioning di un pool di nodi solo se l'archiviazione temporanea allocabile di un nodo con un disco di avvio specificato è maggiore o uguale alla richiesta di archiviazione temporanea di un pod in attesa. Se la richiesta di archiviazione temporanea è superiore a quanto allocabile, il provisioning automatico dei nodi non esegue il provisioning di un pool di nodi. Le dimensioni del disco per i nodi non sono configurate in modo dinamico in base alle richieste di archiviazione temporanea dei pod in attesa.

Questo supporto temporaneo per l'archiviazione dei pod è supportato nelle versioni di GKE 1.19.7-gke.800 o successive e 1.18.12-gke.1210 o successive.

Limiti di scalabilità

Il provisioning automatico dei nodi ha le stesse limitazioni del scalatore automatico del cluster, nonché le seguenti limitazioni aggiuntive:

Limite al numero di carichi di lavoro separati
Il provisioning automatico dei nodi supporta un massimo di 100 carichi di lavoro separati separati.
Limite al numero di pool di nodi
Il provisioning automatico dei nodi riduce la priorità della creazione di nuovi pool di nodi quando il numero di pool si avvicina a 100. È possibile creare più di 100 pool di nodi, ma è possibile farlo quando crei un pool di nodi.

Abilitazione del provisioning automatico dei nodi

Il provisioning automatico dei nodi viene attivato su un cluster con gcloud o con Google Cloud Console.

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 abilitare 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.
  • MAXIMUM_MEMORY: il numero massimo di gigabyte di memoria nel cluster.

L'esempio seguente consente 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 fino a 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 in Cloud Console.

    Vai a Google Kubernetes Engine

  2. Fai clic sul nome del cluster.

  3. Nella sezione Automazione, per 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 utilizzata per modificare una singola impostazione. È possibile specificare più impostazioni in un singolo 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 e l'upgrade automatici dei nodi per tutti i nuovi pool di nodi creati mediante provisioning automatico dei nodi:

management:
  autoRepair: true
  autoUpgrade: true

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

  • Imposta i limiti delle risorse per CPU, memoria e GPU. Il provisioning automatico dei nodi non crea un nodo se le dimensioni totali del cluster superano i limiti delle risorse specificati.
  • Abilita la riparazione e l'upgrade automatici dei nodi per tutti i nuovi pool di nodi creati dal provisioning automatico dei nodi.
  • Abilita il monitoraggio protetto dell'avvio e dell'integrità per tutti i nuovi pool di nodi creati dal provisioning automatico dei nodi.
  • Imposta la dimensione del disco di avvio su 100 GB per tutti i nuovi pool di nodi creati dal provisioning automatico dei nodi.
resourceLimits:
  -resourceType: 'cpu'
   minimum: 4
   maximum: 10
  -resourceType: 'memory'
   maximum: 64
  -resourceType: 'nvidia-tesla-k80'
   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 possa accedervi.

  2. Applica la configurazione al cluster eseguendo questo 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 ulteriori informazioni, consulta la documentazione di gcloud container clusters update.

Valori predefiniti del provisioning automatico

Il provisioning automatico dei nodi analizza i requisiti dei pod nel cluster per determinare quale tipo di nodi è più adatto ai pod. Tuttavia, alcune impostazioni del pool di nodi non sono specificate direttamente dai pod, ad esempio quelle relative agli upgrade dei nodi. Puoi impostare valori predefiniti per tali impostazioni, che verranno applicati a tutti i nuovi pool di nodi creati.

Impostazione del tipo di immagine nodo predefinito

Puoi specificare il tipo di immagine del nodo da utilizzare per tutti i nuovi pool di nodi di cui è stato eseguito il provisioning automatico utilizzando l'interfaccia a riga di comando gcloud o un file di configurazione. Questa impostazione è disponibile solo per il cluster GKE versione 1.20.6-gke.1800 e successive.

gcloud

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

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.
    • cos: Container-Optimized OS con Docker.
    • ubuntu_containerd: Ubuntu con containerd.
    • ubuntu: Ubuntu con Docker.

File

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

  1. Salva la configurazione YAML:

    resourceLimits:
      - resourceType: 'cpu'
          minimum: 4
          maximum: 10
      - resourceType: 'memory'
          maximum: 64
    autoprovisioningNodePoolDefaults:
      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 di 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 pool di nodi di cui è stato eseguito il provisioning automatico utilizzando l'interfaccia a riga di comando gcloud o tramite un file di configurazione.

gcloud

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

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 dell'account di servizio 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 questo comando:

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

Sostituisci quanto segue:

  • CLUSTER_NAME: il nome del cluster.
  • SCOPE: gli ambiti di 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 del 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

File

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

  serviceAccount: SERVICE_ACCOUNT

Sostituisci SERVICE_ACCOUNT con il nome dell'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 le impostazioni predefinite dell'identità in una posizione a cui gcloud possa accedervi.

  2. Applica la configurazione al cluster eseguendo questo 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 pool di nodi di cui è stato eseguito il provisioning automatico.

Puoi abilitare la crittografia gestita dal cliente per le unità 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 del keyring.
  • KEY_RING: il nome del keyring.
  • KEY_NAME: il nome della chiave.

Per utilizzare un file di configurazione del provisioning automatico:

  1. Crea un file di configurazione specificando una chiave CMEK in una posizione in cui gcloud può accedervi.

  2. Applica la configurazione al cluster eseguendo questo 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 pool di nodi con l'avvio protetto e il monitoraggio dell'integrità abilitati.

Puoi abilitare Avvio protetto e monitoraggio dell'integrità utilizzando un file di configurazione. La seguente configurazione YAML abilita Avvio protetto e disabilita il monitoraggio dell'integrità:

  shieldedInstanceConfig:
    enableSecureBoot: true
    enableIntegrityMonitoring: false

Per utilizzare un file di configurazione del provisioning automatico:

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

  2. Applica la configurazione al cluster eseguendo questo 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 e upgrade automatici dei nodi

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

gcloud

Per abilitare la riparazione automatica e l'upgrade automatico 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 disabilitare la riparazione e l'upgrade automatici per tutti i nuovi pool di nodi di cui è stato eseguito il provisioning automatico, esegui il comando seguente:

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

Sostituisci CLUSTER_NAME con il nome del cluster.

File

Puoi abilitare o disabilitare la riparazione automatica dei nodi e l'upgrade automatico usando un file di configurazione. La seguente configurazione YAML consente la riparazione automatica e disabilita l'upgrade automatico:

  management:
    autoRepair: true
    autoUpgrade: false

Per utilizzare un file di configurazione del provisioning automatico:

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

  2. Applica la configurazione al cluster eseguendo questo 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.

Impostazioni degli upgrade di sovraccarico dei nodi

Puoi specificare le impostazioni di upgrade di sovraccarico per tutti i nuovi pool di nodi di cui è stato eseguito il provisioning automatico tramite l'interfaccia a riga di comando gcloud o un file di configurazione.

gcloud

Per specificare le impostazioni di upgrade di sovraccarico per tutti i nuovi pool di nodi di cui è stato eseguito il provisioning automatico, esegui il comando seguente:

gcloud container clusters update CLUSTER_NAME \
    --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 che possono essere non disponibili contemporaneamente durante gli upgrade.

File

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

  upgradeSettings:
    maxSurgeUpgrade: 1
    maxUnavailableUpgrade: 2

Per utilizzare un file di configurazione del provisioning automatico:

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

  2. Applica la configurazione al cluster eseguendo questo 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 ulteriori informazioni, consulta la documentazione di gcloud container clusters update.

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. La seguente configurazione YAML determina il provisioning automatico dei nodi per creare pool di nodi con dischi SSD da 100 GB:

  diskSizeGb: 100
  diskType: pd-ssd

Specifica quanto segue:

  • diskSizeGb: la dimensione del disco, specificata in GB.
  • diskType: il tipo di disco, che può essere uno dei seguenti valori:
    • pd-balanced (valore predefinito)
    • pd-standard
    • pd-ssd

Per utilizzare un file di configurazione del provisioning automatico:

  1. Crea un file con la configurazione del disco di avvio desiderato in una posizione in cui gcloud possa accedervi.

  2. Applica la configurazione al cluster eseguendo questo 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.

Configurazione dei limiti della GPU

Quando utilizzi il provisioning automatico dei nodi con GPU, puoi impostare il limite massimo per ogni tipo di GPU nel cluster utilizzando l'interfaccia a riga di comando gcloud o Google Cloud Console. Per configurare più tipi di GPU, devi utilizzare un file di configurazione.

Per elencare le risorse di tipo 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-k80 nel cluster dev-cluster:

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

File

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-k80'
     maximum: 4
    -resourceType: 'nvidia-tesla-v100'
     maximum: 2

Per utilizzare un file di configurazione del provisioning automatico:

  1. Copia la configurazione riportata sopra in un file in una posizione a cui gcloud può accedervi. Modifica i valori per cpu e memory. Aggiungi per resourceType tutti i valori che vuoi. Salva il file.

  2. Applica la configurazione al cluster eseguendo questo 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 ulteriori informazioni, consulta la documentazione di gcloud container clusters update.

Console

Per abilitare il provisioning automatico dei nodi con le risorse GPU, procedi nel seguente modo:

  1. Vai alla pagina Google Kubernetes Engine in Cloud Console.

    Vai a Google Kubernetes Engine

  2. Fai clic sul nome del cluster.

  3. Nella sezione Automazione, per 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 TESLA K80) che vuoi aggiungere. Imposta il numero minimo e massimo di GPU che vuoi aggiungere al cluster.

  8. Accetta le limitazioni delle GPU in GKE.

  9. Fai clic su Salva modifiche.

Località di provisioning automatico dei nodi

Puoi impostare le zone in cui il provisioning automatico dei nodi può creare nuovi pool di nodi. Le località a livello di area geografica non sono supportate. Le zone devono appartenere alla stessa area geografica del cluster, ma non sono limitate alle località dei nodi definite a livello di cluster. La modifica delle località di 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 pool di nodi, 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,...).

Disattivazione del provisioning automatico dei nodi

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

gcloud

Per disabilitare il provisioning automatico dei nodi per un cluster, esegui il comando seguente:

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

Sostituisci CLUSTER_NAME con il nome del cluster.

Console

Per disabilitare il provisioning automatico dei nodi utilizzando Google Cloud Console:

  1. Vai alla pagina Google Kubernetes Engine in Cloud Console.

    Vai a Google Kubernetes Engine

  2. Fai clic sul nome del cluster.

  3. Nella sezione Automazione, per 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.

Contrassegnazione del pool di nodi come eseguito automaticamente

Dopo aver attivato il provisioning automatico dei nodi nel cluster, puoi specificare quali pool di nodi sono stati sottoposti a provisioning automatico. Il pool di nodi di cui è stato eseguito il provisioning automatico viene eliminato automaticamente quando non viene utilizzato da alcun carico di lavoro.

Per contrassegnare un pool di nodi come con 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.

Contrassegnazione del pool di nodi come non eseguito automaticamente

Per contrassegnare un pool di nodi come non eseguito automaticamente, esegui il comando seguente:

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

Sostituisci NODE_POOL_NAME con il nome del pool di nodi.

Utilizzare una famiglia di macchine personalizzata

A partire da GKE versione 1.19.7-gke.800, puoi scegliere una famiglia di macchine per i tuoi carichi di lavoro. La famiglia di macchine T2D è supportata in GKE versione 1.22 e successive.

Per scegliere una famiglia di macchine per i carichi di lavoro, esegui una delle seguenti attività:

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

Ecco un esempio che imposta nodeAffinity su una famiglia di macchine 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 famiglia di macchine specificata. Se per l'espressione di corrispondenza vengono utilizzati più valori, verrà scelto arbitrariamente un valore.

Piattaforma CPU minima

Il provisioning automatico dei nodi supporta la creazione di pool di nodi con una piattaforma CPU minima specificata. Puoi specificare la piattaforma minima della CPU a livello di carico di lavoro (consigliato) o di cluster.

Seleziona una piattaforma CPU minima a livello di carico di lavoro

A partire dalla versione 1.23 di GKE, puoi scegliere una piattaforma CPU minima per i tuoi carichi di lavoro.

Per scegliere una piattaforma CPU minima per i carichi di lavoro, specifica una famiglia di macchine compatibile con la piattaforma CPU minima che desideri ed esegui una delle seguenti attività:

  • Aggiungi una regola di affinità nodo con la chiave cloud.google.com/requested-min-cpu-platform, l'operatore In e un valore minimo previsto per la piattaforma CPU con spazi sostituiti da trattini bassi (ad esempio,AMD_Milan).
  • Aggiungi un elemento nodeSelector con la chiave cloud.google.com/requested-min-cpu-platform e il valore minimo della piattaforma CPU desiderato con spazi sostituiti con trattini bassi (ad esempio,AMD_Milan).

L'esempio seguente imposta nodeAffinity sulla piattaforma CPU minima AMD Milan della famiglia n2d:

spec:
  affinity:
    nodeAffinity:
      requiredDuringSchedulingIgnoredDuringExecution:
        nodeSelectorTerms:
        - matchExpressions:
          - key: cloud.google.com/machine-family
            operator: In
            values:
            - n2d
          - key: cloud.google.com/requested-min-cpu-platform
            operator: In
            values:
            - AMD_Milan

I carichi di lavoro che richiedono una piattaforma CPU minima possono essere pianificati solo su pool di nodi di cui è stato eseguito il provisioning automatico con lo stesso valore per la chiave cloud.google.com/requested-min-cpu-platform. Ad esempio, se un carico di lavoro richiede cloud.google.com/requested-min-cpu-platform=Intel_Ice_Lake e il provisioning automatico dei nodi crea un nuovo pool di nodi, GKE pianifica i carichi di lavoro successivi che richiedono Intel_Ice_Lake su quel pool di nodi. Tuttavia, un carico di lavoro che richiede Intel_Cascade_Lake attiverà la creazione di un altro pool di nodi, anche se Intel Ice Lake è tecnicamente una piattaforma superiore a Intel Cascade Lake.

Seleziona una piattaforma CPU minima a livello di cluster

Puoi specificare la piattaforma predefinita per la CPU minima a livello di cluster per i nuovi pool di nodi di cui è stato eseguito il provisioning automatico tramite l'interfaccia a riga di comando gcloud o un file di configurazione.

gcloud

Per impostare la piattaforma minima predefinita per la CPU, esegui il comando seguente:

gcloud container clusters update CLUSTER_NAME \
  --enable-autoprovisioning \
  --autoprovisioning-min-cpu-platform MIN_CPU_PLATFORM

Sostituisci quanto segue:

File

Per impostare la piattaforma minima predefinita per la CPU, puoi utilizzare un file di configurazione. La seguente configurazione YAML imposta la piattaforma CPU minima predefinita:

minCpuPlatform: MIN_CPU_PLATFORM

Sostituisci MIN_CPU_PLATFORM con la piattaforma CPU minima desiderata.

Per utilizzare un file di configurazione del provisioning automatico:

  1. Crea un file di configurazione specificando la piattaforma minima della CPU in una posizione in cui gcloud può accedervi.

  2. Applica la configurazione al cluster eseguendo questo 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.

Passaggi successivi