Pular para o conteúdo principal

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

  1. O Deployment Controller lê o Deployment
  2. Cria um ReplicaSet com 3 réplicas
  3. O ReplicaSet Controller verifica se há 3 Pods
  4. Se um Pod falhar, o ReplicaSet Controller cria um novo Pod
  5. O Scheduler atribui o novo Pod a um node
  6. O kubelet inicia o container

Reconciliação (Reconciliation Loop)​

Conceito​

A reconciliação é o processo contínuo de:

  1. Observar o estado atual
  2. Comparar com o estado desejado
  3. 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