Introduction
Dans Kubernetes, une sonde (probe) est un outil de diagnostic utilisé pour déterminer si un conteneur est en vie et prêt à accepter le trafic. Il existe deux types de sondes : les sondes de vivacité (liveness probes) et les sondes de préparation (readiness probes). Dans ce laboratoire (lab), nous nous concentrerons sur ContainerProbe, qui est un outil utilisé pour détecter quand un conteneur est prêt à accepter le trafic.
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.
Accédez à votre répertoire de travail :
Ouvrez le terminal et accédez au dossier de projet par défaut :
cd /home/labex/projectDé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.
Vérifiez que Minikube est en cours d'exécution :
Vérifiez l'état du cluster Minikube :
minikube status- Recherchez des composants tels que
kubeletetapiserverlistés commeRunning. - Si le cluster n'est pas en cours d'exécution, relancez la commande
minikube start.
- Recherchez 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 déploiement (Deployment)
La première étape consiste à créer un déploiement dans Kubernetes. Nous utiliserons ce déploiement pour tester le ContainerProbe.
- Créez un nouveau fichier nommé
deployment.yamldans le répertoire/home/labex/project. - Copiez et collez le code suivant dans le fichier :
apiVersion: apps/v1
kind: Deployment
metadata:
name: containerprobe-deployment
spec:
replicas: 1
selector:
matchLabels:
app: containerprobe
template:
metadata:
labels:
app: containerprobe
spec:
containers:
- name: containerprobe
image: nginx
ports:
- containerPort: 80
Ce code crée un déploiement avec une seule réplique, un sélecteur (selector) avec l'étiquette (label) app: containerprobe et un conteneur exécutant l'image nginx.
- Appliquez le déploiement à votre cluster :
kubectl apply -f deployment.yaml
Ajouter une sonde de vivacité (Liveness Probe)
L'étape suivante consiste à ajouter une sonde de vivacité au conteneur nginx. Une sonde de vivacité est utilisée pour déterminer si le conteneur est en vie. Si la sonde échoue, Kubernetes redémarrera le conteneur.
- Mettez à jour le fichier
deployment.yamldans le répertoire/home/labex/projectavec le contenu suivant :
apiVersion: apps/v1
kind: Deployment
metadata:
name: containerprobe-deployment
spec:
replicas: 1
selector:
matchLabels:
app: containerprobe
template:
metadata:
labels:
app: containerprobe
spec:
containers:
- name: containerprobe
image: nginx
ports:
- containerPort: 80
livenessProbe:
httpGet:
path: /
port: 80
Ce code spécifie que la sonde de vivacité doit envoyer une requête HTTP GET au chemin racine sur le port 80.
- Mettez à jour le déploiement :
kubectl apply -f deployment.yaml
Tester la sonde de vivacité (Liveness Probe)
Maintenant que nous avons ajouté une sonde de vivacité, nous pouvons la tester pour voir si elle fonctionne correctement.
- Obtenez le nom du pod :
kubectl get pods -l app=containerprobe -o jsonpath='{.items[0].metadata.name}'
Cette commande obtient le nom du pod créé par le déploiement.
- Obtenez l'état de la sonde de vivacité :
kubectl describe pod <pod-name>
Remplacez <pod-name> par le nom du pod obtenu à l'étape précédente.
Vous devriez voir une sortie qui inclut ce qui suit :
Liveness: http-get http://:80/ delay=0s timeout=1s period=10s #success=1 #failure=3
Cela indique que la sonde de vivacité est correctement configurée.
Ajouter une sonde de préparation (Readiness Probe)
L'étape suivante consiste à ajouter une sonde de préparation au conteneur nginx. Une sonde de préparation est utilisée pour déterminer si le conteneur est prêt à accepter le trafic. Si la sonde échoue, Kubernetes n'enverra pas de trafic au conteneur.
- Ajoutez le code suivant à la définition du conteneur dans le fichier
deployment.yaml:
apiVersion: apps/v1
kind: Deployment
metadata:
name: containerprobe-deployment
spec:
replicas: 1
selector:
matchLabels:
app: containerprobe
template:
metadata:
labels:
app: containerprobe
spec:
containers:
- name: containerprobe
image: nginx
ports:
- containerPort: 80
livenessProbe:
httpGet:
path: /
port: 80
readinessProbe:
httpGet:
path: /
port: 80
Ce code spécifie que la sonde de préparation doit envoyer une requête HTTP GET au chemin racine sur le port 80.
- Mettez à jour le déploiement :
kubectl apply -f deployment.yaml
Tester la sonde de préparation (Readiness Probe)
Maintenant que nous avons ajouté une sonde de préparation, nous pouvons la tester pour voir si elle fonctionne correctement.
- Obtenez le nom du pod :
kubectl get pods -l app=containerprobe -o jsonpath='{.items[0].metadata.name}'
Cette commande obtient le nom du pod créé par le déploiement.
- Obtenez l'état de la sonde de préparation :
kubectl describe pod <pod-name>
Remplacez <pod-name> par le nom du pod obtenu à l'étape précédente.
Vous devriez voir une sortie qui inclut ce qui suit :
Readiness: http-get http://:80/ delay=0s timeout=1s period=10s #success=1 #failure=3
Cela indique que la sonde de préparation est correctement configurée.
Résumé
Dans ce laboratoire, nous avons appris à utiliser le ContainerProbe dans Kubernetes. Nous avons créé un déploiement (deployment), ajouté une sonde de vivacité (liveness probe), testé la sonde de vivacité, ajouté une sonde de préparation (readiness probe) et testé la sonde de préparation. En utilisant le ContainerProbe, nous pouvons nous assurer que nos conteneurs sont prêts à accepter le trafic et fonctionnent correctement.


