Saltar al contenido principal

Lab 3.1 - Creación y Gestión de Pods

Objetivos​

Al final de este laboratorio, usted será capaz de:

  • Crear Pods con YAML
  • Gestionar el ciclo de vida de los Pods
  • Utilizar labels y selectors
  • Inspeccionar los Pods

Prerrequisitos​

  • Cluster Kubernetes funcional
  • kubectl instalado y configurado

Ejercicio 1: Crear un Pod Simple​

Paso 1: Crear el archivo YAML​

Cree pod-simple.yaml:

apiVersion: v1
kind: Pod
metadata:
name: nginx-pod
labels:
app: nginx
env: dev
spec:
containers:
- name: nginx
image: nginx:1.20
ports:
- containerPort: 80

Paso 2: Crear el Pod​

kubectl apply -f pod-simple.yaml

Paso 3: Verificar​

# Ver el Pod
kubectl get pods

# Detalles
kubectl describe pod nginx-pod

# Logs
kubectl logs nginx-pod

Ejercicio 2: Pod con Variables de Entorno​

Cree pod-env.yaml:

apiVersion: v1
kind: Pod
metadata:
name: env-pod
spec:
containers:
- name: busybox
image: busybox
command: ['sh', '-c', 'echo $MESSAGE && sleep 3600']
env:
- name: MESSAGE
value: "Hello from Kubernetes!"

Aplique y verifique los logs.


Ejercicio 3: Pod Multi-Contenedores​

Cree pod-multi.yaml:

apiVersion: v1
kind: Pod
metadata:
name: multi-pod
spec:
containers:
- name: nginx
image: nginx:1.20
- name: busybox
image: busybox
command: ['sh', '-c', 'while true; do echo $(date); sleep 5; done']

Pruebe la comunicación entre contenedores.


Ejercicio 4: Labels y Selectors​

Paso 1: Crear varios Pods con labels​

kubectl run pod1 --image=nginx:1.20 --labels=app=web,env=prod
kubectl run pod2 --image=nginx:1.20 --labels=app=web,env=prod
kubectl run pod3 --image=nginx:1.20 --labels=app=api,env=dev

Paso 2: Filtrar con labels​

# Pods con app=web
kubectl get pods -l app=web

# Pods con app=web Y env=prod
kubectl get pods -l app=web,env=prod

# Pods sin env=dev
kubectl get pods -l 'env!=dev'

Ejercicio 5: Ciclo de Vida​

Paso 1: Observar las fases​

# Crear un Pod
kubectl run test-pod --image=nginx:1.20

# Observar las fases
kubectl get pod test-pod -w

# Ver los eventos
kubectl describe pod test-pod

Paso 2: Probar el reinicio​

Cree un Pod que falle:

apiVersion: v1
kind: Pod
metadata:
name: crash-pod
spec:
restartPolicy: Always
containers:
- name: busybox
image: busybox
command: ['sh', '-c', 'exit 1']

Observe el reinicio automático.


Limpieza​

# Eliminar todos los Pods creados
kubectl delete pod nginx-pod env-pod multi-pod pod1 pod2 pod3 test-pod crash-pod

Preguntas de Reflexión​

  1. ¿Cuál es la diferencia entre un Pod de un solo contenedor y uno multi-contenedor?
  2. ¿Cómo se comunican los contenedores dentro de un Pod?
  3. ¿Por qué utilizar labels?
  4. ¿Qué sucede si un contenedor falla?

Próximos Pasos​

Lab 3.2: Despliegue con ReplicaSets
Capítulo 3.5: ReplicaSets


Lab creado el: Diciembre 2024