Usa il provisioning automatico dei nodi


Questa pagina spiega come utilizzare il provisioning automatico dei nodi in Standard di Google Kubernetes Engine (GKE). Dovresti già conoscere il concetto di provisioning automatico dei nodi.

Prima di iniziare

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

  • Attiva l'API Google Kubernetes Engine.
  • Abilita l'API Google Kubernetes Engine .
  • Se vuoi utilizzare Google Cloud CLI per questa attività, install e poi initialize con gcloud CLI. Se hai già installato gcloud CLI, scarica la versione più recente eseguendo gcloud components update.

Requisiti

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

  • Versione 1.11.2-gke.25 e successive per i cluster di zona.
  • Versione 1.12.x e successive per i cluster a livello di regione.
  • Versione 1.27.6 e successive o 1.28 e successive, per Cloud TPU v4 e v5e.
  • Versione 1.28.7-gke.1020000 o successive e 1.29.2-gke.1035000 o successive per Cloud TPU v5p.

Abilita provisioning automatico dei nodi

Puoi abilitare il provisioning automatico dei nodi su un cluster con gcloud CLI o nella console Google Cloud.

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

Devi pianificare con attenzione l'intervallo di indirizzi IP del nodo. Puoi espandere l'IP del nodo di indirizzi IP dopo la creazione di un cluster. Tuttavia, consigliamo di non espandere di indirizzi IP del nodo dopo la creazione del cluster, poiché devi aggiornare regole firewall per includere il nuovo intervallo come origine. Puoi espandere l'IP del pod di indirizzi IP esterni utilizzando multi-pod discontinui CIDR con nodo e provisioning automatico.

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 da abilitare il provisioning automatico dei nodi.
  • MINIMUM_CPU: il numero minimo di core nella in un cluster Kubernetes.
  • MINIMUM_MEMORY: il numero minimo di gigabyte di nel cluster.
  • MAXIMUM_CPU: il numero massimo di core nella in un cluster Kubernetes.
  • MAXIMUM_MEMORY: il numero massimo di gigabyte di nel cluster.

L'esempio seguente abilita il provisioning automatico dei nodi nell'dev-cluster e consente la scalabilità tra una dimensione totale del cluster di 1 CPU e fino a un massimo di 10 CPU e 64 GB di memoria:

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

Console

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

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

    Vai a Google Kubernetes Engine

  2. Fai clic sul nome del cluster.

  3. Nella sezione Automazione, 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 in un cluster Kubernetes.

  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. La di configurazione può contenere una sola riga se viene utilizzato per modificare un'unica impostazione. È possibile specificare più impostazioni in un unico file di configurazione. Nel In questo caso, tutte queste impostazioni verranno modificate al momento dell'applicazione del file di configurazione.

Alcune configurazioni avanzate possono essere specificate solo utilizzando una configurazione .

Esempio 1: L'applicazione del seguente file di configurazione abilita riparazione e upgrade automatici dei nodi per tutti i nuovi pool di nodi create dal 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 creerà un nodo se il totale del cluster supera i limiti specificati per le risorse.
  • Attiva la riparazione e l'upgrade automatici dei nodi per tutti i nuovi pool di nodi creati dal provisioning automatico dei nodi.
  • Abilita Avvio protetto e monitoraggio 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 da il provisioning automatico dei nodi.
resourceLimits:
  - resourceType: 'cpu'
    minimum: 4
    maximum: 10
  - resourceType: 'memory'
    maximum: 64
  - resourceType: 'nvidia-tesla-t4'
    maximum: 4
management:
  autoRepair: true
  autoUpgrade: true
shieldedInstanceConfig:
  enableSecureBoot: true
  enableIntegrityMonitoring: true
diskSizeGb: 100

Per utilizzare un file di configurazione del provisioning automatico:

  1. Crea un file con la configurazione desiderata in una posizione in cui gcloud CLI può per 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 gcloud container clusters update documentazione.

Impostazioni predefinite provisioning automatico

Il provisioning automatico dei nodi esamina i requisiti dei pod nel tuo cluster per determinare di nodi sono più adatti a questi pod. Tuttavia, alcune impostazioni del pool di nodi non specificati direttamente dai pod (ad esempio, le impostazioni relative agli upgrade dei nodi). Puoi definire valori predefiniti per queste impostazioni, che verranno applicati a tutte pool di nodi appena creati.

Impostazione del tipo di immagine predefinito del nodo

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

gcloud

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

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

Sostituisci quanto segue:

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

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

File

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

  1. Salva la configurazione YAML:

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

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

    Sostituisci quanto segue:

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

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

Le autorizzazioni per le risorse Google Cloud sono fornite 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 mediante gcloud CLI tramite un file di configurazione.

gcloud

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

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

Sostituisci quanto segue:

  • CLUSTER_NAME: il nome del cluster.
  • SERVICE_ACCOUNT: il nome del servizio predefinito .

L'esempio seguente imposta test-service-account@google.com come valore predefinito account di servizio 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 seguente comando:

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

Sostituisci quanto segue:

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

L'esempio seguente imposta l'ambito predefinito per il cluster dev-cluster a 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 un valore predefinito dell'identità utilizzato dal provisioning automatico dei nodi utilizzando un file di configurazione. I seguenti set di configurazioni YAML Account di servizio IAM:

  serviceAccount: SERVICE_ACCOUNT

Sostituisci SERVICE_ACCOUNT con il nome predefinito l'account di servizio.

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

  scopes: SCOPE

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

Per utilizzare un file di configurazione del provisioning automatico:

  1. Crea un file di configurazione che specifichi i valori predefiniti dell'identità in una posizione a cui può accedere la gcloud CLI.

  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 da nuove pool di nodi di cui è stato eseguito il provisioning automatico.

Puoi abilitare la crittografia gestita dal cliente per le unità di avvio utilizzando un'istanza file di configurazione. La seguente configurazione YAML Chiave CMEK:

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

Sostituisci quanto segue:

  • KEY_PROJECT_ID: l'ID progetto chiave.
  • LOCATION: la posizione del keyring.
  • KEY_RING: il nome del tuo keyring.
  • KEY_NAME: il nome della chiave.

Per utilizzare un file di configurazione del provisioning automatico:

  1. Creare un file di configurazione specificando una chiave CMEK in una posizione in cui con gcloud CLI.

  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 Avvio protetto e monitoraggio dell'integrità abilitati.

Puoi abilitare l'avvio protetto e il monitoraggio dell'integrità utilizzando un file di configurazione. La seguente configurazione YAML Avvio protetto e disattivazione del monitoraggio dell'integrità:

  shieldedInstanceConfig:
    enableSecureBoot: true
    enableIntegrityMonitoring: false

Per utilizzare un file di configurazione del provisioning automatico:

  1. Copia la configurazione precedente in un file in una posizione in cui gcloud CLI può per 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 riparazione automatica dei nodi upgrade automatico dei nodi abilitato.

gcloud

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

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

Sostituisci CLUSTER_NAME con il nome del cluster.

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

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

Sostituisci CLUSTER_NAME con il nome del cluster.

File

Puoi abilitare o disabilitare la riparazione e l'upgrade automatici dei nodi utilizzando una file di configurazione. La seguente configurazione YAML la riparazione automatica e disattiva l'upgrade automatico:

  management:
    autoRepair: true
    autoUpgrade: false

Per utilizzare un file di configurazione del provisioning automatico:

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

  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.

Usa gli upgrade di sovraccarico per i nuovi pool di nodi di cui è stato eseguito il provisioning automatico

Puoi specificare le impostazioni di upgrade dell'incremento su tutti di nuovi pool di nodi di cui è stato eseguito il provisioning automatico mediante gcloud CLI o un di configurazione del deployment. Per impostazione predefinita, GKE imposta la strategia di upgrade dei nodi per aumentare gli upgrade.

gcloud

Per specificare le impostazioni di upgrade di sovraccarico 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 \
    --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 è possibile aggiunto al pool di nodi durante gli upgrade.
  • MAX_UNAVAILABLE: il numero massimo di nodi in pool di nodi che può essere contemporaneamente non disponibile durante gli upgrade.

File

Puoi specificare le impostazioni di upgrade di sovraccarico per tutti i nuovi 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 precedente in un file in una posizione in cui gcloud può per 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 gcloud container clusters update documentazione.

Per tornare a utilizzare gli upgrade di sovraccarico per i nuovi pool di nodi di cui è stato eseguito il provisioning automatico, esegui il seguente comando:

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

Sostituisci CLUSTER_NAME con il nome del cluster.

Facoltativamente, puoi includere i flag per impostazioni specifiche come nell'articolo precedente tramite comandi SQL. GKE riutilizza la configurazione precedente per l'upgrade personalizzata, se impostata.

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

Puoi utilizzare gli upgrade blu/verde per tutti i nuovi pool di nodi di cui è stato eseguito il provisioning automatico mediante gcloud CLI. Con gli upgrade blu/verde, puoi utilizzare le impostazioni predefinite, oppure e ottimizzarlo per il tuo ambiente. Per scoprire di più su blu/verde gli upgrade, consulta Upgrade blu/verde.

Per aggiornare la strategia di upgrade dei nodi per qualsiasi pool di nodi esistente di cui è stato eseguito il provisioning automatico: consulta Attivare o disattivare l'upgrade di sovraccarico per un nodo esistente piscina e Aggiornare l'upgrade blu/verde di un pool di nodi esistente la tua strategia.

Nei comandi elencati di seguito vengono utilizzate le seguenti variabili:

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

Le impostazioni predefinite per gli upgrade blu/verde sono:

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

Aggiorna un cluster per utilizzare gli upgrade blu/verde per i nuovi pool di nodi di cui è stato eseguito il provisioning automatico

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

Puoi utilizzare questi flag anche quando:

Per aggiornare un cluster in modo che utilizzi gli upgrade blu/verdi con impostazioni per i nuovi pool di nodi di cui è stato eseguito il provisioning automatico, utilizza questo comando:

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

Puoi aggiornare un cluster per utilizzare upgrade blu/verde con specifiche impostazioni per i nuovi pool di nodi di cui è stato eseguito il provisioning automatico. Questi comandi possono essere usati anche senza il flag --enable-autoprovisioning-blue-green-upgrade per aggiornare impostazioni.

Il seguente comando utilizza BATCH_NODE_COUNT per impostare un numero di nodi assoluto dimensione del batch:

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

Puoi anche utilizzare BATCH_PERCENT per impostare una dimensione del batch su base percentuale, sostituendo batch-node-count nell'ultimo comando con batch-percent e utilizzando un decimale tra 0 e 1 (ad es. il 25% è 0.25). Per vedere le dimensioni dei batch basate su percentuale, sono impostati, consulta Aggiornare un pool di nodi con l'upgrade blu/verde utilizzando le dimensioni del batch basate su percentuale.

Dischi di avvio personalizzati

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

Puoi personalizzare le impostazioni del disco di avvio utilizzando un file di configurazione. GKE riserva una parte del disco di avvio del nodo per le funzioni kubelet. Per ulteriori informazioni, consulta Archiviazione temporanea supportata dal disco di avvio del nodo.

La seguente configurazione YAML causa la creazione del provisioning automatico dei nodi pool di nodi con dischi SSD da 100 GB:

  diskSizeGb: 100
  diskType: pd-ssd

Specifica quanto segue:

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

Per utilizzare un file di configurazione del provisioning automatico:

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

  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.

Separa i pod gestiti da GKE dai carichi di lavoro

In qualità di amministratore del cluster, potresti voler separare i pod che GKE gestisce dai tuoi carichi di lavoro. Questa separazione aiuta evitare problemi di scale down se nel cluster sono presenti nodi sottoutilizzati i pod di sistema sono in esecuzione.

L'esempio seguente mostra come separare i pod gestiti carichi di lavoro utilizzando una combinazione di provisioning automatico dei nodi e incompatibilità di Kubernetes e tolleranze.

  1. Crea un cluster con un pool di nodi predefinito di e2-standard-2 VM e applica un'incompatibilità dei nodi che consente l'esecuzione dei carichi di lavoro di sistema GKE quei nodi:

    gcloud container clusters create test-cluster \
        --machine-type=e2-standard-2 \
        --node-taints=components.gke.io/gke-managed-components=true:NoSchedule
    
  2. Abilita il provisioning automatico dei nodi per il tuo cluster:

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

    Il cluster è in grado di scalare tra una dimensione totale del cluster di 1 CPU e una gigabyte di memoria fino a un massimo di 10 CPU e 64 gigabyte di memoria.

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

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

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

  4. Applica il manifest al cluster:

    kubectl apply -f nginx.yaml
    

    L'output è simile al seguente:

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

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

    L'output è simile al seguente:

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

Il cluster separa i carichi di lavoro dai pod GKE gestiti.

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

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

Configurazione dei limiti di GPU

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

Per elencare i resourceType 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 nella in un cluster Kubernetes.
  • MAXIMUM_MEMORY: il numero massimo di gigabyte di nel cluster.
  • GPU_TYPE: il tipo di GPU.
  • MINIMUM_ACCELERATOR: il numero minimo di GPU acceleratori nel cluster.
  • MAXIMUM_ACCELERATOR: il numero massimo di GPU acceleratori nel cluster.

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

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

File

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

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

Per utilizzare un file di configurazione del provisioning automatico:

  1. Copia la configurazione precedente in un file in una posizione in cui gcloud CLI può per accedervi. Modifica i valori per cpu e memory. Aggiungi più valori per resourceType in base alle tue esigenze. 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 gcloud container clusters update documentazione.

Console

Per abilitare il provisioning automatico dei nodi con le risorse GPU, esegui queste operazioni: passaggi:

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

    Vai a Google Kubernetes Engine

  2. Fai clic sul nome del cluster.

  3. Nella sezione Automazione, 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 in un cluster Kubernetes.

  6. Fai clic su Aggiungi risorsa.

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

  8. Accettare le limitazioni di GPU in GKE.

  9. Fai clic su Salva modifiche.

Scegli una versione del driver da installare

In GKE versione 1.29.2-gke.1108000 e in seguito, puoi selezionare una versione del driver GPU per GKE installabili nei nodi GPU di cui è stato eseguito il provisioning automatico. Aggiungi il seguente campo al file manifest:

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

Sostituisci DRIVER_VERSION con uno dei seguenti valori:

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

Configurazione delle Cloud TPU

A partire dalla versione 1.28 di GKE, puoi utilizzare il provisioning automatico dei nodi con Cloud TPU. Tuttavia, la versione v5p non è supportata sul provisioning automatico dei nodi e sulla scalabilità automatica dei cluster. Per saperne di più su come funziona il provisioning automatico dei nodi con le TPU, consulta Acceleratori di machine learning supportati.

Crea un cluster e configura i tuoi pod in modo che utilizzino le risorse TPU utilizzando il comando con gcloud CLI. Per configurare più tipi di TPU, devi utilizzare un file di configurazione.

gcloud

  1. Crea un cluster e definisci i limiti di TPU:

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

    Sostituisci quanto segue:

    • CLUSTER_NAME: il nome del cluster.
    • MINIMUM_CPU: il numero minimo di vCPU nella in un cluster Kubernetes.
    • MAXIMUM_CPU: il numero massimo di vCPU in nel cluster.
    • MINIMUM_MEMORY:il numero minimo di gigabyte di memoria nel cluster.
    • MAXIMUM_MEMORY: il numero massimo di gigabyte di memoria nel cluster.
    • TPU_TYPE: il tipo di TPU scelto. Utilizza le funzionalità di tpu-v4-podslice per selezionare TPU v4. Per selezionare TPU v5e con una macchina che inizia con ct5lp-, usa tpu-v5-lite-podslice. Per selezionare TPU v5e con un tipo di macchina che inizia con ct5l-, utilizza tpu-v5-lite-device.
    • MINIMUM_ACCELERATOR: il numero minimo di TPU nel cluster.
      • Tieni presente che l'uso di MINIMUM_ACCELERATOR potrebbe blocca fare lo scale down delle sezioni TPU multi-host anche se count è inferiore al numero di chip TPU nella sezione.
    • MAXIMUM_ACCELERATOR: il numero massimo di TPU nel cluster.
      • Se la configurazione del pod richiede una sezione TPU multi-host, GKE crea la sezione in modo atomico. Stabilisci il conteggio abbastanza alto da consentire il provisioning di tutte le TPU della topologia specificata. Il numero di chip in ogni sezione TPU è uguale al prodotto della topologia. Ad esempio, se la topologia la sezione TPU multi-host è 2x2x2, il numero di chip TPU è uguale a 8, pertanto MAXIMUM_ACCELERATOR deve essere maggiore di 8.

    L'esempio seguente imposta i limiti di TPU per ct5lp-hightpu-1t, ct5lp-hightpu-4t e ct5lp-hightpu-8t nel tipo di macchina dev-cluster cluster. Ad esempio, fino a dieci ct5lp-hightpu-4t il provisioning delle macchine, ognuno con 4 chip TPU, 112 vCPU, e 192 GiB di memoria.

    gcloud container clusters create dev-cluster-inference \
          --enable-autoprovisioning \
          --min-cpu 0 \
          --max-cpu 1120 \
          --min-memory 0 \
          --max-memory 1920 \
          --min-accelerator=type=tpu-v5-lite-podslice,count=0 \
          --max-accelerator=type=tpu-v5-lite-podslice,count=40
    
  2. Crea una specifica del deployment che generi un pod che richiede una TPU Google Cloud. Ad esempio, il seguente manifest farà sì che GKE per eseguire il provisioning di quattro nodi ct5lp-hightpu-4t:

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

    Nel campo nodeSelector, definisci la TPU tipo, topologia TPU e numero di acceleratori, dove:

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

    Per utilizzare una prenotazione esistente con il tuo carico di lavoro, specifica etichetta nel campo nodeSelector: * cloud.google.com/reservation-name: definisce il nome della prenotazione GKE esegue il provisioning automatico dei nodi.

    In limits: google.com/tpu definisci il numero di chip TPU per nodo.

File

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

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

Per utilizzare un file di configurazione del provisioning automatico:

  1. Copia la configurazione precedente in un file in una posizione in cui gcloud CLI può per accedervi. Modifica i valori per resourceType e maximum. Aggiungi più valori per resourceType in base alle tue esigenze. 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 gcloud container clusters update documentazione.

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à regionali non sono supportate. Le zone devono appartenere alla stessa regione il cluster, ma non solo le località dei nodi definite a livello di cluster. La modifica delle località di provisioning automatico dei nodi non influisce su alcun nodo esistente piscine.

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

gcloud

Esegui questo comando:

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

Sostituisci quanto segue:

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

File

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

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

    autoprovisioningLocations:
      - ZONE

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

Per utilizzare un file di configurazione del provisioning automatico:

  1. Crea un file di configurazione in una posizione dove gcloud CLI può accedervi.

  2. Applica la configurazione al cluster:

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

    Sostituisci quanto segue:

    • CLUSTER_NAME: il nome del cluster.
    • FILE_NAME: il percorso della configurazione .

Nodi fisicamente più vicini con posizionamento compatto

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

Per definire un criterio di posizionamento compatto, aggiungi nodeSelector al pod con le seguenti chiavi:

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

  • cloud.google.com/machine-family è il nome del nome della famiglia di macchine. Per ulteriori informazioni consulta le famiglie di macchine che supportano il posizionamento compatto.

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

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

Per ulteriori informazioni, consulta l'articolo su come definire il posizionamento compatto per i nodi GKE.

Disabilitazione del provisioning automatico dei nodi

Quando disabiliti il provisioning automatico dei nodi per un cluster, i pool di nodi non sono più di cui è stato eseguito il provisioning automatico.

gcloud

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

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

Sostituisci CLUSTER_NAME con il nome del tuo cluster.

File

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

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

    Vai a Google Kubernetes Engine

  2. Fai clic sul nome del cluster.

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

Contrassegnare il pool di nodi come provisioning automatico in corso...

Dopo aver abilitato il provisioning automatico dei nodi nel cluster, puoi per specificare per quali pool di nodi viene eseguito il provisioning automatico. Un pool di nodi di cui è stato eseguito il provisioning automatico automaticamente quando non è utilizzato da nessun carico di lavoro.

Per contrassegnare un pool di nodi come 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 senza provisioning automatico

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

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

Sostituisci NODE_POOL_NAME con il nome del pool di nodi.

Utilizzo di una famiglia di macchine personalizzate

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

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

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

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

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

Dopo l'applicazione delle modifiche, il provisioning automatico dei nodi sceglie il pool di nodi migliore con un tipo di macchina compreso nella famiglia di macchine specificata. Se sono presenti più valori per l'espressione di corrispondenza, verrà scelto arbitrariamente un valore.

Piattaforma CPU minima

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

Passaggi successivi