Tabla de Contenidos

Probes

Los probes son como comprobaciones que kubernetes nos suministra para que podamos comprobar entre otras cosas, si un pod está listo para recibir tráfico, si tienen algún problema, etc

Tenemos tres tipos:

Tenemos tres formas de hacer la comprobación de un probe:

Readiness Probe

Liveness Probe

Con liveness probe revisamos el estado del contenedor y si el estado del contenedor no es el correcto Kubernetes lo reiniciará de forma automática

Ejemplo de liveness probe por http

<sxh yaml> apiVersion: v1 kind: Pod metadata:

labels:
  test: liveness
name: liveness-http

spec:

containers:
- name: liveness
  image: k8s.gcr.io/liveness
  args:
  - /server
  livenessProbe:    #hace una petición por el puerto 8080 en espera de obtener un valor de 200
    httpGet:
      path: /healthz
      port: 8080
      httpHeaders:
      - name: Custom-Header
        value: Awesome
    initialDelaySeconds: 3
    periodSeconds: 3
 </sxh>

Ejemplo de liveness probe por comando

<sxh yaml> apiVersion: v1 kind: Pod metadata:

labels:
  test: liveness
name: liveness-exec

spec:

containers:
- name: liveness
  image: k8s.gcr.io/busybox
  args:
  - /bin/sh
  - -c
  - touch /tmp/healthy; sleep 30; rm -rf /tmp/healthy; sleep 600   #creamos un fichero , espera 30 sg, lo borra y  vuelve a esperar 600s
  livenessProbe:       # LA prueba ses hacer un cat del fichero que creamos anteriormente cada 5 s
    exec:
      command:
      - cat
      - /tmp/healthy
    initialDelaySeconds: 5   #Tiempo de espera antes de empezar las comprobaciones
    periodSeconds: 5    #Cada cuanto tiempo hace las comprobaciones

</sxh>

Un uso común de ejecutar un comando sería controlar el espacio disponible por si nuestro container se queda sin espacio se reinicie y kubernetes lo crea de nuevo

ejemplo de liveness probe por tcp

<sxh yaml> apiVersion: v1 kind: Pod metadata:

name: goproxy
labels:
  app: goproxy

spec:

containers:
- name: goproxy
  image: k8s.gcr.io/goproxy:0.1
  ports:
  - containerPort: 8080
  readinessProbe:
    tcpSocket:
      port: 8080
    initialDelaySeconds: 5
    periodSeconds: 10
  livenessProbe:
    tcpSocket:
      port: 8080
    initialDelaySeconds: 15
    periodSeconds: 20
</sxh>

Startup Probe

Referencias