Come usare Taint su Kubernetes

Come usare Taint su Kubernetes
Kubernetes è il miglior ambiente di container che utilizza cluster, nodi e pod per eseguire applicazioni. Pod, nodi e cluster sono interconnessi e funzionano di mano nella mano. Un cluster ha uno o più nodi su cui sono programmati uno o più pod e questi baccelli vengono utilizzati per eseguire applicazioni. Nell'amministrazione Kubernetes, la pianificazione dei pod è un aspetto molto importante in quanto svolge un ruolo essenziale nella riduzione dei costi, nel miglioramento delle prestazioni e aiuta a raggruppare nella gestione della scala. I contatti aiutano a bilanciare il carico di lavoro sui nodi e decidere quale pod essere pianificato sul nodo. Questo articolo dimostrerà cos'è una contaminazione e come è definito per un nodo mentre si discute di come può essere utilizzato su Kubernetes.

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.

  • Ubuntu 20.02 o qualsiasi altra ultima versione
  • Strumento di riga di comando kubectl
  • Cluster Kubernetes
  • Cluster Minikube

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> minikube

Questo 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 [*].effetto

Dall'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: Noschedule

Come 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 frontend

Passaggio # 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 frontend

Passaggio # 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 frontend

Lo 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 frontend

Dall'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.