0Pricing
DevOps Bootcamp · Leçon

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 DevOps Bootcamp 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 DevOps Bootcamp, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours DevOps Bootcamp 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: 5

Une 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: 5

Une 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 DevOps Bootcamp, passe à CoddyKit PRO. Le cours DevOps Bootcamp 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 DevOps Bootcamp 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 DevOps Bootcamp ?

Aucune expérience préalable n'est requise. DevOps Bootcamp 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 DevOps Bootcamp ?

Oui. Chaque leçon DevOps Bootcamp 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

  1. Journalisation avec kubectl logs
  2. Métriques avec Prometheus et Grafana
  3. Contrôles d’état : sondes de vivacité et de disponibilité
  4. Traçage distribué et événements
← Retour à DevOps Bootcamp