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
- ¿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.
- 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 puerto8080
.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 puerto8080
.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:
- Crea un archivo YAML llamado
liveness-probe.yaml
. - Define un Pod con un contenedor que utilice la imagen
k8s.gcr.io/liveness
. - Configura una liveness probe que realice una solicitud HTTP GET a
/healthz
en el puerto8080
. - Establece
initialDelaySeconds
a 3 yperiodSeconds
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:
- Crea un archivo YAML llamado
readiness-probe.yaml
. - Define un Pod con un contenedor que utilice la imagen
k8s.gcr.io/readiness
. - Configura una readiness probe que realice una solicitud HTTP GET a
/ready
en el puerto8080
. - Establece
initialDelaySeconds
a 5 yperiodSeconds
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
yperiodSeconds
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
- ¿Qué es Kubernetes?
- Arquitectura de Kubernetes
- Conceptos y Terminología Clave
- Configuración de un Clúster de Kubernetes
- CLI de Kubernetes (kubectl)
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
- Monitoreo con Prometheus
- Registro con Elasticsearch, Fluentd y Kibana (EFK)
- Verificaciones de Salud y Sondas
- Servidor de Métricas
Módulo 8: Seguridad en Kubernetes
- Control de Acceso Basado en Roles (RBAC)
- Políticas de Seguridad de Pods
- Seguridad de Red
- Seguridad de Imágenes
Módulo 9: Escalado y Rendimiento
- Autoescalado Horizontal de Pods
- Autoescalado Vertical de Pods
- Autoescalado de Clúster
- Ajuste de Rendimiento
Módulo 10: Ecosistema y Herramientas de Kubernetes
Módulo 11: Estudios de Caso y Aplicaciones del Mundo Real
- Despliegue de una Aplicación Web
- CI/CD con Kubernetes
- Ejecución de Aplicaciones con Estado
- Gestión Multi-Clúster