10.3 Kubernetes (K8s): Orquestación de Contenedores a Escala¶
Introducción¶
Una vez que las aplicaciones se ejecutan en contenedores, surge un problema inmediato en entornos reales: ¿cómo gestionar decenas o cientos de contenedores distribuidos entre múltiples nodos? Aquí es donde entra Kubernetes (K8s).
Kubernetes es una plataforma de orquestación que automatiza el despliegue, escalado y operación de aplicaciones contenerizadas. Permite pasar de ejecutar contenedores individuales a gestionar infraestructuras completas declarativas y resilientes.
Para un Sysadmin senior, Kubernetes no es solo una herramienta, sino un cambio de paradigma operativo: se deja de administrar máquinas para administrar estados deseados.
Objetivos de aprendizaje¶
Al finalizar este capítulo serás capaz de:
- Comprender la arquitectura y componentes de Kubernetes.
- Gestionar clústeres y nodos.
- Desplegar aplicaciones mediante objetos declarativos.
- Entender el ciclo de vida de los Pods.
- Aplicar buenas prácticas en entornos productivos.
Conceptos Teóricos¶
1. ¿Qué es Kubernetes?¶
Kubernetes es un sistema de orquestación que permite:
- desplegar contenedores automáticamente
- escalar aplicaciones
- gestionar redes internas
- garantizar alta disponibilidad
Se basa en un modelo declarativo: defines el estado deseado y Kubernetes se encarga de alcanzarlo.
Concepto clave
En Kubernetes no ejecutas contenedores manualmente; defines cómo deben ejecutarse y el sistema mantiene ese estado.
2. Arquitectura de Kubernetes¶
Un clúster Kubernetes se compone de:
Plano de control (Control Plane)¶
- API Server → punto central de comunicación
- Scheduler → decide dónde ejecutar los Pods
- Controller Manager → mantiene el estado deseado
- etcd → base de datos del clúster
Nodos (Workers)¶
- kubelet → agente que ejecuta Pods
- container runtime → Docker, containerd
- kube-proxy → gestión de red
3. Objetos principales¶
Pod¶
Unidad mínima de ejecución (uno o varios contenedores).
Deployment¶
Define cómo desplegar Pods y garantiza disponibilidad.
Service¶
Expone aplicaciones dentro o fuera del clúster.
Namespace¶
Aislamiento lógico dentro del clúster.
4. Modelo declarativo¶
Ejemplo:
Kubernetes asegura que siempre existan 2 réplicas.
5. Networking¶
Cada Pod:
- tiene su propia IP
- puede comunicarse con otros Pods
Servicios:
- ClusterIP
- NodePort
- LoadBalancer
6. Escalabilidad y autocuración¶
Kubernetes permite:
- escalar Pods automáticamente
- reiniciar contenedores fallidos
- redistribuir carga
Laboratorio Práctico¶
Escenario¶
Desplegar una aplicación web en Kubernetes:
- crear deployment
- exponer servicio
- verificar funcionamiento
Este laboratorio asume un entorno local con minikube o similar.
Parte 1: Verificar clúster¶
Ver nodos¶
Parte 2: Crear Deployment¶
apiVersion: apps/v1
kind: Deployment
metadata:
name: web-deploy
spec:
replicas: 2
selector:
matchLabels:
app: web
template:
metadata:
labels:
app: web
spec:
containers:
- name: nginx
image: nginx:1.25
ports:
- containerPort: 80
Aplicar configuración¶
Ver Pods¶
Parte 3: Exponer servicio¶
Ver servicios¶
Acceso¶
Parte 4: Escalado¶
Ver resultado:
Output esperado¶
Errores Comunes y Troubleshooting¶
1. Pods en estado CrashLoopBackOff¶
Causa:
- error en contenedor
Solución:
2. Imagen incorrecta¶
Solución:
verificar nombre y acceso al repositorio.
3. Problemas de red¶
Servicio no accesible.
Solución:
4. Recursos insuficientes¶
Pods no programados.
Solución:
verificar capacidad del nodo.
5. YAML inválido¶
Errores de indentación.
Solución:
validar estructura cuidadosamente.
Buenas Prácticas (Nivel Senior)¶
1. Uso de namespaces¶
Separar entornos:
2. Definir recursos¶
3. Health checks¶
4. Uso de ConfigMaps y Secrets¶
Separar configuración:
5. Imágenes versionadas¶
Evitar latest.
6. Rolling updates¶
Actualizaciones sin downtime:
7. RBAC¶
Controlar accesos al clúster.
8. Observabilidad¶
Integrar con:
- Prometheus
- Grafana
- ELK
9. Infraestructura como código¶
Gestionar manifests en Git + CI/CD.
Resumen y Siguiente Paso¶
Has comprendido los fundamentos de Kubernetes, incluyendo su arquitectura, modelo declarativo y capacidad para orquestar contenedores a gran escala. Este conocimiento te permite evolucionar desde la ejecución de contenedores individuales hacia la gestión de plataformas completas.
Kubernetes representa el estándar actual en despliegues modernos, especialmente en entornos cloud y microservicios.
Con este capítulo, completas el bloque de virtualización:
- KVM → virtualización tradicional
- Docker → contenedores
- Kubernetes → orquestación
El siguiente paso es profundizar en la observabilidad y operación de sistemas complejos:
➡️ 11-monitorización — rendimiento, métricas y troubleshooting avanzado en Linux.