Kubernetes ejecuta aplicaciones en contenedores en un clúster de máquinas y las mantiene en el estado descrito. Para ello, coloca el trabajo en las máquinas adecuadas, enruta el tráfico a los lugares adecuados y observa errores y cambios.
El flujo básico
1. Describe lo que quiere ejecutar
La mayoría de las cargas de trabajo de Kubernetes se inician como un "estado deseado" declarado (qué debe ejecutarse, cuántas copias y cómo deben exponerse). Kubernetes se basa en la configuración declarativa y la automatización.
2. Kubernetes decide dónde debe ejecutarse
Kubernetes programa contenedores en máquinas del clúster en función de los recursos de proceso disponibles y de lo que necesita cada contenedor. Los contenedores se ejecutan dentro de Pods, que es la unidad que Kubernetes coloca en una máquina.
3. Kubernetes sigue comprobando la realidad frente al estado deseado
Los controladores ven el clúster y trabajan para acercar el estado actual al estado deseado mediante el servidor de API para realizar cambios.
Programación de contenedores y administración diaria
La programación es el "¿dónde debe ejecutarse?" decisión.
1. Los Pods se programan, no los contenedores individuales
Kubernetes agrupa los contenedores en Pods y a continuación, los coloca en las máquinas.
2. El programador asigna Pods a un nodo adecuado
Kube-scheduler busca Pods que aún no están asignados y selecciona un nodo para ellos.
3. Los agentes de nodo mantienen los Pods en ejecución
En cada nodo, kubelet se asegura de que los Pods se estén ejecutando (incluidos sus contenedores).
Equilibrio de carga y detección de servicios
Los contenedores y Pods se pueden crear, mover o reemplazar, por lo que las aplicaciones necesitan formas estables de encontrarse entre sí.
La detección de servicios y el equilibrio de carga son comportamientos integrados
Kubernetes administra la detección de servicios y usa el equilibrio de carga para que el tráfico se pueda enrutar incluso a medida que los Pods cambian con el tiempo.
Los servicios proporcionan una dirección estable para un conjunto cambiante de Pods
La API de servicio proporciona una dirección IP estable o un nombre de host para un servicio respaldado por uno o varios Pods, y Kubernetes realiza un seguimiento de los Pods de respaldo a través de objetos EndpointSlice.
Actualizaciones de enrutamiento de tráfico a medida que cambian los Pods
Cuando los Pods detrás de un cambio de servicio, el enrutamiento del servicio se adapta para que el tráfico siga llegando a los back-ends actuales.
Escalado de aplicaciones (y por qué es importante el "estado deseado")
Kubernetes puede escalar las cargas de trabajo hacia el estado establecido, incluido el escalado basado en el uso de proceso.
Entre las ideas de escalado comunes se incluyen:
Más réplicas (más Pods) para controlar una mayor demanda.
Menos réplicas cuando la demanda disminuye.
Seguimiento de recursos para que las decisiones de selección de ubicación reflejen las necesidades de CPU y memoria.
Esto vuelve al modelo de "estado deseado": se especifica el destino y los controladores siguen trabajando hacia él.
Recuperación automática: Qué ocurre cuando se interrumpe algo
Kubernetes incluye comportamientos de recuperación automática que tienen como objetivo mantener el estado y la disponibilidad de la carga de trabajo. Entre ellas se incluyen:
Reinicio de contenedores con errores (reinicios de nivel de contenedor).
Reemplazar Pods con errores para mantener el número solicitado de réplicas (reemplazo de réplica).
Reprogramar cargas de trabajo cuando los nodos dejan de estar disponibles.
Quitar Pods con errores de los puntos de conexión de servicio para que el tráfico solo vaya a Pods correctos (equilibrio de carga para servicios).
La recuperación automática comprueba el estado del contenedor y los reinicia o replica cuando se producen problemas.
El rol de los KPI de Kubernetes
Los indicadores clave de rendimiento (KPI o métricas) se usan para comprender el estado del clúster y el comportamiento de la carga de trabajo.
De dónde proceden los KPI
Los componentes del sistema de Kubernetes emiten métricas (formato Prometheus) que son útiles para paneles y alertas.
Las métricas suelen estar disponibles en el punto de conexión HTTP /metrics de un componente, incluidos componentes como kube-apiserver, kube-scheduler, kubelet, kube-proxy y kube-controller-manager.
Ejemplos de lo que los KPI le ayudan a detectar
Señales de mantenimiento del clúster (métricas de nivel de componente y patrones de error)
Estabilidad de la carga de trabajo (por ejemplo, reinicios o reemplazos frecuentes)
Presión de capacidad (asignación de recursos frente a demanda, asociada a decisiones de escalado)
Por qué esto importa en las operaciones diarias
La supervisión proporciona a los equipos una vista más completa de los recursos del clúster, la API de Kubernetes, los contenedores y los registros, acortando el bucle de comentarios entre problemas y correcciones.