Saltar al contenido principal

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:​

  1. El Deployment Controller lee el Deployment
  2. Crea un ReplicaSet con 3 réplicas
  3. El ReplicaSet Controller verifica que haya 3 Pods
  4. Si un Pod falla, el ReplicaSet Controller crea un nuevo Pod
  5. El Scheduler asigna el nuevo Pod a un node
  6. El kubelet inicia el contenedor

Reconciliación (Reconciliation Loop)​

Concepto​

La reconciliación es el proceso continuo de:

  1. Observar el estado actual
  2. Comparar con el estado deseado
  3. 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