Ubuntu Kubernetes header
Oscar Malda

Óscar Malda

Google Cloud Architect & DevOps

Volver atrás
Lab

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:

Ubuntu en Kubernetes 1

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:

Ubuntu en Kubernetes 2
Ubuntu en Kubernetes 3


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.

Ubuntu en Kubernetes 4

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