Explicación detallada de Kubernetes (17) - Práctica de aplicación de sonda de supervivencia de pod

Hoy, continuaré presentando el conocimiento relevante de la operación y el mantenimiento de Linux. El contenido principal de este artículo es la aplicación real de la sonda de supervivencia de Pod.
En la explicación detallada de Kubernetes anterior (16) - Detección de contenedor de Pod , explicamos la sonda del contenedor de Pod. Hoy vamos a hacer los sondeos de los siguientes contenedores Pod.

1. Combate real de la sonda EXEC

Primero, llevamos a cabo el combate de sondeo EXEC, creamos una lista de configuración de recursos de liveness-probe.yaml y escribimos el siguiente contenido:

apiVersion: v1
kind: Pod
metadata:
  name: liveness-probe
  namespace: default
  labels:
    probe: liveness
spec:
  containers:
  - name: liveness-probe-container
    image: busybox
    imagePullPolicy: IfNotPresent
    command: ["/bin/sh","-c","touch /tmp/healthy;sleep 30;rm -rf /tmp/healthy","sleep 600"]
    livenessProbe:
      exec:
        command: ["test","-e","/tmp/healthy"]
      initialDelaySeconds: 2
      periodSeconds: 5

El archivo de manifiesto de configuración de recursos completo es el siguiente:
inserte la descripción de la imagen aquí
En la configuración anterior, usamos la sonda de actividad del comando, que detectará continuamente la existencia del archivo /tmp/healthy. Si el archivo no existe, la sonda detectará excepciones. . De acuerdo con la configuración del comando en nuestra imagen, después de que se inicie el contenedor, el archivo se eliminará después de ejecutarse durante 30 segundos, por lo que la operación del Pod inevitablemente provocará una excepción de sonda. Solo necesitamos observar si el contenedor Pod se reinicia después de que la sonda es anormal para determinar si la sonda funciona correctamente.
Luego, ejecutamos el archivo de configuración del manifiesto de recursos, creamos el contenedor Pod y ejecutamos el comando:

kubectl create -f liveness-probe.yaml

Después de que se ejecute el contenedor Pod, se verá así:
inserte la descripción de la imagen aquí
Como puede ver en la figura anterior, nuestro contenedor Pod se ejecuta correctamente. A continuación, esperamos un rato para probar el efecto de la sonda.
Luego de esperar un tiempo, los resultados del contenedor Pod son los siguientes:
inserte la descripción de la imagen aquí
Como se puede observar en la figura anterior, durante el funcionamiento del contenedor pod, con la acción del comando comando, la sonda detecta que el contenedor está anormal, por lo que Kubernetes eliminará el contenedor y lo reiniciará. ¡Nuestra sonda de comando se configuró correctamente!

En segundo lugar, el combate real de la sonda HTTP

A continuación, llevamos a cabo un combate de sondeo HTTP, creamos una lista de configuración de recursos de http-probe.yaml y escribimos el siguiente contenido:

apiVersion: v1
kind: Pod
metadata:
  name: http-probe
  namespace: default
  labels:
    probe: http
spec:
  containers:
  - name: http-probe
    image: nginx:1.12
    imagePullPolicy: IfNotPresent
    ports:
    - name: http
      containerPort: 80
    lifecycle:
      postStart:
        exec:
          command: ["/bin/bash","-c","echo Http-Probe > /usr/share/nginx/html/ishealth.html"]
    livenessProbe:
      httpGet:
        path: /ishealth.html
        port: http
        scheme: HTTP

El archivo de manifiesto de configuración de recursos completado es el siguiente:
inserte la descripción de la imagen aquí
En la configuración anterior, definimos una sonda HTTP, que detectará continuamente el archivo /ishealth.html en el directorio raíz del sitio web (este archivo se crea mediante el comando comando en el contenedor ) ), si el archivo no existe, la sonda detectará la excepción.
Ejecutamos el archivo de configuración del manifiesto de recursos, creamos el contenedor Pod y ejecutamos el comando:

kubectl create -f http-probe.yaml

Una vez que el contenedor se está ejecutando, ingresamos al contenedor, eliminamos el archivo ishealth.html y observamos el estado del contenedor. Los resultados son los siguientes:
inserte la descripción de la imagen aquí
Se puede ver que cuando eliminamos el contenedor, la sonda detecta una excepción y hace que el contenedor Para reiniciar. ¡Nuestra sonda HTTP fue exitosa!

Tres, combate real de la sonda TCP

Finalmente, llevamos a cabo el combate de la sonda TCP real, creamos una lista de configuración de recursos de tcp-probe.yaml y escribimos el siguiente contenido:

apiVersion: v1
kind: Pod
metadata:
  name: tcp-probe
  namespace: default
  labels:
    probe: tcp
spec:
  containers:
  - name: tcp-rpobe
    image: nginx:1.12
    ports:
    - name: http
      containerPort: 80
    livenessProbe:
      tcpSocket:
        port: http

El archivo de manifiesto de configuración de recursos completado es el siguiente:
inserte la descripción de la imagen aquí
En la configuración anterior, nuestra sonda sondeará continuamente el puerto 80 del contenedor. Si el puerto 80 falla, la sonda detectará una excepción.
Ejecutamos el archivo de configuración del manifiesto de recursos, creamos el contenedor Pod y ejecutamos el comando:

kubectl create -f tcp-probe.yaml

Inicie el contenedor.
Después de que se inicia el contenedor, podemos ejecutar el comando:

kubectl describe pods/tcp-probe

Veamos la configuración de la sonda TCP del Pod. Los resultados son los siguientes:
inserte la descripción de la imagen aquí
En la figura anterior, también podemos ver el contenido de la sonda TCP que configuramos.
La originalidad no es fácil, indique la fuente para la reimpresión: https://blog.csdn.net/weixin_40228200

Supongo que te gusta

Origin blog.csdn.net/weixin_40228200/article/details/124286729
Recomendado
Clasificación