🕸️ Networking
Esta página explica como os pods conversam entre si e como limitar quem pode falar com quem.
Existem duas camadas de rede, e cada uma é configurada em um lugar:
| Camada | O que controla | Onde configurar |
|---|---|---|
| Fora do cluster | Entrada e saída (IPs flutuantes, grupos de segurança, balanceadores) | Painel Nuvion, em Computar |
| Dentro do cluster | Comunicação entre pods (DNS, Services, Network Policies) | kubectl |
No cluster, todo pod recebe um IP próprio e consegue falar com qualquer outro pod, em qualquer node. Por padrão, nada é bloqueado.
🚀 Antes de começar
- Ter o acesso ao cluster configurado (veja Acesso ao Cluster).
🚀 1. Ver a rede do cluster
- 🖥️ Painel Nuvion
- ⌨️ kubectl (CLI)
- Acesse Computar > Kubernetes e clique no nome do cluster.
- Na aba Descrição geral, veja o campo Rede. Ele mostra a rede e a faixa de IPs dos nós (por exemplo,
10.0.0.0/24).

kubectl get nodes -o wide
kubectl get pods -A -o wide
A coluna INTERNAL-IP mostra o IP de cada node, e a coluna IP mostra o IP de cada pod.
🚀 2. Criar um pod e um Service de teste
kubectl run web --image=nginx --port=80
kubectl expose pod web --name=web --port=80
kubectl get pod web -o wide
Aguarde o pod ficar Running. Anote o IP que ele recebeu.
🚀 3. Acessar de outro pod pelo nome (DNS)
O cluster tem um DNS interno (CoreDNS): todo Service ganha um nome.
kubectl run cliente --rm -it --image=curlimages/curl --restart=Never -- curl -sS http://web
A página Welcome to nginx! aparece. O nome completo do Service é
web.default.svc.cluster.local, no formato service.namespace.svc.cluster.local.
Para falar com um Service de outro namespace, use pelo menos web.NAMESPACE.
🚀 4. Bloquear o acesso com uma Network Policy
Uma Network Policy é uma regra de firewall dentro do cluster. Vamos permitir
que o pod web receba conexões somente de pods com o rótulo acesso=permitido.
Crie o arquivo web-politica.yaml:
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: web-somente-autorizados
spec:
podSelector:
matchLabels:
run: web
policyTypes:
- Ingress
ingress:
- from:
- podSelector:
matchLabels:
acesso: permitido
kubectl apply -f web-politica.yaml
kubectl get networkpolicy
O run: web é o rótulo que o comando kubectl run web adiciona ao pod automaticamente.
🚀 5. Testar a política
Sem o rótulo (deve ser bloqueado):
kubectl run cliente-bloqueado --rm -it --image=curlimages/curl --restart=Never -- curl -sS -m 5 http://web
Resposta esperada: curl: (28) ... timed out
Com o rótulo (deve funcionar):
kubectl run cliente-ok --rm -it --labels=acesso=permitido --image=curlimages/curl --restart=Never -- curl -sS -m 5 http://web
Resposta esperada: a página Welcome to nginx!.
🚀 6. Bloquear tudo por padrão (opcional)
Esta política bloqueia toda entrada nos pods do namespace, e só passa o que for liberado por outras políticas:
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: negar-tudo
spec:
podSelector: {}
policyTypes:
- Ingress
Cuidado ao usar em um namespace que recebe tráfego de um Ingress. Depois de bloquear tudo, você precisa criar uma política liberando a origem do Ingress Controller, ou o site sai do ar.
✅ Como saber se deu certo
No passo 5, o pod sem rótulo não consegue acessar o web, e o pod com
rótulo consegue.
❗ Problemas comuns
| Sintoma | Causa | Solução |
|---|---|---|
| O pod sem rótulo consegue acessar | O plugin de rede do cluster não aplica Network Policy | Fale com o suporte para confirmar o suporte a políticas |
Could not resolve host | DNS interno com problema | Confira kubectl get pods -n kube-system e veja se o CoreDNS está Running |
Connection refused | O Service aponta para a porta errada | Confira kubectl get svc web e a porta do container |
| Timeout sem política criada | Service sem pods | Rode kubectl get endpoints web |
| Acesso de fora do cluster falha | Porta não liberada no grupo de segurança | Veja o passo 5 da página Services |
🧹 Limpeza
kubectl delete networkpolicy web-somente-autorizados negar-tudo
kubectl delete svc web
kubectl delete pod web
Se você não criou a política do passo 6, o comando acima mostra um aviso de
not found para negar-tudo. Pode ignorar.
🧠 Dúvidas?
Fale com nosso time de suporte técnico da SaveinCloud!