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 vous guidera à travers le processus de création d'un DaemonSet pour déployer des répliques d'un pod sur l'ensemble des nœuds de votre cluster.
Démarrer le cluster Minikube
Avant de créer des ressources, vous avez besoin d'un cluster Kubernetes opérationnel. Minikube est un environnement Kubernetes léger qui s'exécute sur votre machine locale.
Accédez à votre répertoire de travail :
Ouvrez le terminal et placez-vous dans le dossier de projet par défaut :
cd /home/labex/projectDémarrez Minikube :
Lancez Minikube pour initialiser un cluster Kubernetes :
minikube start- Cette commande configure un cluster Kubernetes à nœud unique sur votre machine locale.
- Le démarrage de Minikube peut prendre quelques minutes selon les performances de votre système.
Vérifiez que Minikube est en cours d'exécution :
Vérifiez l'état du cluster Minikube :
minikube status- Assurez-vous que des composants tels que
kubeletetapiserverapparaissent commeRunning. - Si le cluster n'est pas en cours d'exécution, relancez
minikube start.
- Assurez-vous que des composants tels que
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 pod simple qui servira de modèle pour les répliques. 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épliques 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épliques et définit le sélecteur matchLabels sur app: myapp pour garantir que les répliques sont créées 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 bien été créé et que les répliques du myapp-pod s'exécutent 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 présent dans le 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 modifie l'image utilisée par le myapp-container pour busybox et définit la commande sur sleep 3600.
Appliquez la mise à jour du DaemonSet avec 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épliques du myapp-pod s'exécutent désormais 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, vous avez appris à utiliser un DaemonSet dans Kubernetes pour exécuter des répliques d'un pod sur chaque nœud d'un cluster.


