Questa pagina fornisce una panoramica delle incompatibilità e delle tolleranze in Google Distributed Cloud. Quando pianifichi il deployment dei carichi di lavoro nel cluster, le incompatibilità dei nodi ti aiutano a controllare su quali nodi è consentita l'esecuzione.
Panoramica
Quando invii un carico di lavoro da eseguire in un cluster, lo scheduler determina dove inserire i pod associati al carico di lavoro. Lo scheduler è libero di inserire un pod su qualsiasi nodo che soddisfi i requisiti di CPU, memoria e risorse personalizzate del pod.
Se il cluster esegue una varietà di carichi di lavoro, potresti voler esercitare un certo controllo sui carichi di lavoro che possono essere eseguiti su un determinato pool di nodi.
Un'incompatibilità dei nodi ti consente di contrassegnare un nodo in modo che lo scheduler ne eviti o impedisca l'utilizzo per determinati pod. Una funzionalità complementare, le tolleranze, ti consente di designare i pod che possono essere utilizzati sui nodi "incompatibili".
Le incompatibilità e le tolleranze funzionano insieme per garantire che i pod non vengano pianificati su nodi inappropriati.
Le incompatibilità sono coppie chiave-valore associate a un effetto. La seguente tabella 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à sul nodo. |
NoExecute |
Il pod viene rimosso dal nodo se è già in esecuzione sul nodo, mentre non viene pianificato sul nodo se non è ancora in esecuzione sul nodo stesso. |
Vantaggi dell'impostazione delle incompatibilità dei nodi in Google Distributed Cloud
Sebbene tu possa impostare le incompatibilità dei nodi utilizzando il
kubectl taint
comando, l'utilizzo di gkectl o della Google Cloud console per impostare un'incompatibilità dei nodi presenta i
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
gkectlper aggiungere incompatibilità, queste vengono create automaticamente durante la scalabilità automatica del cluster. (La scalabilità automatica per i pool di nodi creati nella Google Cloud console non è attualmente disponibile.)
Imposta le incompatibilità dei nodi
Puoi impostare le incompatibilità dei nodi in un pool di nodi durante la creazione di un cluster utente o dopo la creazione del cluster. Questa sezione mostra come aggiungere incompatibilità ai cluster già creati, ma la procedura è simile quando crei nuovi cluster.
Puoi aggiungere 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, verifica che siano disponibili indirizzi IP sufficienti nel cluster.
Se hai creato il cluster nella Google Cloud console, puoi utilizzare la Google Cloud console per aggiungere o aggiornare un pool di nodi.
Imposta le incompatibilità in un nuovo pool di nodi
Console
Nella console, vai alla pagina Panoramica dei cluster Google Kubernetes Engine.
Seleziona il Google Cloud progetto in cui si trova il cluster utente.
Nell'elenco dei cluster, fai clic sul nome del cluster, quindi su Visualizza dettagli nel riquadro Dettagli.
Fai clic su Aggiungi pool di nodi.
Configura il pool di nodi:
- Inserisci il nome del pool di nodi.
- Inserisci il numero di vCPUs per ogni nodo nel pool (minimo 4 per worker cluster utente).
- Inserisci la dimensione della memoria in mebibyte (MiB) per ogni nodo nel pool (minimo 8192 MiB per nodo worker del cluster utente; il valore deve essere un multiplo di 4).
- Nel campo Replica, inserisci il numero di nodi nel pool (minimo 3).
Seleziona il tipo di immagine del sistema operativo: Ubuntu Containerd o COS.
Inserisci la dimensione del disco di avvio in gibibyte (GiB) (il valore predefinito è 40 GiB).
Nella sezione Metadati del pool di nodi (facoltativo), fai clic su + Aggiungi incompatibilità. Inserisci la chiave, il valore e l'effetto dell'incompatibilità. Ripeti queste operazioni in base alle necessità.
(Facoltativo) Fai clic su + Aggiungi etichette Kubernetes. Inserisci la chiave e il valore dell'etichetta. Ripeti queste operazioni in base alle necessità.
Fai clic su Crea.
La Google Cloud console mostra Stato del cluster: modifiche in corso. Fai clic su Mostra dettagli per visualizzare la condizione dello stato delle risorse e i messaggi di stato.
Riga di comando
Nel file di configurazione del cluster utente, compila la sezione.
nodePoolsDevi specificare i seguenti campi:
nodePools.[i].namenodePools[i].cpusnodePools.[i].memoryMBnodePools.[i].replicas
I seguenti campi sono facoltativi. Se non includi
nodePools[i].bootDiskSizeGBonodePools[i].osImageType, vengono utilizzati i valori predefiniti.Compila la
nodePools[i].taintssezione. Ad esempio:nodePools: - name: "my-node-pool" taints: - key: "staging" value: "true" effect: "NoSchedule"(Facoltativo) Compila le seguenti sezioni:
nodePools[i].labelsnodePools[i].bootDiskSizeGBnodePools[i].osImageTypenodePools[i].vsphere.datastorenodePools[i].vsphere.tags
Esegui questo comando:
gkectl update cluster --kubeconfig ADMIN_CLUSTER_KUBECONFIG --config USER_CLUSTER_CONFIG
Sostituisci quanto segue:
[ADMIN_CLUSTER_KUBECONFIG]con il percorso del file kubeconfig per il cluster di amministrazione.[USER_CLUSTER_CONFIG]con il percorso del file di configurazione del cluster utente.
Imposta le incompatibilità in un pool di nodi esistente
Console
Nella console, vai alla pagina Panoramica dei cluster Google Kubernetes Engine.
Seleziona il Google Cloud progetto in cui si trova il cluster utente.
Nell'elenco dei cluster, fai clic sul nome del cluster, quindi su Visualizza dettagli nel riquadro Dettagli.
Fai clic sulla scheda Nodi.
Fai clic sul nome del pool di nodi che vuoi modificare.
Fai clic su Modifica accanto alla sezione Metadati del pool di nodi (facoltativo) e fai clic su + Aggiungi incompatibilità. Inserisci la chiave, il valore e l'effetto dell'incompatibilità. Ripeti queste operazioni in base alle necessità.
Fai clic su Fine.
Fai clic su per tornare alla pagina precedente.
La Google Cloud console mostra Stato del cluster: modifiche in corso. Fai clic su Mostra dettagli per visualizzare la condizione dello stato delle risorse e i messaggi di stato.
Riga di comando
Nel file di configurazione del cluster utente, vai alla sezione `nodePools` del pool di nodi che vuoi aggiornare.
nodePoolsCompila la sezione
nodePools[i].taintsAd esempio:nodePools: - name: "my-node-pool" taints: - key: "staging" value: "true" effect: "NoSchedule"Esegui questo comando:
gkectl update cluster --kubeconfig ADMIN_CLUSTER_KUBECONFIG --config USER_CLUSTER_CONFIG
Sostituisci quanto segue:
[ADMIN_CLUSTER_KUBECONFIG]con il percorso del file kubeconfig per il cluster di amministrazione.[USER_CLUSTER_CONFIG]con il percorso del file di configurazione del cluster utente.
Configura i pod in modo che tollerino un'incompatibilità
Puoi configurare i pod in modo che tollerino un'incompatibilità includendo il campo tolerations nella specifica dei pod. 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 altri esempi, vedi Incompatibilità e tolleranze.