10.2. Configuration des contrôles de santé à l’aide du CLI
Afin de configurer la préparation, la vivacité et les sondes de démarrage, ajoutez une ou plusieurs sondes à la spécification de la gousse qui contient le conteneur que vous souhaitez effectuer les contrôles de santé
Lorsque vous souhaitez ajouter ou modifier des contrôles de santé dans un pod existant, vous devez modifier l’objet Pod DeploymentConfig ou utiliser la perspective Développeur dans la console Web. Il n’est pas possible d’utiliser le CLI pour ajouter ou modifier des contrôles de santé pour un pod existant.
Procédure
Ajouter des sondes pour un conteneur:
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-container1 args: image: registry.k8s.io/goproxy:0.12 livenessProbe:3 tcpSocket:4 port: 80805 initialDelaySeconds: 156 periodSeconds: 207 timeoutSeconds: 108 readinessProbe:9 httpGet:10 host: my-host11 scheme: HTTPS12 path: /healthz port: 808013 startupProbe:14 exec:15 command:16 - cat - /tmp/healthy failureThreshold: 3017 periodSeconds: 2018 timeoutSeconds: 1019 - 1
- Indiquez le nom du conteneur.
- 2
- Indiquez l’image du conteneur à déployer.
- 3
- Facultatif: Créez une sonde Liveness.
- 4
- Indiquez un test à effectuer, ici un test TCP Socket.
- 5
- Indiquez le port sur lequel le conteneur est à l’écoute.
- 6
- Indiquez l’heure, en quelques secondes, après le démarrage du conteneur avant que la sonde puisse être programmée.
- 7
- Indiquez le nombre de secondes pour effectuer la sonde. La valeur par défaut est 10. Cette valeur doit être supérieure au timeoutSeconds.
- 8
- Indiquez le nombre de secondes d’inactivité après lesquelles la sonde est supposée avoir é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
- Indiquez le type de test à effectuer, ici un test HTTP.
- 11
- Indiquez une adresse IP hôte. Lorsque l’hôte n’est pas défini, le PodIP est utilisé.
- 12
- Indiquez HTTP ou HTTPS. Lorsque le schéma n’est pas défini, le schéma HTTP est utilisé.
- 13
- Indiquez le port sur lequel le conteneur est à l’écoute.
- 14
- Facultatif: Créez une sonde de démarrage.
- 15
- Indiquez le type d’essai à effectuer, ici une sonde d’exécution de conteneur.
- 16
- Indiquez les commandes à exécuter sur le conteneur.
- 17
- Indiquez le nombre de fois pour essayer la sonde après une défaillance.
- 18
- Indiquez le nombre de secondes pour effectuer la sonde. La valeur par défaut est 10. Cette valeur doit être supérieure au timeoutSeconds.
- 19
- Indiquez le nombre de secondes d’inactivité après lesquelles la sonde est supposée avoir échoué. La valeur par défaut est 1. Cette valeur doit être inférieure à periodSeconds.
NoteLorsque la valeur initialeDelaySeconds est inférieure à la valeur de la périodeSeconds, la première sonde de préparation se produit à un moment donné entre les deux périodes dues à un problème avec les minuteries.
La valeur TimeoutSeconds doit être inférieure à la valeur periodSeconds.
Créer l’objet Pod:
$ oc create -f <file-name>.yamlVérifier l’état de la dose de contrôle de santé:
$ oc describe pod my-applicationExemple 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 containerCe qui suit est la sortie d’une sonde défaillante qui a redémarré un conteneur:
Échantillon de sortie de vérification de la vie avec un conteneur malsain
$ oc describe pod pod1Exemple 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