Controlla la pianificazione con incompatibilità e tolleranze

Questa pagina fornisce una panoramica incompatibilità e tolleranze su Google Distributed Cloud. Quando pianifichi l'esecuzione dei carichi di lavoro di cui è stato eseguito il deployment nel tuo cluster, le incompatibilità dei nodi ti aiutano a controllare quali nodi su cui è consentita l'esecuzione.

Panoramica

Quando invii un carico di lavoro da eseguire in un cluster, pianificatore determina dove posizionare i pod associati al carico di lavoro. Scheduler può posizionare un pod su qualsiasi nodo che ne soddisfi la CPU, la memoria requisiti delle risorse personalizzati.

Se il tuo cluster esegue diversi carichi di lavoro, potrebbe essere utile e il controllo su quali carichi di lavoro possono essere eseguiti su un particolare pool di nodi.

Un'incompatibilità dei nodi consente di contrassegnare un nodo in modo che lo scheduler evita o prevenga per alcuni pod. Una funzionalità complementare, le tolleranze, ti consente designano i pod che possono essere utilizzati nodi.

Incompatibilità e tolleranze lavorano insieme per garantire che i pod non vengano pianificati nodi inappropriati.

Le incompatibilità sono coppie chiave-valore associate a un effetto. La tabella seguente elenca gli effetti disponibili:

Effetto Descrizione
NoSchedule I pod che non tollerano questa incompatibilità non vengono pianificati sul nodo. i pod esistenti non vengono rimossi dal nodo.
PreferNoSchedule Kubernetes evita di pianificare pod che non tollerano questa incompatibilità nel nodo.
NoExecute Il pod viene rimosso dal nodo se è già in esecuzione su quel nodo. e non è pianificato sul nodo se non è ancora in esecuzione sul nodo.

Vantaggi dell'impostazione delle incompatibilità dei nodi in Google Distributed Cloud

Sebbene sia possibile impostare le incompatibilità dei nodi utilizzando kubectl taint utilizzando gkectl o la console Google Cloud per impostare un'incompatibilità dei nodi seguenti vantaggi rispetto a kubectl:

  • Le incompatibilità vengono mantenute quando un nodo viene riavviato o sostituito.
  • Le incompatibilità vengono create automaticamente quando un nodo viene aggiunto a un pool di nodi.
  • Quando utilizzi gkectl per aggiungere incompatibilità, queste vengono create automaticamente durante la scalabilità automatica del cluster. (Scalabilità automatica per i pool di nodi creati nel La console Google Cloud non è attualmente disponibile.

Imposta incompatibilità dei nodi

Puoi impostare le incompatibilità dei nodi in un pool di nodi quando crei un cluster utente dopo la creazione del cluster. Questa sezione mostra l'aggiunta di incompatibilità ai cluster sono già stati creati, ma la procedura è simile quando crei nuove cluster.

Puoi aggiungi un nuovo pool di nodi e impostare un'incompatibilità oppure aggiornare un pool di nodi esistente e impostare un'incompatibilità. Prima di aggiungere un altro pool di nodi, verificare che sia disponibile un numero sufficiente di indirizzi IP sul cluster.

Se hai creato il cluster nella console Google Cloud, puoi utilizzare Console Google Cloud per aggiungere o aggiornare un pool di nodi.

Imposta incompatibilità in un nuovo pool di nodi

Console

  1. Nella console, vai alla panoramica dei cluster Google Kubernetes Engine .

    Vai ai cluster GKE

  2. Seleziona il progetto Google Cloud in cui si trova il cluster utente.

  3. Nell'elenco dei cluster, fai clic sul nome del cluster e quindi su Visualizza dettagli nel riquadro Dettagli.

  4. Fai clic su Aggiungi pool di nodi.

  5. Configura il pool di nodi:

    1. Inserisci il Nome del pool di nodi.
    2. Inserisci il numero di vCPUs per ciascun nodo nel pool (minimo 4 per worker del cluster utente).
    3. Inserisci la dimensione della memoria in mebibyte (MiB) per ciascun nodo nel pool (minimo 8192 MiB per nodo worker del cluster utente e deve essere un multiplo di 4)
    4. Nel campo Repliche, inserisci il numero di nodi nel pool (minimo 3).
    5. Seleziona il tipo di immagine sistema operativo: Ubuntu Containerd o COS.

    6. Inserisci la Dimensione disco di avvio in gibibyte (GiB) (il valore predefinito è 40 GiB).

  6. Nella sezione Metadati del pool di nodi (facoltativo), fai clic su + Aggiungi incompatibilità. Inserisci la Chiave, il Valore e l'Effetto per l'incompatibilità. Ripeti come necessaria.

  7. Facoltativamente, fai clic su + Aggiungi etichette Kubernetes. Inserisci la Chiave e Valore dell'etichetta. Ripeti queste operazioni in base alle necessità.

  8. Fai clic su Crea.

  9. Nella console Google Cloud viene visualizzato Stato del cluster: modifiche progressi. Fai clic su Mostra dettagli per visualizzare lo stato della risorsa. condizione di servizio e Messaggi di stato.

Riga di comando

  1. Nel tuo file di configurazione del cluster utente, compila nodePools .

    Devi specificare i seguenti campi:

    • nodePools.[i].name
    • nodePools[i].cpus
    • nodePools.[i].memoryMB
    • nodePools.[i].replicas

    I seguenti campi sono facoltativi. Se non includi nodePools[i].bootDiskSizeGB o nodePools[i].osImageType, vengono utilizzati i valori predefiniti.

  2. Compila il campo nodePools[i].taints. . Ad esempio:

    nodePools:
    - name: "my-node-pool"
      taints:
      - key: "staging"
        value: "true"
        effect: "NoSchedule"
    
  3. Se vuoi, compila le seguenti sezioni:

    • nodePools[i].labels
    • nodePools[i].bootDiskSizeGB
    • nodePools[i].osImageType
    • nodePools[i].vsphere.datastore
    • nodePools[i].vsphere.tags
  4. Esegui questo comando:

    gkectl update cluster --kubeconfig ADMIN_CLUSTER_KUBECONFIG --config USER_CLUSTER_CONFIG
    

    Sostituisci quanto segue:

    • [ADMIN_CLUSTER_KUBECONFIG] con il percorso di kubeconfig per il cluster di amministrazione.

    • [USER_CLUSTER_CONFIG] con il percorso del cluster utente di configurazione del deployment.

Imposta incompatibilità in un pool di nodi esistente

Console

  1. Nella console, vai alla panoramica dei cluster Google Kubernetes Engine .

    Vai ai cluster GKE

  2. Seleziona il progetto Google Cloud in cui si trova il cluster utente.

  3. Nell'elenco dei cluster, fai clic sul nome del cluster e quindi su Visualizza dettagli nel riquadro Dettagli.

  4. Fai clic sulla scheda Nodi.

  5. Fai clic sul nome del pool di nodi che vuoi modificare.

  6. Fai clic su Modifica accanto all' Sezione Metadati del pool di nodi (facoltativo) e fai clic su + Aggiungi incompatibilità. Inserisci la Chiave, il Valore e l'Effetto per l'incompatibilità. Ripeti come necessaria.

  7. Fai clic su Fine.

  8. Fai clic su per tornare alla pagina precedente.

  9. Nella console Google Cloud viene visualizzato Stato del cluster: modifiche progressi. Fai clic su Mostra dettagli per visualizzare lo stato della risorsa. condizione di servizio e Messaggi di stato.

Riga di comando

  1. Nel tuo file di configurazione del cluster utente, vai alla nodePools del pool di nodi che vuoi aggiornare.

  2. Compila il campo nodePools[i].taints Ad esempio:

    nodePools:
    - name: "my-node-pool"
      taints:
      - key: "staging"
        value: "true"
        effect: "NoSchedule"
    
  3. Esegui questo comando:

    gkectl update cluster --kubeconfig ADMIN_CLUSTER_KUBECONFIG --config USER_CLUSTER_CONFIG
    

    Sostituisci quanto segue:

    • [ADMIN_CLUSTER_KUBECONFIG] con il percorso di kubeconfig per il cluster di amministrazione.

    • [USER_CLUSTER_CONFIG] con il percorso del cluster utente di configurazione del deployment.

Configura i pod per tollerare un'incompatibilità

Puoi configurare i pod in modo che tollerino un'incompatibilità includendo il campo tolerations nei pod la specifica del container. Nell'esempio seguente, il pod può essere pianificato su un nodo con l'incompatibilità dedicated=experimental:NoSchedule:

tolerations:
- key: dedicated
  operator: Equal
  value: experimental
  effect: NoSchedule

Per ulteriori esempi, vedi Incompatibilità e tolleranze.