Etichette e selettori in Kubernetes
Su questa pagina
- Prerequisiti
- Cosa faremo
- Crea un pod e un servizio con etichette e selettori
- Capire le etichette
- Conclusione
Le etichette non sono altro che coppie chiave-valore assegnate a oggetti Kubernetes come pod, servizio e così via. Le etichette possono essere utilizzate per organizzare e selezionare oggetti Kubernetes. Le etichette possono essere associate agli oggetti al momento della creazione e possono essere modificate in qualsiasi momento. Possiamo aggiungere più etichette agli oggetti Kubernetes.
I selettori vengono utilizzati dagli utenti per selezionare un insieme di oggetti. Il selettore di etichette è la primitiva di raggruppamento principale in Kubernetes. L'API Kubernetes supporta due tipi di selettori
- Selettori basati sull'uguaglianza:
questo consente di filtrare per chiave e valore, dove gli oggetti corrispondenti devono soddisfare tutte le etichette specificate. - Selettori basati su set:
questo consente di filtrare le chiavi in base a un set di valori.
Per saperne di più su Etichette e Selettori, clicca qui.
In questo articolo, creeremo un pod con etichette e reindirizzeremo ad esso le richieste dal servizio utilizzando Selector. Eseguiremo anche operazioni di recupero ed eliminazione su pod e servizio utilizzando etichette/selettori sulla riga di comando.
Prerequisiti
- Cluster Kubernetes con almeno 1 nodo di lavoro.
Se vuoi imparare a creare un cluster Kubernetes, fai clic qui. Questa guida ti aiuterà a creare un cluster Kubernetes con 1 master e 2 nodi su istanze AWS Ubuntu 18l04 EC2.
Cosa faremo
- Crea un pod e un servizio con etichette e selettore
- Capire le etichette
Crea un pod e un servizio con etichette e selettori
Per creare un pod con etichette, crea un nuovo file e aggiungi i seguenti contenuti.
vim my-lable-demo-pod.yml
apiVersion: v1 kind: Pod metadata: name: label-demo-pod labels: environment: test app: nginx spec: containers: - name: nginx image: nginx:1.14.2 ports: - containerPort: 80
Per creare un servizio con un selettore, crea un file con la seguente definizione di servizio che utilizza lo spazio dei nomi predefinito.
vim my-selector-demo-service.yml
apiVersion: v1 kind: Service metadata: name: selector-demo-service namespace: default labels:
environment: test app: nginx spec: externalTrafficPolicy: Local ports: - name: http port: 80 protocol: TCP targetPort: 80 selector: app: nginx type: NodePort
Per creare un pod, esegui il seguente comando.
kubectl create -f my-lable-demo-pod.yml
kubectl get pods
Per creare un servizio, eseguire il seguente comando.
kubectl create -f my-selector-demo-service.yml
kubectl get service
Ora, per verificare se il Label Selector funziona, prova ad accedere al servizio su NodeIP:NodePort.
Qui, l'IP del mio nodo è 106.210.138.189 e il servizio è esposto su Port=30385.
Poiché siamo in grado di accedere al pod Nginx utilizzando il servizio che abbiamo creato, significa che l'etichetta e il selettore hanno funzionato.
Comprendere le etichette
Ora possiamo eseguire varie operazioni sul pod e sul servizio che abbiamo creato utilizzando l'etichetta.
Per ottenere i pod che corrispondono a un'etichetta di nostra scelta, possiamo \--selector\ nel comando come segue.
kubectl get pods --selector environment=test
kubectl get pods --selector app=nginx
Possiamo anche usare \-l\ invece di \--selector\ per ottenere i pod che corrispondono all'etichetta di nostra scelta.
kubectl get pods -l environment=test
kubectl get pods -l environment=prod
Possiamo persino eseguire l'operazione di eliminazione del pod specificando l'etichetta. I pod che corrispondono all'etichetta possono essere eliminati utilizzando i seguenti comandi.
kubectl get pods
kubectl delete pods -l environment=test
kubectl get pods
Il modo in cui potremmo eliminare i pod che corrispondono alle etichette, possiamo anche eliminare il servizio.
Per eliminare la pubblicazione che corrisponde a un'etichetta, utilizza il seguente comando. Inoltre, se non esiste alcun servizio corrispondente all'etichetta specificata nel comando, non verrà eseguita alcuna operazione di eliminazione.
kubectl get service
kubectl delete service -l environemt=test
kubectl delete service -l environment=test
kubectl get service
Conclusione
In questo articolo, abbiamo creato un pod con etichette al suo interno e abbiamo creato e indirizzato un servizio a quei pod che corrispondono all'etichetta. Abbiamo anche visto come eliminare i pod e i servizi che corrispondono alle etichette.