DEV Community

DeividFerraz
DeividFerraz

Posted on

Services no Kubernetes

🚀 O que eu aprendi sobre Kubernetes Service (e por que isso finalmente fez sentido pra mim)

Depois de apanhar um pouco tentando entender como minha API realmente “se comunica” dentro do cluster, finalmente caiu a ficha sobre o papel do Service no Kubernetes.

Se você também já ficou confuso com Pods mudando de IP, balanceamento e tipos de Service… esse resumo pode te ajudar 👇

🧠 Primeiro insight (o mais importante)
👉 Pods são efêmeros

Eles sobem e caem

O IP muda o tempo todo

👉 Service resolve isso

Dá um IP fixo + DNS estável

E ainda faz load balancing automaticamente

⚙️ Como o Service realmente funciona
O Service não “conhece” ReplicaSet, Deployment nem nada disso.

Ele só faz:

selector:
app: minha-api
E pensa:

“Vou mandar tráfego pra qualquer Pod com essa label”

💥 Pronto. É assim que ele encontra os Pods.

⚖️ Load Balancing
Se você tem 3 Pods:

Pod A (IP 10.0.0.1)
Pod B (IP 10.0.0.2)
Pod C (IP 10.0.0.3)
O Service faz:

Cliente → Service → distribui entre A, B, C
👉 Você não precisa saber os IPs 👉 Você não precisa atualizar nada manualmente

🔌 Sobre portas
ports:

  • port: 80 targetPort: 3000 port → porta do Service

targetPort → porta do container

💡 Dica: use named ports pra deixar mais claro:

ports:

  • port: 80 targetPort: http Um ponto importante. Esse (http) é apenas o nome dado para a porta na sessão de containers.ports dentro do yaml do POD, ou no meu caso do ReplicaSet.

🌐 Os 2 tipos mais usados na prática
🔵 1. ClusterIP (padrão)
👉 Usado para comunicação interna

type: ClusterIP
✔️ Só funciona dentro do cluster ✔️ Ideal para microservices ✔️ Mais seguro

Exemplo real:

backend falando com banco

API interna chamando outro serviço

🟢 2. LoadBalancer
👉 Usado para expor para fora

type: LoadBalancer
✔️ Cria um IP externo ✔️ Acessível via internet ✔️ Ideal para APIs públicas

Exemplo:

sua API que será consumida por frontend ou terceiros

🧠 Boas práticas que aprendi
✅ Use labels consistentes (app, tier, etc.) ✅ Prefira ClusterIP por padrão (segurança) ✅ Só use LoadBalancer quando precisar expor ✅ Use named ports pra facilitar manutenção ✅ Sempre confira os endpoints se algo não funcionar.

🔥 Resumo mental
Pod = efêmero

Service = estável

Labels = conexão 🔗

Service = load balancer automático ⚖️

💬 Conclusão
O Service não é só “um detalhe” do Kubernetes.

Ele é o que transforma:

👉 containers isolados em 👉 um sistema distribuído que funciona de verdade

Top comments (0)