Questa pagina fornisce una panoramica incompatibilità e tolleranze su Google Distributed Cloud. Quando pianifichi il deployment dei carichi di lavoro sul tuo cluster, le mancate compatibilità dei nodi ti aiutano a controllare su quali nodi è consentito eseguirli.
Panoramica
Quando invii un carico di lavoro da eseguire in un cluster, lo scheduler determina dove posizionare i pod associati al carico di lavoro. Lo scheduler è libero di posizionare un pod su qualsiasi nodo che soddisfi i requisiti di CPU, memoria e risorse personalizzate del pod.
Se il tuo cluster esegue una serie 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 consente di contrassegnare un nodo in modo che lo scheduler evita o prevenga per alcuni pod. Una funzionalità complementare, le tolerate, ti consente di designare i pod che possono essere utilizzati sui nodi "contaminati".
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 sul nodo, mentre non viene pianificato sul nodo se non è ancora in esecuzione sul nodo stesso. |
Vantaggi dell'impostazione di contaminazioni dei nodi in Google Distributed Cloud
Sebbene sia possibile impostare i taint dei nodi utilizzando il comando
kubectl taint
, l'utilizzo di gkectl
o della console Google Cloud per impostare un taint del nodo offre i seguenti vantaggi rispetto a kubectl
:
- I taint vengono conservati 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 contaminazioni, 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 si creano nuovi cluster.
Puoi aggiungere un nuovo pool di nodi e impostare un'alterazione oppure puoi aggiornare un pool di nodi esistente e impostare un'alterazione. Prima di aggiungere un altro pool di nodi, verifica che siano disponibili indirizzi IP sufficienti nel cluster.
Se hai creato il cluster nella console Google Cloud, puoi utilizzare la console Google Cloud per aggiungere o aggiornare un pool di nodi.
Impostare gli elementi dannosi in un nuovo pool di nodi
Console
Nella console, vai alla panoramica dei cluster Google Kubernetes Engine .
Seleziona il progetto Google Cloud in cui si trova il cluster utente.
Nell'elenco dei cluster, fai clic sul nome del cluster e 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 ciascun nodo nel pool (minimo 4 per worker del cluster utente).
- Inserisci la dimensione della memoria in mebibyte (MiB) per ogni nodo del pool (minimo 8192 MiB per nodo worker del cluster utente e deve essere un multiplo di 4).
- Nel campo Repliche, inserisci il numero di nodi nel pool (minimo 3).
Seleziona il tipo di immagine del sistema operativo: Ubuntu Containerd o COS.
Inserisci la Dimensione 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 Chiave, Valore ed Effetto per l'alterazione. Ripeti come necessaria.
Facoltativamente, fai clic su + Aggiungi etichette Kubernetes. Inserisci la Chiave e Valore dell'etichetta. Ripeti queste operazioni in base alle necessità.
Fai clic su Crea.
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
Nel file di configurazione del cluster utente, compila la sezione
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
onodePools[i].osImageType
, vengono utilizzati i valori predefiniti.Compila la sezione
nodePools[i].taints
. Ad esempio:nodePools: - name: "my-node-pool" taints: - key: "staging" value: "true" effect: "NoSchedule"
Se vuoi, compila le seguenti sezioni:
nodePools[i].labels
nodePools[i].bootDiskSizeGB
nodePools[i].osImageType
nodePools[i].vsphere.datastore
nodePools[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 tuo cluster di amministrazione.[USER_CLUSTER_CONFIG]
con il percorso del file di configurazione del cluster utente.
Imposta incompatibilità in un pool di nodi esistente
Console
Nella console, vai alla panoramica dei cluster Google Kubernetes Engine .
Seleziona il progetto Google Cloud in cui si trova il cluster utente.
Nell'elenco dei cluster, fai clic sul nome del cluster e poi 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 poi su + Aggiungi contaminazione. Inserisci Chiave, Valore ed Effetto per l'alterazione. Ripeti se necessario.Fai clic su Fine.
Fai clic su
per tornare alla pagina precedente.La console Google Cloud mostra Stato del cluster: modifiche in corso. Fai clic su Mostra dettagli per visualizzare la condizione dello stato della risorsa e i messaggi di stato.
Riga di comando
Nel tuo file di configurazione del cluster utente, vai alla
nodePools
del pool di nodi che vuoi aggiornare.Compila il
nodePools[i].taints
Ad 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 tuo cluster di amministrazione.[USER_CLUSTER_CONFIG]
con il percorso del file di configurazione del cluster utente.
Configurare i pod in modo che tollerino un'incompatibilità
Puoi configurare i pod in modo che tollerano 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.