Saltar al contenido principal

Los Pods en Kubernetes

Un error muy común de principiante es pensar que Kubernetes maneja contenedores (Docker containers) directamente.

Kubernetes no toca los contenedores desnudos. La unidad más atómica y minúscula que K8S sabe agendar, encender, clonar o matar se llama POD.

¿Qué es un Pod?

Un Pod es una envoltura o cápsula. Piensa en el Pod como un "departamento" y en los contenedores como los "humanos" viviendo dentro. Eminentemente, un Pod existe únicamente y exclusivamente para abrigar y ejecutar un contenedor de Docker adentro.

¿Por qué existe esta capa extra?

Porque a veces (muy pocas, pero pasa), dos contenedores están tan estrechamente y genéticamente vinculados que necesitan convivir físicamente en el mismo entorno asilado.

Imagina un contenedor principal corriendo tu Servidor Web, pero requiere forzosamente un contenedor "Ayudante" sidecar (un log-monitor que intercepta todo lo que escribe el servidor para subirlo al control base). Kubernetes encapsula a los dos dentro de un solo Pod.

Así, Kubernetes garantiza que siempre los dos vivirán en la misma máquina física (el mismo Nodo Worker), compartirán la misma y única dirección IP ("localhost"), y si se mata uno, desaparecerá toda la familia y se creará una exactamente igual en otro barrio.


Escribiendo un manifiesto Pod (.yaml)

En Kubernetes, en lugar de teclear cincuenta caracteres locos en línea de comandos como hacíamos en Docker, definimos absolutamente "Lo Que Queremos" de forma Declarativa por escrito. Archivos descriptivos e imperativos .yaml (Tal como un menú que mandas a tu jefe).

# Definimos el tipo de objeto que estamos solicitando crear.
apiVersion: v1
kind: Pod

# Le damos una identidad real: su nombre para la comunidad y etiquetas rastreables para ubicarlo pronto.
metadata:
name: pod-mi-pagina-nginx
labels:
aplicacion: webfront

# Definimos y desglosamos QUIÉN vivirá en este departamento
spec:
containers:
- name: contenedor-nginx # Mi primer humano
image: nginx:latest # Viene directo y mágicamente desde DockerHub mundial
ports:
- containerPort: 80 # Que abra su propia ventana pública

Ejecutándolo en la vida real

Para entregarle "la orden de restaurante" a nuestro querido Master Node para que delegue hacer esta magia a sus esclavos (workers) debes hablarle a él con la famosa herramienta o varita mágica administrativa: kubectl

kubectl apply -f archivo-formulario-pod.yml

¿Y para verlos todos creados orgullosamente en la base militar?

kubectl get pods