Examiner les nœuds avec Kubectl

KubernetesKubernetesBeginner
Pratiquer maintenant

💡 Ce tutoriel est traduit par l'IA à partir de la version anglaise. Pour voir la version originale, vous pouvez cliquer ici

Introduction

Dans ce laboratoire (lab), vous apprendrez à utiliser kubectl pour examiner les nœuds de votre cluster Kubernetes. Vous commencerez par les informations de base sur les nœuds et aborderez ensuite des sujets plus avancés tels que les taints et les tolerations. Ce laboratoire suppose que vous avez déjà configuré un cluster Kubernetes et que vous avez installé kubectl.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL kubernetes(("Kubernetes")) -.-> kubernetes/TroubleshootingandDebuggingCommandsGroup(["Troubleshooting and Debugging Commands"]) kubernetes(("Kubernetes")) -.-> kubernetes/ConfigurationandVersioningGroup(["Configuration and Versioning"]) kubernetes(("Kubernetes")) -.-> kubernetes/BasicsGroup(["Basics"]) kubernetes(("Kubernetes")) -.-> kubernetes/BasicCommandsGroup(["Basic Commands"]) kubernetes(("Kubernetes")) -.-> kubernetes/ClusterInformationGroup(["Cluster Information"]) kubernetes/BasicsGroup -.-> kubernetes/initialization("Initialization") kubernetes/BasicCommandsGroup -.-> kubernetes/get("Get") kubernetes/BasicCommandsGroup -.-> kubernetes/annotate("Annotate") kubernetes/BasicCommandsGroup -.-> kubernetes/cordon("Cordon") kubernetes/BasicCommandsGroup -.-> kubernetes/uncordon("Uncordon") kubernetes/BasicCommandsGroup -.-> kubernetes/taint("Taint") kubernetes/ClusterInformationGroup -.-> kubernetes/cluster_info("Cluster Info") kubernetes/TroubleshootingandDebuggingCommandsGroup -.-> kubernetes/describe("Describe") kubernetes/ConfigurationandVersioningGroup -.-> kubernetes/label("Label") subgraph Lab Skills kubernetes/initialization -.-> lab-9790{{"Examiner les nœuds avec Kubectl"}} kubernetes/get -.-> lab-9790{{"Examiner les nœuds avec Kubectl"}} kubernetes/annotate -.-> lab-9790{{"Examiner les nœuds avec Kubectl"}} kubernetes/cordon -.-> lab-9790{{"Examiner les nœuds avec Kubectl"}} kubernetes/uncordon -.-> lab-9790{{"Examiner les nœuds avec Kubectl"}} kubernetes/taint -.-> lab-9790{{"Examiner les nœuds avec Kubectl"}} kubernetes/cluster_info -.-> lab-9790{{"Examiner les nœuds avec Kubectl"}} kubernetes/describe -.-> lab-9790{{"Examiner les nœuds avec Kubectl"}} kubernetes/label -.-> lab-9790{{"Examiner les nœuds avec Kubectl"}} end

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.

Informations de base sur les nœuds

La première chose que vous allez faire est d'obtenir des informations de base sur les nœuds de votre cluster.

  1. Pour afficher la liste des nœuds de votre cluster, exécutez la commande suivante :

    kubectl get nodes

    Cela affichera la liste de tous les nœuds de votre cluster ainsi que leur statut.

  2. Pour obtenir des informations plus détaillées sur un nœud spécifique, exécutez la commande suivante :

    kubectl describe node minikube

    Remplacez minikube par le nom du nœud que vous souhaitez examiner. Cela vous donnera des informations détaillées sur le statut, la capacité et l'utilisation du nœud.

Étiquettes (Labels) et annotations

Les étiquettes (labels) et les annotations peuvent être utilisées pour ajouter des métadonnées aux nœuds de votre cluster. Ces métadonnées peuvent être utilisées pour sélectionner des nœuds pour des tâches spécifiques ou pour filtrer les nœuds en fonction de certains critères.

  1. Pour afficher les étiquettes et les annotations d'un nœud spécifique, exécutez la commande suivante :

    kubectl get node minikube --show-labels=true

    Cela affichera les étiquettes et les annotations du nœud spécifié.

  2. Pour ajouter une étiquette à un nœud, exécutez la commande suivante :

    kubectl label node minikube org=labex
  3. Pour ajouter une annotation à un nœud, exécutez la commande suivante :

    kubectl annotate node minikube environment=production
  4. Utilisez la commande suivante pour vérifier les étiquettes sur le nœud :

    kubectl get nodes --show-labels

    Cela affichera une liste de tous les nœuds du cluster ainsi que leurs étiquettes. Les nœuds peuvent être étiquetés pour faciliter l'identification de leur fonction ou de leurs caractéristiques.

Taints et tolerations

Les taints et les tolerations peuvent être utilisés pour contrôler quels pods peuvent être planifiés sur quels nœuds de votre cluster. Un taint est une étiquette spéciale qui marque un nœud comme inapproprié pour certains types de pods, et une toleration est un paramètre qui permet à un pod d'être planifié sur un nœud avec un taint correspondant.

  1. Pour afficher les taints d'un nœud spécifique, exécutez la commande suivante :

    kubectl describe node minikube | grep Taints

    Cela affichera les taints du nœud spécifié.

  2. Pour ajouter un taint à un nœud, exécutez la commande suivante :

    kubectl taint node minikube app=backend:NoSchedule
  3. Pour créer une toleration pour un pod, exécutez la commande suivante :

    cat << EOF | kubectl apply -f -
    apiVersion: v1
    kind: Pod
    metadata:
      name: my-pod
    spec:
      containers:
        - name: my-container
          image: nginx
      tolerations:
        - key: app
          operator: Exists
          effect: NoSchedule
    EOF

    Ce pod utilise app comme nom du taint et NoSchedule comme effet que le taint doit avoir.

Afficher la capacité et l'utilisation des ressources d'un nœud

Pour afficher les ressources disponibles sur un nœud, utilisez la commande suivante :

kubectl describe node minikube | grep -A 8 "Allocated resources"

Remplacez minikube par le nom du nœud que vous souhaitez examiner.

Cela fournira des informations détaillées sur le nœud, y compris sa capacité et son utilisation actuelle des ressources.

Afficher les événements d'un nœud

Dans Kubernetes, vous pouvez utiliser la commande suivante pour filtrer tous les événements liés à un nœud spécifique :

kubectl get events --field-selector involvedObject.kind=Node,involvedObject.name=minikube

Remplacez minikube par le nom du nœud que vous souhaitez interroger. Cette commande répertoriera tous les événements liés à ce nœud, tels que les redémarrages, les mises à niveau, etc.

Mettre un nœud en veille (Cordon) et le sortir de veille (Uncordon)

Dans certains cas, vous devrez peut-être retirer un nœud de rotation pour effectuer des opérations de maintenance ou pour d'autres raisons. Kubernetes propose un moyen de marquer un nœud comme non planifiable afin qu'aucun nouveau pod ne soit planifié sur celui-ci. Cela s'appelle le "cordon".

Pour mettre un nœud en veille (cordonner), utilisez la commande suivante :

kubectl cordon minikube

Remplacez minikube par le nom du nœud que vous souhaitez cordonner.

Ensuite, utilisez la commande suivante pour vérifier l'état du nœud :

kubectl get node

Pour sortir un nœud de veille (décordonner) et autoriser la planification de nouveaux pods sur celui-ci, utilisez la commande suivante :

kubectl uncordon minikube

Remplacez minikube par le nom du nœud que vous souhaitez décordonner.

Notez que le cordonnage d'un nœud ne déplace pas automatiquement les pods existants du nœud. Vous devriez supprimer ou déplacer manuellement les pods avant de cordonner le nœud pour éviter tout dysfonctionnement.

Félicitations, vous avez appris à cordonner et à décordonner un nœud dans Kubernetes.

Résumé

Dans ce laboratoire, vous avez appris à examiner les nœuds dans un cluster Kubernetes en utilisant kubectl. Vous avez appris à lister les nœuds, à vérifier leur statut, à afficher leurs étiquettes (labels) et à inspecter leur capacité et leur utilisation des ressources. Vous avez également appris à vider (drain) et à décordonner les nœuds pour les opérations de maintenance et de mise à niveau.