Capítulo 2.7 - kube-proxy
Objetivos de Aprendizagem
Ao final deste capítulo, você será capaz de:
- Compreender o papel do kube-proxy
- Explicar como o kube-proxy gerencia os Services
- Entender os modos de proxy
- Identificar o load balancing
O que é kube-proxy?
kube-proxy é um componente de rede que roda em cada node. Ele mantém as regras de rede que permitem a comunicação com os Services de dentro e fora do cluster.
Papéis do kube-proxy
1. Gerenciamento de Services
O kube-proxy monitora os Services e seus Endpoints:
2. Load Balancing
Distribui o tráfego entre os Pods backend:
3. Regras de Rede
Mantém as regras iptables ou ipvs para:
- Roteamento para os Services
- NAT (Network Address Translation)
- Load balancing
Modos de Proxy
1. userspace (Obsoleto)
Modo antigo, com baixo desempenho.
2. iptables (Padrão)
Utiliza iptables para o roteamento:
Vantagens:
- Desempenho elevado
- Sem processo de usuário
- Nativo do Linux
3. ipvs (Recomendado para produção)
Utiliza o IPVS (IP Virtual Server) do kernel Linux:
Vantagens:
- Mais rápido que iptables
- Melhor load balancing
- Suporta mais algoritmos
Funcionamento com um Service
Exemplo: Service ClusterIP
apiVersion: v1
kind: Service
metadata:
name: my-service
spec:
selector:
app: my-app
ports:
- port: 80
targetPort: 8080
O que acontece:
- Service criado → kube-proxy detecta a mudança
- Endpoints descobertos → kube-proxy encontra os Pods backend
- Regras criadas → iptables/ipvs configurado
- Tráfego roteado → As requisições para o Service são distribuídas
Load Balancing
Algoritmos Suportados
- Round Robin: Distribuição igualitária
- Least Connection: Menor número de conexões ativas
- Source IP Hash: Mesmo Pod para a mesma origem
Exemplo: Round Robin
Tipos de Services
ClusterIP
kube-proxy cria regras para rotear o tráfego interno.
NodePort
kube-proxy abre uma porta em cada node e roteia para os Pods.
LoadBalancer
kube-proxy configura o roteamento, o provedor de cloud cria o load balancer externo.
Comandos Úteis
# Ver as regras do iptables (no node)
sudo iptables -t nat -L -n
# Ver as regras do ipvs (se modo ipvs)
sudo ipvsadm -ln
# Ver os Endpoints de um Service
kubectl get endpoints <service-name>
# Ver detalhes de um Service
kubectl describe service <service-name>
Resumo
Neste capítulo, você aprendeu:
kube-proxy: Gerencia o networking e o load balancing
Services: Roteamento do tráfego para os Pods backend
Modos: iptables (padrão) ou ipvs (produção)
Load Balancing: Distribuição do tráfego entre Pods
Regras de rede: Manutenção das regras de roteamento
Próximos Passos
Agora que você entende o kube-proxy:
Capítulo 2.8: Container Runtime
Capítulo 2.9: Comunicação Entre Componentes
Capítulo criado em: Dezembro 2024