Pular para o conteúdo principal

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

  1. Service criado → kube-proxy detecta a mudança
  2. Endpoints descobertos → kube-proxy encontra os Pods backend
  3. Regras criadas → iptables/ipvs configurado
  4. 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