Introducción a Kubernetes
¿Alguna vez has intentado gestionar un par de contenedores Docker y has sentido que tienes el control, para luego ver cómo tu infraestructura se desmorona en cuanto intentas escalar o desplegar en producción? Si estás pasando de correr un par de servicios en un servidor a gestionar una arquitectura distribuida con decenas o cientos de microservicios, necesitas dejar de jugar a las manualidades y empezar a usar un orquestador de verdad. Ahí es donde entra Kubernetes (K8s). No es solo una herramienta más; es el estándar de la industria diseñado para automatizar el despliegue, el escalado y la gestión de aplicaciones contenerizadas de forma inteligente. Básicamente, si Docker es el contenedor que lleva tu carga, Kubernetes es el capitán del barco que decide dónde va cada uno, cómo se comunican entre sí y qué hacer cuando uno de ellos decide dejar de funcionar.
🚀 Iniciar con Kubernetes en 20 minutos
¿Nuevo en Kubernetes? Comienza aquí:
- Tutorial oficial: Primeros pasos – Crea tu primer cluster y despliega una app
- Play with Kubernetes – Entorno interactivo online gratuito
- Katacoda Kubernetes scenarios – Tutoriales interactivos paso a paso
Arquitectura de Kubernetes
Componentes del plano de control
- API Server: Punto de entrada para todas las operaciones
- etcd: Base de datos distribuida que almacena la configuración
- Scheduler: Asigna pods a nodos
- Controller Manager: Mantiene el estado del cluster
Componentes del nodo
- kubelet: Agente que ejecuta en cada nodo
- kube-proxy: Gestiona las reglas de red
- Container Runtime: Software que ejecuta los contenedores
Conceptos fundamentales
Pods
Los pods son la unidad más pequeña de Kubernetes. Contienen uno o más contenedores.
# pod.yaml
apiVersion: v1
kind: Pod
metadata:
name: mi-pod
spec:
containers:
- name: nginx
image: nginx:latest
ports:
- containerPort: 80
Deployments
Los deployments gestionan el estado deseado de los pods.
# deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: mi-deployment
spec:
replicas: 3
selector:
matchLabels:
app: mi-app
template:
metadata:
labels:
app: mi-app
spec:
containers:
- name: nginx
image: nginx:latest
Services
Los services exponen aplicaciones que se ejecutan en pods.
# service.yaml
apiVersion: v1
kind: Service
metadata:
name: mi-service
spec:
selector:
app: mi-app
ports:
- port: 80
targetPort: 80
type: LoadBalancer
Comandos básicos
# Aplicar un manifiesto
kubectl apply -f archivo.yaml
# Listar pods
kubectl get pods
# Ver logs de un pod
kubectl logs <pod-name>
# Ejecutar comando en un pod
kubectl exec -it <pod-name> -- /bin/bash
# Escalar un deployment
kubectl scale deployment mi-deployment --replicas=5
Casos de uso
- Microservicios
- Aplicaciones nativas en la nube
- CI/CD pipelines
- Aplicaciones de alta disponibilidad
Próximos pasos
En las siguientes secciones exploraremos:
- Configuración avanzada de clusters
- Gestión de almacenamiento
- Redes y políticas de seguridad
- Monitoreo y logging
- Helm y gestión de paquetes
Preguntas frecuentes (FAQs)
¿Cuál es la diferencia entre un Pod y un Deployment?
Un Pod es la unidad más pequeña en Kubernetes (uno o más contenedores). Un Deployment gestiona réplicas de Pods, actualizaciones y rollback automático.
¿Cómo exponer mi aplicación fuera del cluster?
Usa Services (ClusterIP, NodePort, LoadBalancer) o Ingress para HTTP/HTTPS. Para pruebas rápidas, NodePort expone en un puerto del nodo.
¿Por qué mi Pod está en estado Pending?
Revisa con kubectl describe pod <pod>. Causas comunes: falta de recursos (CPU/memoria), problemas de scheduling, o nodos no disponibles.
¿Cómo persistir datos en Kubernetes?
Usa PersistentVolumes (PV) y PersistentVolumeClaims (PVC). Para bases de datos, considera StorageClasses con provisionamiento dinámico.
¿Cuál es la diferencia entre ConfigMap y Secret?
ConfigMap: Almacena datos no sensibles (variables de entorno, archivos de config). Secret: Para datos sensibles (passwords, tokens, certificados) – están base64 encoded pero no encriptados por defecto.
Recursos adicionales
Videos tutoriales
Video: Kubernetes en 5 minutos – Introducción rápida y completa
Documentación oficial
- Sitio web oficial: kubernetes.io
- Documentación: kubernetes.io/docs
- GitHub: github.com/kubernetes/kubernetes
- Blog oficial: kubernetes.io/blog
Comunidad
- Reddit: r/kubernetes
- Stack Overflow: stackoverflow.com/questions/tagged/kubernetes
- Slack: slack.k8s.io
- Discord: discord.gg/kubernetes
¿Buscas comandos rápidos?
Consulta nuestras Recetas rápidas para comandos copy-paste comunes.
¿Problemas con Kubernetes?
Revisa nuestra sección de troubleshooting para soluciones a errores comunes.
