Contrôles d’état : sondes de vivacité et de disponibilité
Configurez des sondes de vivacité et de disponibilité afin de garantir que vos applications sont saines et prêtes à traiter le trafic.
Contrôles d’état : sondes de vivacité et de disponibilité est une leçon Kubernetes Basics gratuite sur CoddyKit. Ceci est la leçon 3 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage Kubernetes Basics, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours Kubernetes Basics comprend 4 leçons au total.
Maintenir la bonne santé des applications
Comment Kubernetes sait-il si votre application fonctionne réellement ? Il ne suffit pas qu’un conteneur soit simplement en cours d’exécution ; il doit être sain et prêt à recevoir du trafic.
Kubernetes utilise des vérifications spéciales appelées sondes pour surveiller vos applications. Ces sondes contribuent à garantir à vos utilisateurs un service toujours fiable.
Que sont les sondes de vivacité ?
Une sonde de vivacité vérifie que votre application est toujours active et réactive. Si une sonde de vivacité échoue, Kubernetes considère que votre conteneur n’est pas sain et le redémarre.
Imaginez un dispositif qui surveille les battements du cœur : si le cœur s’arrête, un redémarrage est nécessaire ! Cela permet de récupérer après un interblocage ou un plantage de l’application.
Principes des sondes de vivacité
Vous pouvez configurer les sondes de vivacité à l’aide de différentes méthodes :
- HTTP GET : effectue une requête HTTP vers un chemin indiqué.
- Socket TCP : vérifie qu’une connexion TCP peut être ouverte vers un port.
- Commande Exec : exécute une commande à l’intérieur du conteneur.
Pour les applications web, HTTP GET est très courant. Voici un extrait montrant comment en définir une dans le YAML d’un pod :
livenessProbe:
httpGet:
path: /healthz
port: 8080
initialDelaySeconds: 5
periodSeconds: 5Une sonde de vivacité en action
Cette application Python Flask simule un état non sain en plantant après deux requêtes vers /healthz. La sonde Kubernetes le détectera et redémarrera le conteneur.
Commencez par enregistrer ceci sous app.py :
from flask import Flask, Response
import os
import time
app = Flask(__name__)
request_count = 0
@app.route('/healthz')
def health_check():
global request_count
request_count += 1
if request_count > 2:
print("Liveness probe failing! Exiting...")
os._exit(1) # Simulate a crash
print(f"Liveness probe successful (count: {request_count})")
return Response("OK", status=200)
@app.route('/')
def home():
return "Hello from the Liveness Probe Demo!"
if __name__ == '__main__':
app.run(host='0.0.0.0', port=8080)Exécuter une sonde de vivacité
Voyons maintenant comment Kubernetes utilise la sonde de vivacité. Si vous déployez ceci avec le YAML suivant, Kubernetes redémarrera le pod lorsque la vérification de santé échouera :
apiVersion: v1
kind: Pod
metadata:
name: liveness-demo
spec:
containers:
- name: liveness-container
image: python:3.9-slim-buster
command: ["python", "app.py"]
ports:
- containerPort: 8080
livenessProbe:
httpGet:
path: /healthz
port: 8080
initialDelaySeconds: 5
periodSeconds: 5
failureThreshold: 1
volumeMounts:
- name: app-volume
mountPath: /app
volumes:
- name: app-volume
configMap:
name: liveness-app-config
# (You'd need a ConfigMap for app.py, omitted for brevity)Une fois le déploiement effectué, après deux vérifications réussies, la troisième échouera et Kubernetes redémarrera le conteneur.
Que sont les sondes de disponibilité ?
Une sonde de disponibilité vérifie que votre application est prête à recevoir du trafic. Si une sonde de disponibilité échoue, Kubernetes cesse d’envoyer du trafic à ce pod, mais ne le redémarre pas.
C’est essentiel pendant le démarrage (par exemple, en attendant une connexion à une base de données) ou lors d’un arrêt progressif. Demandez-vous : « Le magasin est-il ouvert aux clients ? »
Principes des sondes de disponibilité
Les sondes de disponibilité se configurent de manière similaire aux sondes de vivacité, avec des commandes HTTP GET, TCP Socket ou Exec. La différence essentielle concerne leur effet :
- Vivacité : redémarre le conteneur en cas d’échec.
- Disponibilité : retire le pod des points de terminaison du service en cas d’échec (aucun trafic).
Voici un extrait de sonde de disponibilité :
readinessProbe:
httpGet:
path: /ready
port: 8080
initialDelaySeconds: 10
periodSeconds: 5Une sonde de disponibilité en action
Cette application Flask simule une application qui met un certain temps à s’initialiser (par exemple, pour se connecter à une base de données). Elle ne signalera qu’elle est « prête » qu’après 5 secondes.
Enregistrez-la sous ready_app.py :
from flask import Flask, Response
import time
app = Flask(__name__)
start_time = time.time()
READY_AFTER_SECONDS = 5
@app.route('/ready')
def readiness_check():
if time.time() - start_time > READY_AFTER_SECONDS:
print("Readiness probe successful: App is ready!")
return Response("READY", status=200)
else:
print("Readiness probe failing: App not ready yet...")
return Response("NOT READY", status=503)
@app.route('/')
def home():
return "Hello from the Readiness Probe Demo!"
if __name__ == '__main__':
app.run(host='0.0.0.0', port=8080)Exécution d’une sonde de disponibilité
Avec ce YAML, le pod ne recevra pas de trafic pendant les initialDelaySeconds premières secondes, auxquels s’ajoute le temps nécessaire pour que /ready renvoie 200 OK.
apiVersion: v1
kind: Pod
metadata:
name: readiness-demo
spec:
containers:
- name: readiness-container
image: python:3.9-slim-buster
command: ["python", "ready_app.py"]
ports:
- containerPort: 8080
readinessProbe:
httpGet:
path: /ready
port: 8080
initialDelaySeconds: 10
periodSeconds: 3
volumeMounts:
- name: app-volume
mountPath: /app
volumes:
- name: app-volume
configMap:
name: readiness-app-config
# (You'd need a ConfigMap for ready_app.py, omitted for brevity)Vous vous assurez ainsi que le trafic est envoyé uniquement vers des instances réellement prêtes.
Disponibilité et état de fonctionnement
Il est important d’utiliser correctement les deux sondes :
- Sonde d’état de fonctionnement : elle sert à détecter si votre application a planté ou se trouve dans un état irrécupérable. En cas d’échec, Kubernetes redémarre le conteneur.
- Sonde de disponibilité : elle sert à détecter si votre application est prête à accepter et à traiter des requêtes. En cas d’échec, Kubernetes cesse d’envoyer du trafic au pod.
Elles ont des objectifs différents, mais complémentaires, qui contribuent à la robustesse de vos applications.
Vérifiez votre compréhension
Lesquelles des affirmations suivantes concernant les sondes d’état de fonctionnement et de disponibilité sont TRUE ?
Sondes : points clés à retenir
Dans cette leçon, vous avez découvert les sondes d’état de fonctionnement et de disponibilité dans Kubernetes. Ces contrôles d’intégrité sont essentiels pour maintenir la fiabilité et la disponibilité de vos applications :
- Les sondes d’état de fonctionnement détectent les conteneurs défaillants et déclenchent leur redémarrage.
- Les sondes de disponibilité déterminent à quel moment un pod est prêt à recevoir du trafic réseau.
Une utilisation efficace de ces sondes garantit que vos applications restent réactives et résistent aux problèmes.
Questions Fréquemment Posées
La leçon « Contrôles d’état : sondes de vivacité et de disponibilité » est-elle gratuite ?
Oui — le texte complet de « Contrôles d’état : sondes de vivacité et de disponibilité » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours Kubernetes Basics, passe à CoddyKit PRO. Le cours Kubernetes Basics comprend 4 leçons au total.
Qu'est-ce que j'apprendrai dans « Contrôles d’état : sondes de vivacité et de disponibilité » ?
Configurez des sondes de vivacité et de disponibilité afin de garantir que vos applications sont saines et prêtes à traiter le trafic. Tu pratiques Kubernetes Basics avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.
Dois-je avoir de l'expérience pour commencer Kubernetes Basics ?
Aucune expérience préalable n'est requise. Kubernetes Basics sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 3 sur 4.
Combien de temps prend la leçon « Contrôles d’état : sondes de vivacité et de disponibilité » ?
La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.
Peux-tu écrire et exécuter du code dans cette leçon Kubernetes Basics ?
Oui. Chaque leçon Kubernetes Basics inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.
Toutes les leçons de ce cours
- Journalisation avec kubectl logs
- Métriques avec Prometheus et Grafana
- Contrôles d’état : sondes de vivacité et de disponibilité
- Traçage distribué et événements