Kubernetes Matchlabels

Kubernetes Matchlabels
In questo post, discuteremo principalmente di etichette, matchlabel e selettori e come verranno utilizzati in pod, servizi e distribuzioni. Saprai come gli articoli Kubernetes come Giobbe, distribuzione, set di repliche e Daemon Set impiegano queste idee una volta che le hai capite. Quindi, iniziamo con la definizione di etichette e matchlabels.

Cosa sono le etichette e i matchlabels?

All'interno di Kubernetes, le etichette sono un pezzo di metadati a forma di chiave/valore collegato a un oggetto. Ulteriori informazioni sulla cosa rilevante per il consumatore o l'oggetto sono fornite tramite etichette. Ad esempio, un'etichetta può identificare le specifiche hardware di un nodo o se un carico di lavoro è per i test di produzione.

Le etichette servono come tecnica di raggruppamento implicita per oggetti simili, offrendo anche un meccanismo di ricerca per utenti, controller e altri sistemi.

Le etichette consentono agli utenti di mappare i propri sistemi organizzativi agli articoli di sistema in modo vagamente connesso senza richiedere ai clienti di salvare le mappature.

Sono comuni entità multidimensionali come distribuzioni di servizi e condotte di elaborazione batch. Le azioni di taglio incrociato sono spesso richieste nella gestione, il che mina l'incapsulamento di rappresentazioni rigorosamente gerarchiche, in particolare gerarchie inflessibili dettate dall'infrastruttura piuttosto che da utenti.

I matchlabel sono un tipo di mappa della coppia di valore chiave. Una coppia di valori a chiave singola nella mappa MatchLabels corrisponde a un elemento di matchespressions con il campo chiave "Tasto", l'operatore "In" e solo "valore" nell'array di valori. Una raccolta di requisiti di selezione POD si chiama matchespressions.

In, esiste, douSnotexist e notin sono tutti operatori validi e richiesti. Nel caso di "in" e "notin", assicurarsi che i valori impostati non siano non vuoti. Tutti i requisiti di matchlabels e matchespressions sono e sono tutti insieme per corrispondere.

Prerequisito:

Dobbiamo installare Ubuntu 20.04 Per mettere in pratica la conoscenza teorica ed eseguire le istruzioni in Kubernetes. I comandi Kubectl vengono eseguiti sul sistema operativo Linux in questo esempio. Per eseguire Kubernetes su Linux, installare il cluster minikube. Minikube facilita la comprensione fornendo un meccanismo efficiente per i comandi e le applicazioni di test.

Abbiamo eseguito il comando "Minikube Start" sul terminale per inizializzare il minikube. Questo comando lancia il cluster Kubernetes e crea una macchina virtuale in grado di eseguire il cluster. Si connetterà anche con il cluster utilizzando l'installazione di Kubectl. L'output del comando "Minikube Start" è rappresentato di seguito.

Creazione di una distribuzione

In questo esempio, abbiamo creato due distribuzioni. Uno per un servizio Web che funziona su infrastrutture interne e un altro su infrastruttura DMZ. La distribuzione iniziale (denominata DEP11.Yaml) è realizzato, come mostrato di seguito.

Ecco l'intero Dep11.File di configurazione YAML, che include il campo Matchlabels.

Il comando per creare il pod è il seguente.

La distribuzione (denominata: DEP12.YAML) che opera sull'infrastruttura DMZ è mostrato di seguito.

Di seguito è disponibile l'intero file di configurazione.

Quando i pod sono distribuiti, hanno le etichette in esecuzione = nginx. Sono possibili più etichette per un oggetto; Tuttavia, più etichette con la stessa chiave non lo sono. Se ci sono diverse voci di etichetta con la stessa chiave in un manifest dell'oggetto, viene utilizzato l'ultimo valore.

Il tag selettore può essere visto qui, che la distribuzione utilizza per comunicare con i suoi baccelli. Il campo selettore della distribuzione specifica come determina quali pod gestire. È necessario selezionare prima un'etichetta dal modello POD. Sono state anche possibili regole di selezione più complicate se il modello POD si adattava ai criteri. Ecco il comando per la creazione del pod.

Per vedere le etichette di un baccello, usa il sottocomando GET:

I pod lanciati utilizzando i manifesti di distribuzione sopra sono mostrati nel blocco di codice seguente. L'etichetta pod-template-hash viene applicata automaticamente dal controller di distribuzione.

I pod forniti da Kubectl GET PODS possono essere filtrati utilizzando uno o più parametri di selezione. Nell'output, le etichette sono presentate come una colonna aggiuntiva.

Per ottenere pod Nginx interni, utilizzare diversi selettori.

Il controller di distribuzione utilizza un selettore per determinare quali pod sono inclusi in una distribuzione. Viene creato un oggetto ReplicAset quando viene creata una distribuzione e il controller di replica lo monito.

Le nostre distribuzioni hanno attualmente quattro pod in uno stato pronto.

La configurazione di una replicaset è mostrata di seguito.

Ecco il resto dell'output del codice aereo.

Cambiamo una delle etichette su un pod in modo che non corrisponda più al nostro selettore. Dai un'occhiata alle specifiche matchlabels per vedere cosa succede.

Dopo aver modificato l'etichetta di corsa sul pod e distribuire un altro pod per risolvere il problema, il controller replica poteva individuare solo tre pod che operano utilizzando la selezione MatchLabel.

Per confermare che la distribuzione è stata creata, eseguire l'istruzione "Kubectl Get Deployments". I seguenti campi vengono presentati quando ispezionate le distribuzioni nel cluster: nome, pronto, aggiornato, disponibile ed età.

Come puoi vedere di seguito, abbiamo utilizzato diversi criteri per acquisire baccelli NGINX interni.

Conclusione:

Questo articolo ha chiarito le differenze tra etichette e matchlabels. Abbiamo già visto i vantaggi dell'impiego di etichette. Le capacità di categorizzazione e filtraggio delle etichette Kubernetes sono fantastiche, come puoi vedere sopra. L'uso delle etichette renderà i tuoi registri più pertinenti, gli strumenti di monitoraggio ti consentiranno di scegliere determinati carichi di lavoro di interesse e Bash Scripting ti fornirà una gamma più ampia di dati da gestire.