Cos'è l'affinità del nodo in kubernetes?
Node Affinity è uno scheduler che assegna i nodi a pod specifici. I baccelli di Kubernetes fanno uso dell'affinità del nodo. La capacità di un pod di dichiarare un'affinità per un particolare gruppo di nodi su cui potrebbe essere inserito è noto come affinità del nodo. In Affinità del nodo, eseguiamo due tipi di pianificazione: pianificazione soft e dura. Attraverso l'affinità del nodo, assicureremo che i diversi pod che stiamo utilizzando siano ospitati su nodi specifici nel cluster Kubernetes. Nel pod, ogni nodo è etichettato con un valore univoco.
Prerequisiti:
Nel nostro sistema, il sistema operativo Linux o Ubuntu deve essere installato. Se Windows è già installato, installa una macchina virtuale ed esegui l'ultima versione di Ubuntu nel sistema. Kubernetes deve essere installato nel sistema dopo l'installazione. Devi avere familiarità con i comandi di Kubernetes e lo strumento Kubectl Command-Line.
Leggi attentamente i prerequisiti. Dopo aver soddisfatto questi requisiti, eseguire i comandi nella riga di comando Kubectl che sono menzionati nei seguenti esempi. Abbattiamo i tutorial in passaggi, ognuno con una breve spiegazione.
Passaggio 1: eseguire i kubernetes
Nel primo passaggio, eseguiamo i Kubernetes nel terminale. Il comando è il seguente:
> Minikube Start
Qui, Minikube ci fornisce un ambiente locale in cui eseguiamo le diverse operazioni sui cluster.
Quindi, dopo aver eseguito il comando, Minikube inizia e lo spazio del nodo è riservato.
Passaggio 2: recuperare il nodo esistente in kubernetes
In questo passaggio, vengono visualizzati i nodi etichettati attualmente esistenti nel sistema. Per ottenere i nodi etichettati, utilizziamo un comando specifico.
Esegui il comando seguente nel sistema e visualizza i risultati:
> Kubectl Ottieni nodi -Show -labels
Nella schermata precedente, abbiamo visto che questo comando restituisce parametri diversi come nome, stato, ruoli, età, versione ed etichette. I parametri del nome devono visualizzare il nome del contenitore, il parametro di stato è di restituire lo stato del contenitore, il parametro dei ruoli è di restituire chi controlla il contenitore, il parametro di età è restituire per quanto tempo viene creato questo pod, il parametro della versione è restituire Una versione di questo pod e il parametro delle etichette è restituire il valore del nodo specifico per questo pod.
Passaggio 3: Definire l'affinità del nodo Kubernetes
In questo passaggio, definiamo l'affinità del nodo per il contenitore minikube. L'affinità del nodo dipende dall'etichetta. Qui, assegniamo le etichette usando il comando. Il comando per definire l'affinità del nodo è il seguente:
> Kubectl Etichetta nodi minikube disktype == SSD
Allegiamo un'etichetta al nodo minikube il cui tipo di disco è SSD. Ottiamo l'elenco dei nodi etichettati dopo l'etichettatura dei nodi. Ciò significa che otteniamo l'elenco dell'affinità del nodo. Qui, eseguiamo di nuovo lo stesso comando che abbiamo usato in precedenza per mostrare l'elenco dei nodi etichettati.
> Kubectl Ottieni nodi -Show -Labeles
Passaggio 4: definire il file di configurazione POD di affinità del nodo o l'affinità del nodo nel file YAML
In questo passaggio, definiamo l'affinità del nodo in un file YAML. In un contenitore minikube, eseguiamo i seguenti comandi per creare il file YAML:
> nano aff. Yaml
In Linux, Nano viene utilizzato per la creazione di file.
Dopo l'esecuzione del comando, viene visualizzata la seguente screenshot allegata. Questo è un file di configurazione che contiene informazioni su contenitori e cluster. Come visto nella seguente screenshot, è specificata l'affinità. Nell'affinità dei nodi, ci dà un valore "richiesto eliminazione dell'esecuzione". Ciò significa che la pianificazione dura viene eseguita su questo pod e il pod richiede questa pianificazione ad ogni costo. Nell'affinità del nodo duro, un pod creato si chiama nginx. Definiamo questo tipo di disco del baccello previsto su quel tipo di disco del nodo la cui etichetta allegata è SSD. Ricorda sempre che quando viene visualizzato "richiesto Cursore di schema Exception", viene eseguita la dura pianificazione dell'affinità dei nodi.
In questo modo, definiamo il pod con diversi tipi di affinità del nodo.
Passaggio 5: verificare se il pod è programmato nel nodo dell'etichetta
In questo passaggio, determiniamo se un pod è programmato in un nodo marcato. A tale scopo, eseguiamo il seguente comando:
> kubectl applica -f affare.Yaml
Il pod viene creato correttamente.
Passaggio 6: arruola tutti i baccelli in kubernetes
Successivamente, controlliamo l'elenco di pod in esecuzione o in sospeso nei nostri Kubernetes. Eseguiamo il seguente comando che viene mostrato nello screenshot:
.> kubectl Get pods -output = wide
Nello screenshot precedentemente collegato, notiamo che tutti i pod sono in fase di esecuzione. Insieme a questo, otteniamo tutti i dettagli di Pod attraverso questo comando.
Passaggio 7: crea il pod per definire l'affinità del nodo in Kubernetes
In questo passaggio, eseguiamo di nuovo il comando per la definizione di affinità del nodo. Creiamo un file YAML con il "PF.Yaml ”nome. Il comando è il seguente:
> nano pf.Yaml
Passaggio 8: controllare il tipo di affinità del nodo
In questo passaggio, vedremo quale tipo di affinità del nodo è definita in questo file YAML. Il nome del pod è nginx. La sua specifica è l'affinità, come mostrato nella seguente screenshot. Nell'affinità dei nodi, viene utilizzato "PreferRredDuringsCheduluingGoredException". Quando viene utilizzata la parola preferita, significa che il tipo di affinità del nodo è morbido. Affinità del nodo morbido significa che se il programma preferisce il nodo e le etichette corrispondono all'espressione di corrispondenza data, va bene. Altrimenti, ignora e pianifica il baccello.
Passaggio 9: verificare se il pod è programmato per etichettare il nodo
In questo passaggio, controlliamo se tutti i pod che abbiamo creato sono programmati con i nodi dell'etichetta. Per questo motivo, eseguiamo il seguente comando per creare il pod come file yaml:
> kubectl applicare -f pf.Yaml
Il pod viene creato correttamente.
Passaggio 10: arruola tutti i baccelli in kubernetes
Qui, eseguiamo il comando per vedere se tutti i pod sono programmati con nodi etichettati. Eseguiamo il seguente comando nel terminale:
> kubectl Get pods -output = wide
Lo stesso processo viene ripetuto per l'affinità del nodo morbido di cui abbiamo discusso in precedenza per l'affinità del nodo duro. Tutti i nodi sono in fase di esecuzione, il che significa che tutti i pod sono programmati con i nodi dell'etichetta.
Conclusione
Node Affinity è uno scheduler per i pod sui nodi dell'etichetta. L'affinità del nodo include una serie di regole sia in forma dura e morbida. Questo è ciò che abbiamo imparato in dettaglio. Presumiamo che tu abbia imparato molto da questo tutorial. Puoi praticarlo per il tuo miglioramento.