Kubernetes (K8s) es un orquestador de contenedores open-source que automatiza el despliegue, escalado y gestión de aplicaciones en contenedores. Resuelve los problemas de operar Docker a escala.
Arquitectura:
Cluster
├── Control Plane (master)
│ ├── API Server ← punto de entrada de toda comunicación
│ ├── Scheduler ← asigna pods a nodos
│ ├── Controller Manager ← mantiene el estado deseado
│ └── etcd ← almacén de estado del cluster
└── Worker Nodes
├── kubelet ← agente en cada nodo
├── kube-proxy ← networking del nodo
└── Container Runtime ← Docker/containerd
Objetos principales:
| Objeto | Descripción |
|---|---|
| Pod | Unidad mínima: 1+ contenedores que comparten red y almacenamiento |
| Deployment | Gestiona N réplicas de un Pod + rolling updates |
| Service | Expone Pods con una IP/DNS estable (ClusterIP/NodePort/LoadBalancer) |
| ConfigMap | Configuración no sensible (inyectada como env vars o archivos) |
| Secret | Configuración sensible (passwords, tokens) — base64 encoded |
| HPA | Horizontal Pod Autoscaler — escala réplicas según CPU/memoria |
| Ingress | Punto de entrada HTTP/S con routing por host/path |
Comandos básicos:
kubectl get pods # lista pods
kubectl describe pod <nombre> # detalles
kubectl logs <pod> # logs del pod
kubectl apply -f deployment.yaml # aplica manifiesto
kubectl scale deployment app --replicas=5- Alta disponibilidad: si un pod falla, Kubernetes lo reemplaza automáticamente.
- Escalado automático: HPA ajusta las réplicas según la carga.
- Rolling updates: despliegues sin downtime con rollback automático si falla.
- ConfigMap/Secret: configuración externalizada sin recompilar imágenes.
Este módulo es solo teoría — los manifiestos YAML se aplican en un cluster real.