Étiquettes et sélecteurs dans Kubernetes

Les étiquettes ne sont rien d’autre que des paires clé-valeur attribuées aux objets Kubernetes comme les Pods, les Services, etc. Les étiquettes peuvent être utilisées pour organiser et sélectionner les objets Kubernetes. Les étiquettes peuvent être attachées aux objets au moment de leur création et peuvent être modifiées à tout moment. On peut ajouter plusieurs Labels aux objets Kubernetes.

Les sélecteurs sont utilisés par les utilisateurs pour sélectionner un ensemble d’objets. Le sélecteur d’étiquette est la primitive de regroupement de base dans Kubernetes. L’API Kubernetes prend en charge deux types de sélecteurs

  1. Sélecteurs basés sur l’égalité :
    Cela permet de filtrer par clé et valeur, où les objets correspondants doivent satisfaire toutes les étiquettes spécifiées.
  2. Sélecteurs basés sur les ensembles :
    Cela permet de filtrer les clés en fonction d’un ensemble de valeurs.

Pour en savoir plus sur les étiquettes et les sélecteurs, clique ici.

Dans cet article, nous allons créer un Pod avec des Étiquettes et rediriger les demandes vers lui depuis le service en utilisant un Sélecteur. Nous effectuerons également des opérations d’obtention et de suppression sur le Pod et le service à l’aide d’Étiquettes/Sélecteurs sur la ligne de commande.

Pré-requis

  1. Cluster Kubernetes avec au moins 1 nœud de travail.
    Si tu veux apprendre à créer un Cluster Kubernetes, clique ici. Ce guide t’aidera à créer un cluster Kubernetes avec 1 maître et 2 nœuds sur des instances EC2 AWS Ubuntu 18l04.

Ce que nous allons faire

  1. Créer un Pod et un service avec Labels et Selector
  2. Comprendre les Labels

Créer un Pod et un service avec des étiquettes et des sélecteurs

Pour créer un Pod avec des étiquettes, crée un nouveau fichier et ajoute-y le contenu suivant.

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

étiquette-demo-pod

Pour créer un service avec un sélecteur, crée un fichier avec la définition de service suivante.

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

service de sélection-démo

Pour créer un Pod, exécute la commande suivante.

kubectl create -f my-lable-demo-pod.yml
kubectl get pods

créer-pod-with-label

Pour créer un Service, exécute la commande suivante.

kubectl create -f my-selector-demo-service.yml
kubectl get service

créer un service avec sélecteur

Maintenant, pour vérifier si le sélecteur d’étiquettes fonctionne, essaie d’accéder au service sur NodeIP:NodePort.

Ici, l’Ip de mon Node est 106.210.138.189 et le service est exposé sur le Port=30385.

service-pointing-to-pod-with-matching-label

Puisque nous pouvons accéder au Pod Nginx en utilisant le service que nous avons créé, cela signifie que l’étiquette et le sélecteur ont fonctionné.

Comprendre les Étiquettes

Maintenant, nous pouvons effectuer diverses opérations sur le Pod et le Service que nous avons créés en utilisant l’Étiquette.

Pour obtenir les Pods correspondant à l’étiquette de notre choix, nous pouvons utiliser « –selector » dans la commande comme suit.

kubectl get pods --selector environment=test
kubectl get pods --selector app=nginx

get-pods-with-matching-labels

Nous pouvons aussi utiliser « -l » au lieu de « –selector » pour obtenir les Pods correspondant à l’étiquette de notre choix.

kubectl get pods -l environment=test
kubectl get pods -l environment=prod

commande alternative au sélecteur

Nous pouvons même effectuer l’opération de suppression de pods en spécifiant l’étiquette. Les Pods correspondant à l’étiquette peuvent être supprimés à l’aide des commandes suivantes.

kubectl get pods
kubectl delete pods -l environment=test
kubectl get pods

supprimez les pods avec l'étiquette correspondante

De la même façon que nous avons pu supprimer les Pods correspondant aux étiquettes, nous pouvons aussi supprimer le service.

Pour supprimer le service correspondant à une étiquette, utilise la commande suivante. De plus, s’il n’y a pas de service correspondant à l’étiquette spécifiée dans la commande, aucune opération de suppression ne sera effectuée.

kubectl get service
kubectl delete service -l environemt=test
kubectl delete service -l environment=test
kubectl get service

supprimer un service avec un label correspondant

Conclusion

Dans cet article, nous avons créé un Pod contenant des étiquettes et créé et pointé un service vers les Pods correspondant à l’étiquette. Nous avons également vu comment les Pods et les services correspondant aux étiquettes peuvent être supprimés.

Vous aimerez aussi...