Kubernetes: Introducción y Conceptos Básicos
Kubernetes, también conocido como K8s, es una plataforma open-source para automatizar el despliegue, escalado y gestión de aplicaciones en contenedores. Originalmente desarrollado por Google, se ha convertido en el estándar de facto para orquestación de contenedores.
¿Qué es Kubernetes?
Kubernetes es un sistema de orquestación de contenedores que automatiza muchas tareas manuales involucradas en el despliegue, gestión y escalado de aplicaciones en contenedores. Proporciona un marco para ejecutar sistemas distribuidos de manera resiliente.
Conceptos Fundamentales
Pods
La unidad más pequeña y básica en Kubernetes. Un pod puede contener uno o más contenedores que comparten almacenamiento y red.
Services
Un servicio expone una aplicación ejecutándose en un conjunto de pods como un servicio de red. Proporciona un punto de acceso estable.
Deployments
Un deployment gestiona un conjunto de pods replicados. Permite actualizaciones sin tiempo de inactividad.
Arquitectura de Kubernetes
Control Plane (Plano de Control)
Gestiona el clúster. Incluye componentes como API Server, etcd, Scheduler y Controller Manager.
Nodes (Nodos)
Máquinas worker que ejecutan las aplicaciones. Cada nodo contiene kubelet, kube-proxy y un runtime de contenedores.
Comandos Básicos
# Ver pods
kubectl get pods
# Crear un deployment
kubectl create deployment mi-app --image=nginx
# Escalar un deployment
kubectl scale deployment mi-app --replicas=3
# Ver servicios
kubectl get services
# Aplicar un archivo YAML
kubectl apply -f deployment.yaml
Ejemplo de Deployment
apiVersion: apps/v1
kind: Deployment
metadata:
name: mi-app
spec:
replicas: 3
selector:
matchLabels:
app: mi-app
template:
metadata:
labels:
app: mi-app
spec:
containers:
- name: mi-app
image: nginx:latest
ports:
- containerPort: 80
Ventajas de Kubernetes
- Escalado automático de aplicaciones
- Auto-recuperación de contenedores fallidos
- Rolling updates sin downtime
- Gestión eficiente de recursos
- Portabilidad entre diferentes proveedores cloud
Conclusión
Kubernetes puede parecer complejo al principio, pero sus beneficios para aplicaciones en producción son enormes. Comienza con conceptos básicos, experimenta localmente con minikube o kind, y gradualmente avanza hacia despliegues más complejos.