Día 29 - Introducción a Kubernetes
🧭 ¡Bienvenido al mundo de Kubernetes!
🤔 ¿Qué es Kubernetes?
Kubernetes (K8s) es un orquestador de contenedores open source que automatiza el despliegue, escalado, operación y recuperación de aplicaciones en contenedores.
¿Por qué es tan importante?
- 🏗️ Despliegue automático de apps y microservicios
- ⚖️ Escalado horizontal según demanda (¡sin downtime!)
- 🔄 Actualizaciones continuas y rollback seguro
- 🛡️ Alta disponibilidad y autorecuperación ante fallos
- 🌐 Balanceo de carga y gestión de tráfico
🧱 Conceptos Clave (¡memorízalos!)
Concepto | Descripción breve y visual |
---|---|
Clúster | 🖥️🖥️🖥️ Grupo de máquinas (nodos) que ejecutan Kubernetes |
Node | 💻 Máquina física/virtual del clúster (puede ser worker o master) |
Pod | 📦 Unidad mínima: uno o más contenedores que comparten red y almacenamiento |
Deployment | 🚀 Controla el ciclo de vida de los Pods (actualizaciones, réplicas) |
Service | 🌐 Expone Pods y balancea tráfico |
Namespace | 🏷️ Agrupa recursos lógicamente |
ConfigMap/Secret | 🔑 Configuración y secretos para tus apps |
📌 Tip: ¡Aprende estos términos! Son la base de todo lo que harás en Kubernetes.
¿Ya dominas Docker? ¡Ahora es momento de dar el siguiente gran salto! Si Docker nos ayuda a empaquetar aplicaciones, Kubernetes (K8s) nos permite orquestarlas, escalarlas y gestionarlas como lo hacen las empresas líderes del mundo.
Esta semana conocerás uno de los pilares del DevOps moderno y la nube: Kubernetes. Aprenderás a crear tu propio clúster, desplegar aplicaciones y entender los conceptos que usan los equipos de alto rendimiento.
💡 Motivación: Kubernetes es la tecnología estándar para operar aplicaciones en producción, desde startups hasta gigantes como Google, Spotify o Airbnb. ¡Dominarlo te abre puertas en el mundo IT!
🛠️ La CLI de Kubernetes: kubectl
kubectl
es la herramienta principal para interactuar con tu clúster Kubernetes desde la terminal. Permite crear, consultar, modificar y eliminar recursos, así como depurar y automatizar tareas.
Comandos esenciales:
kubectl get <recurso>
: Lista recursos (pods, deployments, services, etc.)kubectl describe <recurso> <nombre>
: Detalla información y eventos de un recursokubectl logs <pod>
: Muestra los logs de un podkubectl apply -f archivo.yaml
: Aplica configuraciones declarativaskubectl exec -it <pod> -- bash
: Accede a la terminal de un contenedor
📌 Tip: Usa
kubectl explain <recurso>
para ver la documentación inline de cualquier recurso.
Más adelante en el reto, aprenderás a usar kubectl
con archivos YAML para gestionar infraestructuras complejas.
🏗️ Arquitectura de Kubernetes (visión general)
Kubernetes sigue una arquitectura maestro-trabajador (master-worker) y está compuesto por varios componentes clave:
Arquitectura visual (oficial)
Diagrama simplificado
Componentes principales
- API Server: Puerta de entrada al clúster, recibe comandos de
kubectl
y otras apps. - etcd: Base de datos distribuida que almacena el estado del clúster.
- Scheduler: Decide en qué nodo se ejecuta cada pod.
- Controller Manager: Supervisa el estado y realiza acciones automáticas (replicas, jobs, etc).
- Kubelet: Agente que corre en cada nodo worker, ejecuta los pods y reporta al API Server.
- Kube-Proxy: Gestiona el networking y el balanceo de tráfico hacia los pods.
🧠 Resumen:
- El plano de control (control plane) administra el clúster.
- Los nodos workers ejecutan las aplicaciones (pods).
kubectl
se comunica con el API Server para gestionar todo.
🛠️ Instalación de Herramientas
1. kubectl
(CLI de Kubernetes)
▶️ Ver instrucciones según sistema operativo
Windows
choco install kubernetes-cli
curl -LO "https://dl.k8s.io/release/v1.28.0/bin/windows/amd64/kubectl.exe"
macOS
brew install kubectl
# Alternativa:
sudo port install kubectl
Linux
curl -LO "https://dl.k8s.io/release/$(curl -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"
sudo install -o root -g root -m 0755 kubectl /usr/local/bin/kubectl
✅ Valida la instalación:
kubectl version --client
Debe mostrar la versión instalada. Si no, revisa tu PATH.
2. Minikube
(Entorno local de Kubernetes)
▶️ Ver instrucciones según sistema operativo
Windows
choco install minikube
# o descargar desde: https://minikube.sigs.k8s.io/docs/start/
macOS
brew install minikube
Linux
curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64
sudo install minikube-linux-amd64 /usr/local/bin/minikube
💡 Requisito: Necesitas tener instalado Docker, VirtualBox o similar como backend de Minikube.
🚀 Crear tu Primer Clúster Local
minikube start
minikube status
Verificar que todo funcione
kubectl version --client
kubectl cluster-info
kubectl get nodes
📦 Desplegar tu Primera App
Ejemplo rápido: Hola Mundo con kubectl run
Puedes lanzar un contenedor simple de Nginx (o cualquier imagen) con un solo comando:
kubectl run hola-mundo --image=nginx --port=80
kubectl get pods
Esto crea un Pod llamado hola-mundo
usando la imagen oficial de Nginx. Puedes ver el pod corriendo con kubectl get pods
.
📝 Nota:
kubectl run
es útil para pruebas rápidas, pero en producción se recomienda usarkubectl create deployment
.
Despliegue recomendado (Deployment + Service)
kubectl create deployment hello-minikube --image=k8s.gcr.io/echoserver:1.4
kubectl expose deployment hello-minikube --type=NodePort --port=8080
kubectl get services hello-minikube
minikube service hello-minikube
📋 Comandos Básicos
kubectl get all
kubectl describe pod <nombre-pod>
kubectl logs <nombre-pod>
kubectl delete deployment <nombre-deployment>
kubectl <comando> --help
🧪 BONUS: Explorar el Dashboard
minikube dashboard
🎯 Tip: Explorá visualmente tus Pods, Deployments, Services y mucho más.
📝 Tareas del Día
-
✅ Instalar
kubectl
yminikube
-
✅ Iniciar tu primer clúster con
minikube start
-
✅ Verificar que
kubectl
se conecta correctamente -
✅ Desplegar y acceder a
hello-minikube
-
✅ Abrir y explorar el
minikube dashboard
-
✅ Tomar un screenshot de tu clúster funcionando
-
🆕 [Nueva] Crear un archivo llamado
mi-cluster.md
y anotar:- Qué es un Pod, Node y Deployment (en tus palabras)
- Qué comandos usaste hoy
- Qué fue lo que más te sorprendió de Kubernetes
🛠️ Solución de Problemas
🧯 Minikube no inicia
minikube start --help | grep driver
minikube start --driver=docker # o virtualbox
❌ kubectl no encuentra el clúster
kubectl config current-context
kubectl config use-context minikube
🐳 Alternativa: KIND (Kubernetes IN Docker)
Ideal si ya usás Docker y querés evitar VMs. Para instalar y probar:
curl -Lo ./kind https://kind.sigs.k8s.io/dl/v0.20.0/kind-$(uname)-amd64
chmod +x ./kind
sudo mv ./kind /usr/local/bin/kind
kind create cluster
📌 Ver documentación: KIND Docs
📚 Recursos Útiles
🎉 ¡Lo lograste!
Tenés tu primer clúster funcionando. Mañana exploramos Pods y Deployments a fondo 🚀
📸 ¡Compartí tu progreso en la comunidad con #DevOpsConRoxs
!