Crear tu primer Pod en Kubernetes con Minikube


En este post vamos a realizar la explicación de como crear un pod usando kubectl run, kubectl create deployment y kubectl apply

oscar Escrito por oscar 24 July 2025 67 0

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.

Comentario

Debe aceptar antes de enviar