Cos'è la contaminazione?
La combinazione di baccelli, nodi e cluster funziona insieme. I pod sono attratti dai nodi dalla proprietà di affinità del nodo mentre i contatti limitano i pod per essere programmati sui nodi. Tollerazione e contatti lavorano insieme per assicurarsi che nessun pod venga programmato sul nodo sbagliato. Queste proprietà assicurano che i pod siano programmati sul nodo corretto e gestiscono anche il carico di lavoro di un nodo distribuendo un carico di lavoro uguale su tutti i nodi nel cluster. I contatti sono definiti per il nodo usando la specifica del nodo mentre i pod utilizzano la tolleranza dalla specifica POD.
I contatti sono le restrizioni che consentono a un nodo di respingere i baccelli che vengono programmati sul nodo. D'altra parte, la tolleranza funziona contro i contatti e consente ai pod di essere programmati sul nodo anche se hanno i contatti definiti. Può esserci più di una contaminazione definita per i pod per garantire che i pod non vengano programmati a meno che non possano tollerare la contaminazione definita. Qui, stiamo dimostrando come utilizzare i toni sui baccelli di Kubernetes con l'aiuto di un esempio semplice, breve e facile.
Prerequisiti
Assicurati di avere i seguenti strumenti installati sul sistema prima di continuare con questa guida. Con questi strumenti di base, non sarai in grado di utilizzare i nodi di Kubernetes.
Assicurati che questi strumenti siano installati e configurati correttamente nel sistema in modo da non avere problemi a utilizzare i bighes sui nodi Kubernetes. Supponendo che tu abbia il tuo sistema pronto con tutti questi strumenti installati, stiamo passando alla sezione successiva.
Come usare i contatti sui nodi di Kubernetes?
Qui presenteremo uno scenario semplice per aiutarti a imparare a usare una contaminazione su un nodo Kubernetes. Cominciamo!
Passaggio n. 1: avviare il cluster minikube
Innanzitutto, avvia il cluster minikube in modo da poter utilizzare i comandi Kubectl ed eseguire l'applicazione. Il cluster Minikube ti consente di distribuire i tuoi nodi, i baccelli e persino il cluster nell'ambiente Kubernetes. Quindi, è essenziale mantenere il minikube in modalità attivo usando il comando seguente:
kalsoom@kalsoom-virtualbox> minikubeQuesto attiverà il cluster minikube e renderà pronto l'ambiente Kubernetes a utilizzare i contatti sul nodo.
Passaggio n. 2: ottieni l'elenco dei nodi
Come abbiamo discusso in precedenza, l'ambiente Kubernetes si basa su nodi, baccelli e cluster. I pod sono programmati sui nodi e dobbiamo definire la contaminazione per quel nodo per impedire che i pod vengano programmati su quel nodo. Quindi, qui stiamo visualizzando l'elenco dei nodi per verificare quale nodo abbia già una contaminazione definita dall'installazione predefinita di Kubernetes. Inoltre, useremo il seguente comando:
kalsoom@kalsoom-virtualbox> kubectl otter nodi -o = personalizzato-colonne = nodename:.metadati.nome, taintkey:.spec.TAINTS [*].Chiave, TaintValue:.spec.TAINTS [*].Valore, Tainteffect:.spec.TAINTS [*].effettoDall'output sopra, possiamo notare che nessun pod è contaminato dall'installazione predefinita di Kubernetes in modo da poter contaminare questo nodo.
Passaggio n. 3: contamina il nodo
Il nodo può essere contaminato usando il seguente comando:
kalsoom@kalsoom-virtualbox> kubectl tain nodi minikube app = frontend: NoscheduleCome puoi vedere nell'output, il nodo "minikube" è stato contaminato con l'effetto "Noschedule" con il nome del nome chiave "app" con un valore "frontend". Ciò ha limitato i pod da pianificare sul nodo. Quindi, ora, nessun pod può essere posizionato su questo nodo fino a quando una tolleranza non è stata definita contro la contaminazione.
Passaggio n. 4: pianificare i baccelli sul nodo
In questo passaggio, proveremo a pianificare il pod sul nodo che abbiamo contaminato nel passaggio precedente. Stiamo distribuendo i pod sul cluster che non ha alcuna tolleranza definita nelle specifiche di distribuzione dell'app. Vedi il processo indicato di seguito:
Passaggio # 4A: crea uno spazio dei nomi
Innanzitutto, usa il comando indicato qui per creare uno spazio dei nomi:
kalsoom@kalsoom-virtualbox> kubectl crea ns frontendPassaggio # 4B: eseguire il file Nginx sullo spazio dei nomi
Ora, esegui il file Nginx sullo spazio dei nomi che abbiamo appena creato utilizzando il seguente comando:
kalsoom@kalsoom -virtualbox> kubectl run nginx -image = nginx -namespace frontendPassaggio # 4C: controlla lo stato dei pod
Ora, controlla lo stato dei pod per vedere se sono programmati sui nodi o no. Poiché non esiste una tolleranza definita per il cluster, il pod non deve essere programmato su nessun nodo nel cluster. Controlliamo lo stato dei baccelli con il comando indicato di seguito:
kalsoom@kalsoom -virtualbox> kubectl ottieni baccelli -n frontendLo stato del pod è "in sospeso", il che significa che non è stato programmato su nessun nodo. Possiamo confermare se è programmato su qualsiasi nodo nel cluster o meno controllando gli eventi con il seguente comando:
kalsoom@kalsoom -virtualbox> kubectl ottieni eventi -n frontendDall'output, è possibile vedere che non è disponibile alcun nodo per i pod da programmare perché non vi è alcuna tolleranza definita per i nodi.
Conclusione
Abbiamo imparato a usare i contatti sui nodi Kubernetes. Esploriamo cos'è una contaminazione e quale funzione svolge in un ambiente Kubernetes. Abbiamo imparato da questo articolo che la tolleranza e i contatti vanno di pari passo. I contatti sono definiti per i nodi nella specifica del nodo mentre la tollerazione è definita per i pod nella specifica POD. I contatti limitano i pod da programmare sul nodo mentre la tolleranza funziona contro la contaminazione e consente ai pod di essere programmati sui nodi.