Pular para o conteúdo

Rede no Kubernetes

Avançado24 min de leiturakubernetes

Em Kubernetes, Pod recebe IP próprio e o CNI fornece a conectividade. Não dependa do IP do Pod: ele muda ao recriar. Service oferece nome e IP virtual estáveis; ClusterIP é interno, LoadBalancer pede integração do provedor e NodePort é exceção controlada, não exposição padrão de produção.

Janela do terminal
kubectl get svc minha-api -n app -o yaml
kubectl get endpointslices -n app -l kubernetes.io/service-name=minha-api
kubectl run diag --rm -it --image=curlimages/curl --restart=Never -- \
curl -sv http://minha-api.app.svc.cluster.local:8080/readyz

Um Service sem EndpointSlice geralmente tem selector/label divergente ou Pods não Ready. DNS interno resolve <service>.<namespace>.svc.cluster.local; uma NetworkPolicy que nega egress sem liberar DNS transforma qualquer acesso por nome em falha de rede.

Ingress e Gateway API roteiam HTTP(S) na borda, mas dependem de controlador instalado. Gateway API separa infraestrutura compartilhada (Gateway) de regras delegáveis (Route), o que ajuda multi-times. Escolha um único padrão por plataforma, defina TLS, timeout, limite de tamanho e observabilidade no controlador — criar o recurso não cria segurança nem certificado por si só.

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata: { name: default-deny, namespace: app }
spec:
podSelector: {}
policyTypes: [Ingress, Egress]

Política só funciona se o CNI a impõe. Aplique primeiro em ambiente de teste e adicione explicitamente DNS, ingress e dependências necessárias; use o template de negação padrão como base.

Próximo passo: conecte apenas workloads Ready e use o roteiro de Diagnóstico para separar DNS, Service e aplicação.