En este post vamos a realizar la explicación de como crear un pod con kubernates y el comando kubectl de distintas formas por medio de ejemplos que vamos a realizar, ademas de mencionar todos los comandos necesarios que pueden ser de utilidad para trabajar con pods.
✅ Precondiciones
- Realizar la instalación correcta de un entorno de trabajo para kubernetes, tengo una Guía completa de comandos Minikube
- Asegúrate de que Minikube está corriendo Abre PowerShell o CMD y ejecuta:
minikube start
- Revisa los comandos de kubectl
- Valida si estas en el contexto correcto del clustes de minikube, en Contexto en kubectl te explico como.
🧪 Comparación entre kubectl run, kubectl create deployment y kubectl apply
Para crear un pod, tenemos varias formas de hacerlo, a continuación doy un resumen de cuales son las tres formas mas comunes:
Comando | ¿Qué hace? | ¿Cuándo usarlo? |
---|---|---|
kubectl run |
Crea un pod único directamente desde la línea de comandos. | Pruebas rápidas o contenedores efímeros. |
kubectl create deployment |
Crea un deployment con especificaciones básicas desde CLI. | Crear deployments rápidos sin archivo YAML. |
kubectl apply -f archivo.yaml |
Aplica (crea o actualiza) recursos a partir de un archivo YAML. | Para producción, control de versiones y buenas prácticas. |
🔹 kubectl run
kubectl run es un comando que se utiliza para crear y ejecutar rápidamente un Pod en Kubernetes.
Nota: Originalmente, también podía crear Deployments y otros recursos, pero en las versiones más recientes de Kubernetes su propósito principal es crear un Pod temporal para pruebas o ejecución rápida de contenedores.
📌 Cómo se usa
kubectl run mi-nginx --image=nginx
- Crea un Pod simple (ya no crea un Deployment como en versiones antiguas).
- No es persistente: si el pod se elimina, no se recrea.
- Ideal para hacer pruebas rápidas.
- No escala ni tiene gestión de versiones.
🧪 Ejemplos crear pods:
1️⃣ Crear un pod simple
kubectl run test-nginx --image=nginx --port=80
Respuesta: pod/nginx created
2️⃣ Crear un Pod interactivo con shell
kubectl run -it busybox --image=busybox --restart=Never -- sh
Este comando lanza un contenedor BusyBox con una shell interactiva. Útil para pruebas en la red del clúster.
If you don't see a command prompt, try pressing enter.
/ # ls
bin dev etc home lib lib64 proc root sys tmp usr var
/ # date
Mon Jul 28 20:22:01 UTC 2025
/ #
📋 Listar los pods
Usa el siguiente comando para listar todos los pods
kubectl get pods
❌ Eliminar los pods
Eliminar un solo pod
kubectl delete pod nginx
Eliminar múltiples pods a la vez
kubectl delete pod pod1 pod2 pod3
✔️ Documentación
Revisa la documentación oficial https://kubernetes.io/docs/reference/kubectl/generated/kubectl_run/ para mas información.
🔹 kubectl create deployment
El comando kubectl create deployment se usa para crear un objeto Deployment en Kubernetes, el cual administra la creación y el ciclo de vida de uno o más Pods basados en una misma configuración.
El Deployment:
- Crea y gestiona réplicas de Pods.
- Reemplaza automáticamente Pods fallidos o eliminados.
- Facilita actualizaciones controladas (rolling updates).
- Permite retroceder a versiones anteriores.
🔧 Cómo se usa
kubectl create deployment mi-nginx --image=nginx
- Crea un Deployment, que a su vez crea uno o más Pods gestionados.
- Tiene capacidades de:
- Rollout y rollback
- Escalado
- Actualizaciones
🧪 Ejemplos de deployments
1️⃣ Crear un deployment simple
kubectl create deployment miapp --image=nginx
Esto crea un Deployment llamado miapp que ejecuta la imagen de NGINX. Kubernetes creará un ReplicaSet y un Pod automáticamente.
Podemos revisar con
kubectl get all
Donde obtendremos la siguiente información
NAME READY STATUS RESTARTS AGE
pod/miapp-784d644784-62xfb 1/1 Running 0 7s
NAME READY UP-TO-DATE AVAILABLE AGE
deployment.apps/miapp 1/1 1 1 7s
NAME DESIRED CURRENT READY AGE
replicaset.apps/miapp-784d644784 1 1 1 7s
2️⃣ Crear un deployment con múltiples réplicas
kubectl create deployment mi-nginx --image=nginx --replicas=3
Esto crea 3 pods con la imagen de NGINX bajo el mismo Deployment.
Podemos revisar los deployments creados
kubectl get deployments
NAME READY UP-TO-DATE AVAILABLE AGE
mi-nginx 3/3 3 3 11s
Y los pods creados
kubectl get pods
NAME READY STATUS RESTARTS AGE
mi-nginx-7c6947c994-dcxrk 1/1 Running 0 18s
mi-nginx-7c6947c994-djcgq 1/1 Running 0 18s
mi-nginx-7c6947c994-qddrd 1/1 Running 0 18s
❌ Eliminar un deployment
kubectl delete deployment miapp
✔️ Documentación
Revisa la documentación oficial https://kubernetes.io/docs/reference/kubectl/generated/kubectl_create/kubectl_create_deployment/
🔹 kubectl apply -f archivo.yaml
kubectl apply es el comando que permite crear o actualizar recursos en Kubernetes usando archivos YAML (o JSON). Es una forma declarativa de trabajar: tú describes qué estado quieres que tenga el clúster, y Kubernetes se encarga de aplicarlo.
1️⃣ Crea el archivo YAML para un Pod
Kubernetes usa archivos YAML para describir objetos como pods, deployments, servicios, etc.
Crea un archivo llamado nginx-pod.yaml
con el siguiente contenido:
apiVersion: v1
kind: Pod
metadata:
name: mi-nginx
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx
ports:
- containerPort: 80
🔍 ¿Qué significa cada parte?
Campo | Explicación |
---|---|
apiVersion |
Versión de la API de Kubernetes. v1 para objetos básicos. |
kind |
Tipo de objeto. En este caso: Pod . |
metadata.name |
Nombre único del pod. |
labels |
Etiquetas para identificar y seleccionar este pod. |
spec |
Especificaciones del pod. |
containers |
Lista de contenedores dentro del pod (puede haber más de uno). |
image |
Imagen del contenedor (se descargará desde Docker Hub). |
containerPort |
Puerto que el contenedor expondrá internamente. |
2️⃣ Aplicar el pod en Kubernetes
Estando en el mismo directorio donde está el archivo, ejecuta:
kubectl apply -f nginx-pod.yaml
Respuesta: pod/mi-nginx created
3️⃣ Verificar el estado del Pod
kubectl get pods
Verás algo como:
NAME READY STATUS RESTARTS AGE
mi-nginx 1/1 Running 0 10s
✅ Si aparece STATUS = Running
, ¡el pod está funcionando!
✅ Ver los detalles del pod
kubectl get deployments
kubectl get pods
Luego
kubectl describe pod mi-nginx
Este comando muestra:
- Eventos
- Imagen usada
- Estado del contenedor
- Direcciones IP internas
✅ Acceder al contenedor del pod (modo consola)
kubectl exec -it mi-nginx -- /bin/bash
Luego puedes usar:
apt update && apt install curl -y
curl localhost
Verás la página HTML por defecto de Nginx.
❌ Eliminar el pod (cuando termines)
kubectl delete pod mi-nginx
Eliminar todos los recursos
kubectl delete -f nginx-pod.yaml
🧠 Conclusión
- kubectl run ❌ Para producción Solo útil para pruebas rápidas
- kubectl create deployment ✅ Intermedio Bueno para despliegues rápidos
- kubectl apply ✅✅ Recomendado Ideal para entornos reales, mantenible
📌 Recomendación para trabajar profesionalmente:
- Escribe siempre tus recursos en archivos YAML y usa kubectl apply.
- Así puedes llevar control de versiones, automatizar en CI/CD, y trabajar en equipo.