Come utilizzare il nodeselector Kubernetes

Come utilizzare il nodeselector Kubernetes
Il cluster di Kubernetes utilizza i vincoli di pianificazione come: contatti, etichette, tollerazioni e nodilector per separare e programmare il carico di lavoro su diversi pool di nodi. I vincoli di pianificazione sono un requisito comune in Kubernetes per la gestione delle infrastrutture. Ci concentreremo sui vincoli di pianificazione dei nodilector in questo articolo. Esploreremo cos'è un nodeselector, come funziona e come può essere utilizzato in Kubernetes. Presenteremo uno scenario semplice per aiutarti a capire come utilizzare in modo efficiente il nodeselector Kubernetes.

Cos'è il nodeselector Kubernetes?

Un nodeselector è un vincolo di pianificazione in kubernetes che specifica una mappa sotto forma di un tasto: selettori di pod personalizzati della coppia di valori vengono utilizzati per definire la chiave, la coppia di valori. Il nodeselector etichettato sul nodo dovrebbe corrispondere alla coppia chiave: valori in modo che un determinato pod possa essere eseguito su un nodo specifico. Per programmare il baccello, le etichette vengono utilizzate sui nodi e i nodelettori vengono utilizzati su POD. La piattaforma del contenitore OpenShift pianifica i baccelli sui nodi usando il nodeselector abbinando le etichette.

Inoltre, le etichette e il nodeselector vengono utilizzati per controllare quale pod deve essere programmato su un nodo specifico. Quando si utilizzano le etichette e il nodeselector, etichettare prima il nodo in modo che i baccelli non vengano deschedulati e quindi aggiungano il nodeselector al pod. Per posizionare un determinato baccello su un certo nodo, viene utilizzato il nodeselector, mentre il nodeselector a livello cluster consente di posizionare un nuovo baccello su un determinato nodo presente ovunque nel cluster. Il follettore del progetto viene utilizzato per mettere il nuovo pod su un determinato nodo nel progetto.

Prerequisiti

Per utilizzare il nodeselector Kubernetes, assicurarsi di avere i seguenti strumenti installati nel sistema:

  • Ubuntu 20.04 o qualsiasi altra ultima versione
  • Cluster minikube con un minimo di un nodo lavoratore
  • Strumento di riga di comando kubectl

Ora ci stiamo spostando nella sezione successiva in cui dimostreremo come puoi usare il nodeselector su un cluster Kubernetes.

Configurazione nodeselector in kubernetes

Un baccello può essere limitato per essere in grado di eseguire solo su un nodo specifico utilizzando il nodeselector. Il nodeselector è un vincolo di selezione del nodo specificato nella specifica POD Podspec. In parole semplici, il nodeselector è una funzione di pianificazione che ti dà il controllo sul pod per programmare il pod su un nodo con la stessa etichetta specificata dall'utente per l'etichetta nodeselector. Per utilizzare o configurare il nodeselector in kubernetes, è necessario il cluster minikube. Avvia il cluster Minikube con il comando indicato di seguito:

> Minikube Start

Ora che il cluster minikube è stato avviato correttamente, possiamo iniziare l'implementazione della configurazione del nodeselector in kubernetes. In questo documento ti guideremo a creare due distribuzioni, uno è senza alcun nodolettore e l'altro è con il nodeselector.

Configurare la distribuzione senza nodeselector

Innanzitutto, estrarremo i dettagli di tutti i nodi attualmente attivi nel cluster utilizzando il comando indicato di seguito:

> kubectl ottieni nodi

Questo comando elencherà tutti i nodi presenti nel cluster con i dettagli di nomi, stato, ruoli, età e parametri della versione. Vedi l'output del campione indicato di seguito:

Ora, controlleremo quali TAINTS sono attivi sui nodi nel cluster in modo da poter pianificare di distribuire i pod sul nodo di conseguenza. Il comando indicato di seguito deve essere utilizzato per ottenere la descrizione dei contatti applicati sul nodo. Non dovrebbero esserci contatti attivi sul nodo in modo che i pod possano essere facilmente distribuiti su di esso. Quindi, vediamo quali contatti sono attivi nel cluster eseguendo il seguente comando:

> kubectl Descrivere i nodi minikube | Grep Taint

Dall'output sopra indicato, possiamo vedere che non c'è una contaminazione applicata sul nodo, proprio esattamente ciò di cui abbiamo bisogno per distribuire i pod sul nodo. Ora, il prossimo passo è creare una distribuzione senza specificare alcun nodo. Del resto, utilizzeremo un file YAML in cui memorizzeremo la configurazione del nodeselector. Il comando allegato qui verrà utilizzato per la creazione del file YAML:

> Nano Deplond.Yaml

Qui, stiamo tentando di creare un file yaml chiamato Deplond.Yaml con il comando nano.

Dopo aver eseguito questo comando, avremo un deplond.File YAML in cui memorizzeremo la configurazione di distribuzione. Vedere la configurazione di distribuzione indicata di seguito:

Ora creeremo la distribuzione utilizzando il file di configurazione della distribuzione. Il Deplond.Il file Yaml verrà utilizzato insieme al comando "Crea" per creare la configurazione. Vedi il comando completo indicato di seguito:

> kubectl crea -f deplond.Yaml

Come mostrato sopra, la distribuzione è stata creata correttamente ma senza nodeselector. Ora, controlliamo i nodi già disponibili nel cluster con il comando indicato di seguito:

> kubectl ottieni baccelli

Questo elencerà tutti i pod disponibili nel cluster. Vedi l'output indicato di seguito:

Successivamente, dobbiamo cambiare il conteggio delle repliche che possono essere fatte modificando il Deplond.file yaml. Basta aprire il Deplond.file yaml e modifica il valore delle repliche. Qui, stiamo cambiando le repliche: 3 in repliche: 30. Vedere la modifica nell'istantanea indicata di seguito:

Ora, le modifiche devono essere applicate alla distribuzione dal file di definizione della distribuzione e che possono essere eseguite utilizzando il comando seguente:

> kubectl applica -f deplond.Yaml

Ora, controlliamo maggiori dettagli dei pod utilizzando l'opzione -o ampia:

> kubectl ottieni baccelli -o largo

Dall'output sopra indicato, possiamo vedere che i nuovi nodi sono stati creati e programmati sul nodo poiché non esiste una contaminazione attiva sul nodo che stiamo usando dal cluster. Quindi, dobbiamo specificamente attivare una contaminazione per garantire che i pod vengano programmati solo sul nodo desiderato. Per questo, dobbiamo creare l'etichetta sul nodo principale:

> Kubectl Etichetta nodi master on-master = true

Configurare la distribuzione con nodeselector

Per configurare la distribuzione con un nodeselector, seguiremo lo stesso processo che ha seguito per la configurazione della distribuzione senza alcun selettore nodico.

Innanzitutto, creeremo un file YAML con il comando "nano" in cui dobbiamo archiviare la configurazione della distribuzione.

> Nano nd.Yaml

Ora, salva la definizione di distribuzione nel file. È possibile confrontare entrambi i file di configurazione per visualizzare la differenza tra le definizioni di configurazione.

Ora, crea la distribuzione del nodeselector con il comando indicato di seguito:

> kubectl crea -f nd.Yaml

Ottieni i dettagli dei baccelli usando la bandiera -o larga:

> kubectl ottieni baccelli -o largo

Dall'output sopra indicato, possiamo notare che i pod vengono distribuiti sul nodo minikube. Cambiamo il conteggio delle repliche per verificare dove vengono distribuiti i nuovi pod nel cluster.

Applicare le nuove modifiche alla distribuzione utilizzando il comando seguente:

> kubectl applica -f nd.Yaml

Conclusione

In questo articolo, abbiamo avuto una panoramica del vincolo di configurazione nodeselector in Kubernetes. Abbiamo imparato cosa è un nodeselector in Kubernetes e con l'aiuto di un semplice scenario abbiamo imparato a creare una distribuzione con e senza vincoli di configurazione del nodo. Puoi fare riferimento a questo articolo se sei nuovo al concetto di nodeselector e trovare tutte le informazioni pertinenti.