Capítulo 2.4 - Controller Manager
Objetivos de Aprendizagem
Ao final deste capítulo, você será capaz de:
- Compreender o papel do Controller Manager
- Explicar o padrão de controle em loop
- Identificar os diferentes controladores
- Entender como o Kubernetes mantém o estado desejado
O que é o Controller Manager?
O Controller Manager (kube-controller-manager) executa os controladores que monitoram o estado do cluster e tomam ações para alinhar o estado real ao estado desejado.
Padrão de Controle em Loop
Os controladores seguem um padrão de controle em loop:
Características:
- Monitoramento contínuo (watch)
- Comparação entre estado real e desejado
- Ações corretivas automáticas
- Loop de reconciliação
Principais Controladores
1. Deployment Controller
Gerencia os Deployments e mantém o número de réplicas:
Ações:
- Cria ReplicaSets
- Gerencia Rolling Updates
- Realiza Rollbacks
2. ReplicaSet Controller
Mantém o número desejado de Pods:
3. Node Controller
Monitora o estado dos nodes:
- Detecta nodes indisponíveis
- Marca nodes como NotReady
- Evita agendar Pods em nodes com falha
4. Service Controller
Gerencia os Services e seus endpoints:
- Cria/mantém os Endpoints
- Sincroniza com LoadBalancers em nuvem
5. Job Controller
Gerencia Jobs e CronJobs:
- Monitora a execução dos Jobs
- Gerencia CronJobs (tarefas agendadas)
Exemplo Concreto: Deployment
Cenário Inicial
apiVersion: apps/v1
kind: Deployment
metadata:
name: my-app
spec:
replicas: 3
template:
spec:
containers:
- name: app
image: nginx:1.20
O que acontece:
- O Deployment Controller lê o Deployment
- Cria um ReplicaSet com 3 réplicas
- O ReplicaSet Controller verifica se há 3 Pods
- Se um Pod falhar, o ReplicaSet Controller cria um novo Pod
- O Scheduler atribui o novo Pod a um node
- O kubelet inicia o container
Reconciliação (Reconciliation Loop)
Conceito
A reconciliação é o processo contínuo de:
- Observar o estado atual
- Comparar com o estado desejado
- Tomar ações para reduzir a diferença
Exemplo: ReplicaSet
Performance e Otimizações
Rate Limiting
Os controladores limitam o número de requisições para evitar sobrecarregar o API Server.
Backoff
Em caso de erro, os controladores aguardam antes de tentar novamente (backoff exponencial).
Concurrent Workers
Vários workers processam recursos em paralelo.
Comandos Úteis
# Ver logs do Controller Manager
kubectl logs -n kube-system kube-controller-manager-<node>
# Ver eventos relacionados aos controladores
kubectl get events --sort-by='.lastTimestamp'
# Verificar o estado de um Deployment
kubectl describe deployment <name>
Resumo
Neste capítulo, você aprendeu:
Controller Manager: Executa os controladores que mantêm o estado desejado
Padrão de controle: Monitoramento contínuo, comparação, ação corretiva
Principais controladores: Deployment, ReplicaSet, Node, Service, Job
Reconciliação: Processo contínuo de manutenção do estado desejado
Auto-cura: Os controladores corrigem automaticamente as diferenças
Próximos Passos
Agora que você entende o Controller Manager:
Capítulo 2.5: Scheduler - Planejamento dos Pods
Capítulo 2.6: kubelet - Agente dos Worker Nodes
Capítulo criado em: Dezembro 2024