Capítulo 2.4 - Controller Manager
Objetivos de Aprendizaje
Al final de este capítulo, usted será capaz de:
- Comprender el rol del Controller Manager
- Explicar el patrón de control en bucle
- Identificar los diferentes controladores
- Comprender cómo Kubernetes mantiene el estado deseado
¿Qué es el Controller Manager?
El Controller Manager (kube-controller-manager) ejecuta los controladores que monitorean el estado del clúster y toman acciones para hacer coincidir el estado real con el estado deseado.
Patrón de Control en Bucle
Los controladores siguen un patrón de control en bucle:
Características:
- Monitoreo continuo (watch)
- Comparación estado real vs deseado
- Acciones correctivas automáticas
- Bucle de reconciliación
Controladores Principales
1. Deployment Controller
Gestiona los Deployments y mantiene el número de réplicas:
Acciones:
- Crea ReplicaSets
- Gestiona Rolling Updates
- Realiza Rollbacks
2. ReplicaSet Controller
Mantiene el número de Pods deseado:
3. Node Controller
Monitorea el estado de los nodes:
- Detecta nodes no disponibles
- Marca los nodes como NotReady
- Evita programar Pods en nodes defectuosos
4. Service Controller
Gestiona los Services y sus endpoints:
- Crea/mantiene los Endpoints
- Sincroniza con los LoadBalancers en la nube
5. Job Controller
Gestiona los Jobs y CronJobs:
- Monitorea la ejecución de los Jobs
- Gestiona los CronJobs (tareas programadas)
Ejemplo Concreto: Deployment
Escenario Inicial
apiVersion: apps/v1
kind: Deployment
metadata:
name: my-app
spec:
replicas: 3
template:
spec:
containers:
- name: app
image: nginx:1.20
Lo que sucede:
- El Deployment Controller lee el Deployment
- Crea un ReplicaSet con 3 réplicas
- El ReplicaSet Controller verifica que haya 3 Pods
- Si un Pod falla, el ReplicaSet Controller crea un nuevo Pod
- El Scheduler asigna el nuevo Pod a un node
- El kubelet inicia el contenedor
Reconciliación (Reconciliation Loop)
Concepto
La reconciliación es el proceso continuo de:
- Observar el estado actual
- Comparar con el estado deseado
- Tomar acciones para reducir la diferencia
Ejemplo: ReplicaSet
Rendimiento y Optimizaciones
Rate Limiting
Los controladores limitan la cantidad de solicitudes para evitar sobrecargar el API Server.
Backoff
En caso de error, los controladores esperan antes de reintentar (backoff exponencial).
Trabajadores Concurrentes
Varios workers procesan los recursos en paralelo.
Comandos Útiles
# Ver los logs del Controller Manager
kubectl logs -n kube-system kube-controller-manager-<node>
# Ver los eventos relacionados con los controladores
kubectl get events --sort-by='.lastTimestamp'
# Verificar el estado de un Deployment
kubectl describe deployment <name>
Resumen
En este capítulo, usted ha aprendido:
Controller Manager: Ejecuta los controladores que mantienen el estado deseado
Patrón de control: Monitoreo continuo, comparación, acción correctiva
Controladores principales: Deployment, ReplicaSet, Node, Service, Job
Reconciliación: Proceso continuo de mantenimiento del estado deseado
Auto-sanación: Los controladores corrigen automáticamente las diferencias
Próximos Pasos
Ahora que usted comprende el Controller Manager:
Capítulo 2.5: Scheduler - Planificación de Pods
Capítulo 2.6: kubelet - Agente de los Worker Nodes
Capítulo creado el: Diciembre 2024