Commandes Cordon et Uncordon de Kubernetes

KubernetesBeginner
Pratiquer maintenant

Introduction

Dans un cluster Kubernetes, les nœuds peuvent prendre différents états, tels que "prêt" ou "non prêt". Les commandes cordon et uncordon sont utilisées pour contrôler l'ordonnancement des pods sur un nœud particulier. La commande cordon marque un nœud comme "non ordonnançable", empêchant de nouveaux pods d'être ordonnancés sur ce nœud, tandis que la commande uncordon marque un nœud comme "ordonnançable" à nouveau, permettant de nouveaux pods d'être ordonnancés sur ce nœud. Dans ce laboratoire (LabEx), nous allons explorer comment utiliser ces commandes pour contrôler l'ordonnancement des pods sur les nœuds dans un cluster Kubernetes.

Démarrer le cluster Minikube

Avant de créer des ressources, vous avez besoin d'un cluster Kubernetes en cours d'exécution. Minikube est un environnement Kubernetes léger qui s'exécute sur votre machine locale.

  1. Accédez à votre répertoire de travail :

    Ouvrez le terminal et accédez au dossier de projet par défaut :

    cd /home/labex/project
  2. Démarrez Minikube :

    Démarrez Minikube pour initialiser un cluster Kubernetes :

    minikube start
    • Cette commande configure un cluster Kubernetes mono - nœud sur votre machine locale.
    • Minikube peut prendre quelques minutes à démarrer en fonction des performances de votre système.
  3. Vérifiez que Minikube est en cours d'exécution :

    Vérifiez l'état du cluster Minikube :

    minikube status
    • Recherchez des composants tels que kubelet et apiserver listés comme Running (en cours d'exécution).
    • Si le cluster n'est pas en cours d'exécution, relancez la commande minikube start.

Si vous rencontrez des problèmes lors du démarrage de Minikube, utilisez minikube delete pour réinitialiser l'environnement si nécessaire.

Marquer un nœud comme non ordonnançable (Cordoning)

Dans cette étape, nous allons utiliser la commande cordon pour marquer un nœud comme "non ordonnançable", empêchant de nouveaux pods d'être ordonnancés sur ce nœud. Voici les étapes :

  1. Liste des nœuds dans le cluster en utilisant la commande suivante :
kubectl get nodes
  1. Marquez le nœud comme non ordonnançable en utilisant la commande suivante :
kubectl cordon minikube
  1. Vérifiez que le nœud a été marqué comme non ordonnançable en vérifiant le champ SchedulingDisabled dans l'état du nœud en utilisant la commande suivante :
kubectl get node | grep SchedulingDisabled

Rendre un nœud ordonnançable (Uncordoning)

Dans cette étape, nous allons utiliser la commande uncordon pour marquer un nœud comme "ordonnançable" à nouveau, permettant de nouveaux pods d'être ordonnancés sur ce nœud. Voici les étapes :

  1. Rendez le nœud ordonnançable à nouveau en utilisant la commande suivante :
kubectl uncordon minikube
  1. Vérifiez que le nœud a été rendu ordonnançable en vérifiant le champ SchedulingDisabled dans l'état du nœud en utilisant la commande suivante :
kubectl get node | grep SchedulingDisabled

Marquer et démarquer des nœuds avec des pods

Dans cette étape, nous allons simuler un scénario où un nœud doit être marqué comme non ordonnançable (cordonné) puis rendu ordonnançable (décordonné) alors qu'il a des pods en cours d'exécution. Voici les étapes :

  1. Exécutez la commande suivante pour accéder au répertoire /home/labex/project/ :
cd /home/labex/project/
  1. Créez un déploiement nommé "deploy.yaml" avec plusieurs copies en utilisant le fichier YAML suivant dans le répertoire /home/labex/project/ :
## deploy.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment
spec:
  selector:
    matchLabels:
      app: nginx
  replicas: 1
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
        - name: nginx
          image: nginx:1.16
          ports:
            - containerPort: 80
  1. Marquez le nœud comme non ordonnançable en utilisant la commande suivante :
kubectl cordon minikube
  1. Appliquez le fichier YAML en utilisant la commande suivante :
kubectl apply -f deploy.yaml
  1. Liste les pods en cours d'exécution sur les nœuds en utilisant la commande suivante :
kubectl get pods -o wide

Vérifiez si le pod est correctement ordonnancé et démarré.

  1. Rendez le nœud ordonnançable à nouveau en utilisant la commande suivante :
kubectl uncordon minikube
  1. Vérifiez l'état des pods en cours d'exécution sur le nœud pour vous assurer qu'ils sont réordonnancés sur le nœud rendu ordonnançable en utilisant la commande suivante :
kubectl get pods -o wide

Utilisation des étiquettes (labels) pour marquer et démarquer des nœuds

Dans cette étape, nous allons utiliser des étiquettes (labels) pour marquer et démarquer des nœuds en fonction de critères spécifiques. Voici les étapes :

  1. Étiquetez les nœuds du cluster en utilisant la commande suivante :
kubectl label nodes minikube org=labex
  1. Marquez les nœuds qui ont l'étiquette spécifiée comme non ordonnançables en utilisant la commande suivante :
kubectl cordon -l org=labex
  1. Vérifiez que les nœuds ont été marqués comme non ordonnançables en vérifiant le champ SchedulingDisabled dans l'état des nœuds en utilisant la commande suivante :
kubectl get node -l org=labex | grep SchedulingDisabled
  1. Rendez les nœuds qui ont l'étiquette spécifiée ordonnançables à nouveau en utilisant la commande suivante :
kubectl uncordon -l org=labex
  1. Vérifiez que les nœuds ont été rendus ordonnançables en vérifiant le champ SchedulingDisabled dans l'état des nœuds en utilisant la commande suivante :
kubectl get node -l org=labex | grep SchedulingDisabled

Résumé

Dans ce laboratoire, nous avons exploré comment utiliser les commandes cordon et uncordon dans Kubernetes pour contrôler l'ordonnancement des pods sur les nœuds. Nous avons appris à marquer et à démarquer des nœuds, même lorsqu'ils ont des pods en cours d'exécution, et à utiliser des étiquettes (labels) pour marquer et démarquer sélectivement des nœuds en fonction de critères spécifiques. Ces commandes sont utiles pour gérer la disponibilité et la résilience des pods dans un cluster Kubernetes.