Aller au contenu principal

Lab 3.4 - Configuration des Health Checks

Objectifs

À la fin de ce lab, vous serez capable de:

  • Configurer des Liveness Probes
  • Configurer des Readiness Probes
  • Utiliser des Startup Probes
  • Observer le comportement des probes

Exercice 1: Liveness Probe

Étape 1: Créer un Pod avec Liveness Probe

Créez pod-liveness.yaml:

apiVersion: v1
kind: Pod
metadata:
name: liveness-pod
spec:
containers:
- name: nginx
image: nginx:1.20
livenessProbe:
httpGet:
path: /
port: 80
initialDelaySeconds: 10
periodSeconds: 5
failureThreshold: 3

Étape 2: Appliquer et observer

kubectl apply -f pod-liveness.yaml

# Observer les événements
kubectl describe pod liveness-pod

Exercice 2: Readiness Probe

Étape 1: Créer un Pod avec Readiness Probe

Créez pod-readiness.yaml:

apiVersion: v1
kind: Pod
metadata:
name: readiness-pod
labels:
app: web
spec:
containers:
- name: nginx
image: nginx:1.20
readinessProbe:
httpGet:
path: /
port: 80
initialDelaySeconds: 5
periodSeconds: 5

Étape 2: Créer un Service

Créez service.yaml:

apiVersion: v1
kind: Service
metadata:
name: web-service
spec:
selector:
app: web
ports:
- port: 80

Étape 3: Observer

# Voir les Endpoints
kubectl get endpoints web-service

# Le Pod apparaît dans les Endpoints seulement quand la readiness probe réussit

Exercice 3: Startup Probe

Étape 1: Créer un Pod avec Startup Probe

Créez pod-startup.yaml:

apiVersion: v1
kind: Pod
metadata:
name: startup-pod
spec:
containers:
- name: slow-app
image: busybox
command: ['sh', '-c', 'sleep 30 && echo "Ready" && sleep 3600']
startupProbe:
exec:
command: ['sh', '-c', 'echo "started"']
failureThreshold: 30
periodSeconds: 2
livenessProbe:
exec:
command: ['sh', '-c', 'echo "alive"']
periodSeconds: 10

Étape 2: Observer

kubectl apply -f pod-startup.yaml

# Observer le démarrage
kubectl get pod startup-pod -w

# Les liveness/readiness probes attendent que startup réussisse

Exercice 4: Probe qui Échoue

Étape 1: Créer un Pod avec probe qui échoue

Créez pod-failing.yaml:

apiVersion: v1
kind: Pod
metadata:
name: failing-pod
spec:
containers:
- name: nginx
image: nginx:1.20
livenessProbe:
httpGet:
path: /nonexistent
port: 80
initialDelaySeconds: 5
periodSeconds: 5
failureThreshold: 3

Étape 2: Observer le redémarrage

kubectl apply -f pod-failing.yaml

# Observer les redémarrages
kubectl get pod failing-pod -w

# Voir les événements
kubectl describe pod failing-pod

Nettoyage

kubectl delete pod liveness-pod readiness-pod startup-pod failing-pod
kubectl delete service web-service

Questions de Réflexion

  1. Quelle est la différence entre liveness et readiness?
  2. Quand utiliser une startup probe?
  3. Que se passe-t-il si une liveness probe échoue?
  4. Pourquoi les readiness probes sont-elles importantes pour les Services?

Prochaines Étapes

Quiz Module 3: Valider vos connaissances
Module 4: Services et Networking


Lab créé le: Décembre 2024