Kubernetes: Orquestacion de Contenedores
Kubernetes (K8s) es la plataforma de orquestacion de contenedores mas utilizada. Automatiza el deployment, scaling y gestion de aplicaciones containerizadas. Si Docker es como una caja para tu aplicacion, Kubernetes es el almacen inteligente que organiza miles de cajas.
Arquitectura de Kubernetes
| Componente | Funcion | Analogia |
|---|---|---|
| Control Plane | Cerebro del cluster, toma decisiones | Gerente de almacen |
| Node | Maquina que ejecuta contenedores | Trabajador |
| Pod | Unidad minima, 1+ contenedores | Una caja |
| Service | Punto de acceso estable a pods | Direccion fija del almacen |
| Deployment | Declaracion del estado deseado | Orden de trabajo |
| Namespace | Aislamiento logico | Seccion del almacen |
# deployment.yml - Tu primera app en K8s
apiVersion: apps/v1
kind: Deployment
metadata:
name: mi-app
labels:
app: mi-app
spec:
replicas: 3
selector:
matchLabels:
app: mi-app
template:
metadata:
labels:
app: mi-app
spec:
containers:
- name: app
image: mi-app:1.0.0
ports:
- containerPort: 3000
resources:
requests:
memory: '128Mi'
cpu: '100m'
limits:
memory: '256Mi'
cpu: '500m'
readinessProbe:
httpGet:
path: /health
port: 3000
initialDelaySeconds: 5
periodSeconds: 10
---
apiVersion: v1
kind: Service
metadata:
name: mi-app-service
spec:
selector:
app: mi-app
ports:
- port: 80
targetPort: 3000
type: ClusterIP🚀 Dato Clave
SIEMPRE define resources requests y limits. Sin limits, un pod puede consumir toda la memoria del nodo y tumbar otros servicios. Sin requests, el scheduler no puede distribuir carga eficientemente.
# Comandos kubectl esenciales
kubectl apply -f deployment.yml
kubectl get pods
kubectl describe pod mi-app-xxxxx
kubectl logs mi-app-xxxxx -f
kubectl exec -it mi-app-xxxxx -- sh
kubectl rollout status deployment/mi-app
kubectl rollout undo deployment/mi-appCon estos fundamentos puedes desplegar aplicaciones en cualquier cluster Kubernetes.