🕸️ Networking
Esta página explica cómo se comunican los pods entre sí y cómo limitar quién puede hablar con quién.
Existen dos capas de red, y cada una se configura en un lugar:
| Capa | Qué controla | Dónde configurar |
|---|---|---|
| Fuera del clúster | Entrada y salida (IPs flotantes, grupos de seguridad, balanceadores) | Panel Nuvion, en Computar |
| Dentro del clúster | Comunicación entre pods (DNS, Services, Network Policies) | kubectl |
En el clúster, cada pod recibe una IP propia y puede hablar con cualquier otro pod, en cualquier node. Por defecto, nada está bloqueado.
🚀 Antes de comenzar
- Tener el acceso al clúster configurado (vea Acceso al Clúster).
🚀 1. Ver la red del clúster
- 🖥️ Panel Nuvion
- ⌨️ kubectl (CLI)
- Acceda a Computar > Kubernetes y haga clic en el nombre del clúster.
- En la pestaña Descripción general, vea el campo Red. Muestra la red y el rango de IPs de los nodos (por ejemplo,
10.0.0.0/24).

kubectl get nodes -o wide
kubectl get pods -A -o wide
La columna INTERNAL-IP muestra la IP de cada node, y la columna IP muestra la IP de cada pod.
🚀 2. Crear un pod y un Service de prueba
kubectl run web --image=nginx --port=80
kubectl expose pod web --name=web --port=80
kubectl get pod web -o wide
Espere a que el pod esté Running. Anote la IP que recibió.
🚀 3. Acceder desde otro pod por el nombre (DNS)
El clúster tiene un DNS interno (CoreDNS): todo Service recibe un nombre.
kubectl run cliente --rm -it --image=curlimages/curl --restart=Never -- curl -sS http://web
Aparece la página Welcome to nginx!. El nombre completo del Service es
web.default.svc.cluster.local, con el formato service.namespace.svc.cluster.local.
Para hablar con un Service de otro namespace, use al menos web.NAMESPACE.
🚀 4. Bloquear el acceso con una Network Policy
Una Network Policy es una regla de firewall dentro del clúster. Vamos a permitir
que el pod web reciba conexiones solo de pods con la etiqueta acesso=permitido.
Cree el archivo 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
run: web es la etiqueta que el comando kubectl run web agrega al pod automáticamente.
🚀 5. Probar la política
Sin la etiqueta (debe ser bloqueado):
kubectl run cliente-bloqueado --rm -it --image=curlimages/curl --restart=Never -- curl -sS -m 5 http://web
Respuesta esperada: curl: (28) ... timed out
Con la etiqueta (debe funcionar):
kubectl run cliente-ok --rm -it --labels=acesso=permitido --image=curlimages/curl --restart=Never -- curl -sS -m 5 http://web
Respuesta esperada: la página Welcome to nginx!.
🚀 6. Bloquear todo por defecto (opcional)
Esta política bloquea toda entrada en los pods del namespace, y solo pasa lo que sea liberado por otras políticas:
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: negar-tudo
spec:
podSelector: {}
policyTypes:
- Ingress
Tenga cuidado al usarla en un namespace que recibe tráfico de un Ingress. Después de bloquear todo, necesita crear una política que libere el origen del Ingress Controller, o el sitio queda fuera de línea.
✅ Cómo saber si funcionó
En el paso 5, el pod sin etiqueta no logra acceder a web, y el pod con
etiqueta sí.
❗ Problemas comunes
| Síntoma | Causa | Solución |
|---|---|---|
| El pod sin etiqueta logra acceder | El plugin de red del clúster no aplica Network Policy | Hable con soporte para confirmar el soporte de políticas |
Could not resolve host | Problema en el DNS interno | Verifique kubectl get pods -n kube-system y vea si CoreDNS está Running |
Connection refused | El Service apunta al puerto equivocado | Verifique kubectl get svc web y el puerto del contenedor |
| Timeout sin política creada | Service sin pods | Ejecute kubectl get endpoints web |
| Falla el acceso desde fuera del clúster | Puerto no liberado en el grupo de seguridad | Vea el paso 5 de la página Services |
🧹 Limpieza
kubectl delete networkpolicy web-somente-autorizados negar-tudo
kubectl delete svc web
kubectl delete pod web
Si no creó la política del paso 6, el comando anterior muestra una advertencia de
not found para negar-tudo. Puede ignorarla.
🧠 ¿Dudas?
¡Hable con nuestro equipo de soporte técnico de SaveinCloud!