Ricerca nel sito web

Etichette e selettori in Kubernetes


Su questa pagina

  1. Prerequisiti
  2. Cosa faremo
  3. Crea un pod e un servizio con etichette e selettori
  4. Capire le etichette
  5. 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

  1. Selettori basati sull'uguaglianza:
    questo consente di filtrare per chiave e valore, dove gli oggetti corrispondenti devono soddisfare tutte le etichette specificate.
  2. 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

  1. 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

  1. Crea un pod e un servizio con etichette e selettore
  2. 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.