

Óscar Malda
Google Cloud Architect & DevOps
3 min de lectura
20 de febrero de 2026
Ubuntu en Kubernetes: Cómo desplegar un Pod de Ubuntu para diagnosticar el clúster
A veces las herramientas de observabilidad no son suficientes. En esta guía desplegamos una instancia limpia de Ubuntu dentro de un clúster (GKE) para usarla como bastión host de diagnóstico interno.
1. ¿Por qué necesitamos un Ubuntu dentro del clúster?
Aunque Kubernetes es robusto, los problemas de conectividad y permisos entre servicios son el pan de cada día. Levantar un Pod de Ubuntu nos permite simular ser una aplicación más y diagnosticar casos como:
- Verificar resolución de DNS interna: ¿Está CoreDNS resolviendo el nombre de tu service?
- Testar conectividad (Ping/Curl): Comprobar si un firewall o NetworkPolicy está bloqueando el tráfico hacia una base de datos o API externa.
- Validar permisos: Comprobar si la Service Account tiene acceso real a los recursos esperados.
- Verificar montaje de volúmenes: Confirmar si los PV/PVCs o buckets se montan correctamente en el sistema de archivos.
- Diagnosticar problemas de red internos entre Pods y Services.
2. Preparación del entorno (GKE)
Usaremos Google Kubernetes Engine (GKE) para este ejemplo, ya que facilita y simplifica la creación y configuración inicial del clúster.
No obstante, esta guía es aplicable a cualquier otro proveedor de servicios de Kubernetes (EKS de AWS, AKS de Azure, entornos on-premise).
Crear clúster
* Sáltate esta parte si ya tienes el clúster creado.
1. Deberás tener instalado el SDK de Google → Guía de instalación.
2. Nos logueamos en Google Cloud y seleccionamos el proyecto donde vamos a crear el clúster:
gcloud auth login
gcloud config set project [ID-PROYECTO]
3. Creamos el clúster:
gcloud config set compute/zone europe-west1-b
gcloud container clusters create "debug-cluster" \
--machine-type "e2-medium" \
--num-nodes 1
Y con esto ya tenemos nuestro GKE listo:

Conectarse al clúster
Para operar con el clúster a través de comandos “kubectl” deberemos conectarnos. Para GKE deberás hacerlo a través de este comando:
gcloud container clusters get-credentials "debug-cluster"
3. El Manifiesto YAML (el truco del sleep)
Aquí está la clave. Si despliegas un contenedor de Ubuntu sin más, Kubernetes lo iniciará y, como no tiene ningún proceso en ejecución, el contenedor morirá inmediatamente (estado Completed o CrashLoopBackOff).
Para mantenerlo vivo, debemos forzar un comando de espera.
1. Crea un archivo llamado ubuntu-debug.yaml:
apiVersion: v1
kind: Pod
metadata:
name: ubuntu
labels:
app: ubuntu
spec:
containers:
- image: ubuntu
command:
- "sleep"
- "infinity"
imagePullPolicy: IfNotPresent
name: ubuntu
restartPolicy: Always
2. Aplica el manifiesto:
kubectl apply -f ubuntu-debug.yaml
Alternativamente a crear un YAML, podemos ejecutar el comando directamente en el terminal:
cat <<EOF | kubectl apply -f -
apiVersion: v1
kind: Pod
metadata:
name: ubuntu
labels:
app: ubuntu
spec:
containers:
- image: ubuntu
command:
- "sleep"
- "infinity"
imagePullPolicy: IfNotPresent
name: ubuntu
restartPolicy: Always
EOF
4. Conectarse al Pod de Ubuntu
Verifica que el estado del Pod sea Running. Puedes hacerlo a través del comando kubectl get pods o a través de la consola de Google Cloud:


Nos conectamos a la terminal de Ubuntu del contenedor:
kubectl exec -it ubuntu -- /bin/bash
Veremos el prompt de root: root@ubuntu:/#. Ya estamos dentro de Ubuntu y dentro de la red del clúster de Kubernetes, listos para realizar cualquier tarea de diagnóstico.

5. Pruebas de diagnóstico
Una vez dentro del contenedor, podemos ejecutar distintas pruebas de diagnóstico para validar red, DNS, permisos y almacenamiento desde el propio contexto del clúster.
Instala primero algunas herramientas que te pueden ayudar en los tests:
apt-get update && apt-get install -y curl dnsutils iputils-ping telnet
a) Verifica resolución de DNS
nslookup kubernetes.default
nslookup mi-database-service
b) Verifica conectividad
# Probar puerto TCP específico (ej. Postgres)
telnet postgres-service 5432# Probar respuesta HTTP
curl -v http://mi-backend-api:8080/health
c) Volúmenes
# Verificar montaje
df -h
# Probar escritura (si tienes permisos)
echo "test" > /mnt/mi-volumen/test.txt
6. Conclusión y limpieza
Tener este YAML a mano te puede salvar horas de depuración "a ciegas".
Recuerda eliminar el pod cuando termines para no dejar recursos consumiendo o puertas abiertas innecesarias:
# termina la conexión con el Pod de Ubuntu
exit# Elimina el Pod
kubectl delete pod ubuntu
3 min de lectura
¿Docker lento en Windows?: Multiplica el rendimiento usando WSL 2

4 min de lectura
Banca y seguros

5 min de lectura
Más allá del código: Por qué la cultura es el "ingrediente secreto" del Nearshoring estratégico

16 min de lectura
Low Code: la clave para resolver los grandes retos de IT en la industria
