En este tema, aprenderemos sobre las verificaciones de salud y las sondas en Kubernetes, que son esenciales para garantizar que las aplicaciones se ejecuten de manera eficiente y confiable. Las sondas permiten a Kubernetes verificar el estado de los contenedores y tomar medidas correctivas si es necesario.

Conceptos Clave

  1. ¿Qué son las Verificaciones de Salud?

Las verificaciones de salud son mecanismos que Kubernetes utiliza para determinar si los contenedores de una aplicación están funcionando correctamente. Existen dos tipos principales de verificaciones de salud:

  • Liveness Probes: Verifican si el contenedor está vivo y funcionando. Si una liveness probe falla, Kubernetes reiniciará el contenedor.
  • Readiness Probes: Verifican si el contenedor está listo para recibir tráfico. Si una readiness probe falla, Kubernetes dejará de enviar tráfico al contenedor.

  1. Tipos de Sondas

Kubernetes soporta tres tipos de sondas:

  • HTTP Probes: Realizan una solicitud HTTP GET a una ruta específica en el contenedor.
  • TCP Probes: Intentan abrir una conexión TCP al contenedor.
  • Command Probes: Ejecutan un comando en el contenedor y verifican el código de salida.

Configuración de Sondas

Ejemplo de Configuración de Liveness Probe

apiVersion: v1
kind: Pod
metadata:
  name: liveness-example
spec:
  containers:
  - name: liveness-container
    image: k8s.gcr.io/liveness
    args:
    - /server
    livenessProbe:
      httpGet:
        path: /healthz
        port: 8080
      initialDelaySeconds: 3
      periodSeconds: 3

Explicación:

  • httpGet: Realiza una solicitud HTTP GET a la ruta /healthz en el puerto 8080.
  • initialDelaySeconds: Espera 3 segundos antes de realizar la primera verificación.
  • periodSeconds: Realiza una verificación cada 3 segundos.

Ejemplo de Configuración de Readiness Probe

apiVersion: v1
kind: Pod
metadata:
  name: readiness-example
spec:
  containers:
  - name: readiness-container
    image: k8s.gcr.io/readiness
    args:
    - /server
    readinessProbe:
      httpGet:
        path: /ready
        port: 8080
      initialDelaySeconds: 5
      periodSeconds: 5

Explicación:

  • httpGet: Realiza una solicitud HTTP GET a la ruta /ready en el puerto 8080.
  • initialDelaySeconds: Espera 5 segundos antes de realizar la primera verificación.
  • periodSeconds: Realiza una verificación cada 5 segundos.

Ejercicios Prácticos

Ejercicio 1: Configurar una Liveness Probe

Objetivo: Configurar una liveness probe para un contenedor que expone un endpoint de salud en /healthz.

Instrucciones:

  1. Crea un archivo YAML llamado liveness-probe.yaml.
  2. Define un Pod con un contenedor que utilice la imagen k8s.gcr.io/liveness.
  3. Configura una liveness probe que realice una solicitud HTTP GET a /healthz en el puerto 8080.
  4. Establece initialDelaySeconds a 3 y periodSeconds a 3.

Solución:

apiVersion: v1
kind: Pod
metadata:
  name: liveness-example
spec:
  containers:
  - name: liveness-container
    image: k8s.gcr.io/liveness
    args:
    - /server
    livenessProbe:
      httpGet:
        path: /healthz
        port: 8080
      initialDelaySeconds: 3
      periodSeconds: 3

Ejercicio 2: Configurar una Readiness Probe

Objetivo: Configurar una readiness probe para un contenedor que expone un endpoint de preparación en /ready.

Instrucciones:

  1. Crea un archivo YAML llamado readiness-probe.yaml.
  2. Define un Pod con un contenedor que utilice la imagen k8s.gcr.io/readiness.
  3. Configura una readiness probe que realice una solicitud HTTP GET a /ready en el puerto 8080.
  4. Establece initialDelaySeconds a 5 y periodSeconds a 5.

Solución:

apiVersion: v1
kind: Pod
metadata:
  name: readiness-example
spec:
  containers:
  - name: readiness-container
    image: k8s.gcr.io/readiness
    args:
    - /server
    readinessProbe:
      httpGet:
        path: /ready
        port: 8080
      initialDelaySeconds: 5
      periodSeconds: 5

Errores Comunes y Consejos

Errores Comunes

  • Configuración Incorrecta de la Ruta o Puerto: Asegúrate de que la ruta y el puerto especificados en la sonda sean correctos y accesibles.
  • Valores de Tiempo Incorrectos: Configurar initialDelaySeconds y periodSeconds con valores inapropiados puede causar reinicios innecesarios o retrasos en la disponibilidad del contenedor.

Consejos

  • Pruebas Locales: Antes de aplicar las sondas en un clúster de producción, prueba las rutas de salud y preparación localmente para asegurarte de que funcionan correctamente.
  • Monitoreo: Utiliza herramientas de monitoreo para observar el comportamiento de las sondas y ajustar los parámetros según sea necesario.

Conclusión

En esta sección, hemos aprendido sobre las verificaciones de salud y las sondas en Kubernetes, incluyendo los tipos de sondas disponibles y cómo configurarlas. Las sondas son esenciales para mantener la salud y disponibilidad de las aplicaciones en un clúster de Kubernetes. En el próximo módulo, exploraremos el monitoreo con Prometheus para obtener una visión más profunda del rendimiento y estado de nuestras aplicaciones.

Curso de Kubernetes

Módulo 1: Introducción a Kubernetes

Módulo 2: Componentes Principales de Kubernetes

Módulo 3: Gestión de Configuración y Secretos

Módulo 4: Redes en Kubernetes

Módulo 5: Almacenamiento en Kubernetes

Módulo 6: Conceptos Avanzados de Kubernetes

Módulo 7: Monitoreo y Registro

Módulo 8: Seguridad en Kubernetes

Módulo 9: Escalado y Rendimiento

Módulo 10: Ecosistema y Herramientas de Kubernetes

Módulo 11: Estudios de Caso y Aplicaciones del Mundo Real

Módulo 12: Preparación para la Certificación de Kubernetes

© Copyright 2024. Todos los derechos reservados