12.2. Configuration des contrôles de santé à l'aide de l'interface de ligne de commande


Pour configurer les sondes de disponibilité, de vivacité et de démarrage, ajoutez une ou plusieurs sondes à la spécification du module qui contient le conteneur pour lequel vous souhaitez effectuer des contrôles de santé

Note

Si vous souhaitez ajouter ou modifier des contrôles de santé dans un pod existant, vous devez éditer l'objet pod DeploymentConfig ou utiliser la perspective Developer dans la console web. Vous ne pouvez pas utiliser l'interface de commande pour ajouter ou modifier les contrôles de santé d'un module existant.

Procédure

Pour ajouter des sondes à un conteneur :

  1. Créez un objet Pod pour ajouter une ou plusieurs sondes :

    apiVersion: v1
    kind: Pod
    metadata:
      labels:
        test: health-check
      name: my-application
    spec:
      containers:
      - name: my-container 1
        args:
        image: registry.k8s.io/goproxy:0.1 2
        livenessProbe: 3
          tcpSocket:  4
            port: 8080 5
          initialDelaySeconds: 15 6
          periodSeconds: 20 7
          timeoutSeconds: 10 8
        readinessProbe: 9
          httpGet: 10
            host: my-host 11
            scheme: HTTPS 12
            path: /healthz
            port: 8080 13
        startupProbe: 14
          exec: 15
            command: 16
            - cat
            - /tmp/healthy
          failureThreshold: 30 17
          periodSeconds: 20 18
          timeoutSeconds: 10 19
    1
    Indiquez le nom du conteneur.
    2
    Spécifiez l'image du conteneur à déployer.
    3
    Facultatif : Créez une sonde de réactivité.
    4
    Spécifiez un test à effectuer, ici un test de socket TCP.
    5
    Indiquez le port sur lequel le conteneur écoute.
    6
    Indiquez le délai, en secondes, après le démarrage du conteneur avant que la sonde puisse être programmée.
    7
    Indiquez le nombre de secondes nécessaires à l'exécution de la sonde. La valeur par défaut est 10. Cette valeur doit être supérieure à timeoutSeconds.
    8
    Spécifiez le nombre de secondes d'inactivité après lesquelles la sonde est considérée comme ayant échoué. La valeur par défaut est 1. Cette valeur doit être inférieure à periodSeconds.
    9
    Facultatif : Créez une sonde de préparation.
    10
    Spécifiez le type de test à effectuer, ici un test HTTP.
    11
    Spécifiez l'adresse IP de l'hôte. Si host n'est pas défini, PodIP est utilisé.
    12
    Spécifiez HTTP ou HTTPS. Si scheme n'est pas défini, c'est le schéma HTTP qui est utilisé.
    13
    Indiquez le port sur lequel le conteneur écoute.
    14
    Facultatif : Créer une sonde de démarrage.
    15
    Indiquez le type de test à effectuer, ici une sonde d'exécution de conteneur.
    16
    Spécifiez les commandes à exécuter sur le conteneur.
    17
    Spécifiez le nombre de tentatives de la sonde après un échec.
    18
    Indiquez le nombre de secondes nécessaires à l'exécution de la sonde. La valeur par défaut est 10. Cette valeur doit être supérieure à timeoutSeconds.
    19
    Spécifiez le nombre de secondes d'inactivité après lesquelles la sonde est considérée comme ayant échoué. La valeur par défaut est 1. Cette valeur doit être inférieure à periodSeconds.
    Note

    Si la valeur de initialDelaySeconds est inférieure à celle de periodSeconds, la première sonde de préparation se produit à un moment donné entre les deux périodes, en raison d'un problème de temporisation.

    La valeur timeoutSeconds doit être inférieure à la valeur periodSeconds.

  2. Créer l'objet Pod:

    oc create -f <nom-de-fichier>.yaml
  3. Vérifier l'état du module de contrôle de santé :

    $ oc describe pod health-check

    Exemple de sortie

    Events:
      Type    Reason     Age   From                                  Message
      ----    ------     ----  ----                                  -------
      Normal  Scheduled  9s    default-scheduler                     Successfully assigned openshift-logging/liveness-exec to ip-10-0-143-40.ec2.internal
      Normal  Pulling    2s    kubelet, ip-10-0-143-40.ec2.internal  pulling image "registry.k8s.io/liveness"
      Normal  Pulled     1s    kubelet, ip-10-0-143-40.ec2.internal  Successfully pulled image "registry.k8s.io/liveness"
      Normal  Created    1s    kubelet, ip-10-0-143-40.ec2.internal  Created container
      Normal  Started    1s    kubelet, ip-10-0-143-40.ec2.internal  Started container

    Voici le résultat d'une sonde qui a échoué et qui a redémarré un conteneur :

    Exemple de résultat de vérification de l'état de conservation d'un conteneur malsain

    $ oc describe pod pod1

    Exemple de sortie

    ....
    
    Events:
      Type     Reason          Age                From                                               Message
      ----     ------          ----               ----                                               -------
      Normal   Scheduled       <unknown>                                                             Successfully assigned aaa/liveness-http to ci-ln-37hz77b-f76d1-wdpjv-worker-b-snzrj
      Normal   AddedInterface  47s                multus                                             Add eth0 [10.129.2.11/23]
      Normal   Pulled          46s                kubelet, ci-ln-37hz77b-f76d1-wdpjv-worker-b-snzrj  Successfully pulled image "registry.k8s.io/liveness" in 773.406244ms
      Normal   Pulled          28s                kubelet, ci-ln-37hz77b-f76d1-wdpjv-worker-b-snzrj  Successfully pulled image "registry.k8s.io/liveness" in 233.328564ms
      Normal   Created         10s (x3 over 46s)  kubelet, ci-ln-37hz77b-f76d1-wdpjv-worker-b-snzrj  Created container liveness
      Normal   Started         10s (x3 over 46s)  kubelet, ci-ln-37hz77b-f76d1-wdpjv-worker-b-snzrj  Started container liveness
      Warning  Unhealthy       10s (x6 over 34s)  kubelet, ci-ln-37hz77b-f76d1-wdpjv-worker-b-snzrj  Liveness probe failed: HTTP probe failed with statuscode: 500
      Normal   Killing         10s (x2 over 28s)  kubelet, ci-ln-37hz77b-f76d1-wdpjv-worker-b-snzrj  Container liveness failed liveness probe, will be restarted
      Normal   Pulling         10s (x3 over 47s)  kubelet, ci-ln-37hz77b-f76d1-wdpjv-worker-b-snzrj  Pulling image "registry.k8s.io/liveness"
      Normal   Pulled          10s                kubelet, ci-ln-37hz77b-f76d1-wdpjv-worker-b-snzrj  Successfully pulled image "registry.k8s.io/liveness" in 244.116568ms

Red Hat logoGithubRedditYoutubeTwitter

Apprendre

Essayez, achetez et vendez

Communautés

À propos de la documentation Red Hat

Nous aidons les utilisateurs de Red Hat à innover et à atteindre leurs objectifs grâce à nos produits et services avec un contenu auquel ils peuvent faire confiance.

Rendre l’open source plus inclusif

Red Hat s'engage à remplacer le langage problématique dans notre code, notre documentation et nos propriétés Web. Pour plus de détails, consultez leBlog Red Hat.

À propos de Red Hat

Nous proposons des solutions renforcées qui facilitent le travail des entreprises sur plusieurs plates-formes et environnements, du centre de données central à la périphérie du réseau.

© 2024 Red Hat, Inc.