Exécution de pods avec des DaemonSets

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 Kubernetes, un DaemonSet est un type de contrôleur qui garantit qu'une copie d'un pod est exécutée sur chaque nœud du cluster. Ce laboratoire (LabEx) vous guidera tout au long du processus de création d'un DaemonSet pour exécuter des réplicas d'un pod sur chaque nœud du cluster.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL kubernetes(("Kubernetes")) -.-> kubernetes/AdvancedCommandsGroup(["Advanced Commands"]) kubernetes(("Kubernetes")) -.-> kubernetes/TroubleshootingandDebuggingCommandsGroup(["Troubleshooting and Debugging Commands"]) kubernetes(("Kubernetes")) -.-> kubernetes/BasicsGroup(["Basics"]) kubernetes(("Kubernetes")) -.-> kubernetes/BasicCommandsGroup(["Basic Commands"]) kubernetes/BasicsGroup -.-> kubernetes/initialization("Initialization") kubernetes/BasicCommandsGroup -.-> kubernetes/get("Get") kubernetes/BasicCommandsGroup -.-> kubernetes/create("Create") kubernetes/AdvancedCommandsGroup -.-> kubernetes/apply("Apply") kubernetes/TroubleshootingandDebuggingCommandsGroup -.-> kubernetes/describe("Describe") subgraph Lab Skills kubernetes/initialization -.-> lab-8454{{"Exécution de pods avec des DaemonSets"}} kubernetes/get -.-> lab-8454{{"Exécution de pods avec des DaemonSets"}} kubernetes/create -.-> lab-8454{{"Exécution de pods avec des DaemonSets"}} kubernetes/apply -.-> lab-8454{{"Exécution de pods avec des DaemonSets"}} kubernetes/describe -.-> lab-8454{{"Exécution de pods avec des DaemonSets"}} 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.

Créer un Pod

Créez un simple pod qui sera utilisé comme modèle pour les réplicas. Créez un fichier nommé /home/labex/project/myapp-pod.yaml avec le contenu suivant :

apiVersion: v1
kind: Pod
metadata:
  name: myapp-pod
spec:
  containers:
    - name: myapp-container
      image: nginx
      ports:
        - containerPort: 80

Créez le pod en utilisant la commande suivante :

kubectl apply -f /home/labex/project/myapp-pod.yaml

Créer un DaemonSet

Créez un DaemonSet pour exécuter des réplicas du myapp-pod sur chaque nœud du cluster. Créez un fichier nommé /home/labex/project/myapp-daemonset.yaml avec le contenu suivant :

apiVersion: apps/v1
kind: DaemonSet
metadata:
  name: myapp-daemonset
spec:
  selector:
    matchLabels:
      app: myapp
  template:
    metadata:
      labels:
        app: myapp
    spec:
      containers:
        - name: myapp-container
          image: nginx
          ports:
            - containerPort: 80

Ce DaemonSet utilise le myapp-pod comme modèle pour les réplicas et définit le sélecteur matchLabels sur app: myapp pour garantir que les réplicas sont créés sur chaque nœud.

Créez le DaemonSet en utilisant la commande suivante :

kubectl apply -f /home/labex/project/myapp-daemonset.yaml

Vérifier le DaemonSet

Vérifiez que le DaemonSet a été créé et que les réplicas du myapp-pod sont en cours d'exécution sur chaque nœud. Utilisez la commande suivante pour lister les nœuds du cluster :

kubectl get nodes

Utilisez la commande suivante pour lister les pods créés par le DaemonSet :

kubectl get pods -l app=myapp

Vous devriez voir un pod pour chaque nœud du cluster.

Mettre à jour le DaemonSet

Mettez à jour le DaemonSet pour modifier l'image utilisée par le myapp-container. Créez un fichier nommé /home/labex/project/myapp-daemonset-update.yaml avec le contenu suivant :

apiVersion: apps/v1
kind: DaemonSet
metadata:
  name: myapp-daemonset
spec:
  selector:
    matchLabels:
      app: myapp
  template:
    metadata:
      labels:
        app: myapp
    spec:
      containers:
        - name: myapp-container
          image: busybox
          command: ["sleep", "3600"]

Ce DaemonSet mis à jour change l'image utilisée par le myapp-container pour busybox et définit la commande sur sleep 3600.

Mettez à jour le DaemonSet en utilisant la commande suivante :

kubectl apply -f /home/labex/project/myapp-daemonset-update.yaml

Vérifiez que le DaemonSet a été mis à jour et que les réplicas du myapp-pod sont en cours d'exécution avec la nouvelle image. Utilisez la commande suivante pour lister les pods créés par le DaemonSet :

kubectl get pods -l app=myapp

Vous devriez voir de nouveaux pods créés avec l'image mise à jour.

Résumé

Dans ce laboratoire (lab), vous avez appris à utiliser un DaemonSet dans Kubernetes pour exécuter des réplicas d'un pod sur chaque nœud du cluster.