TL;DR
Qué: Plataforma de orquestación de contenedores para automatizar despliegue, escalado y gestión.
Por qué: Ejecutar contenedores a escala con alta disponibilidad, rolling updates y auto-reparación.
Quick Start
Instalar kubectl:
# macOS
brew install kubectl
# Linux
curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"
chmod +x kubectl && sudo mv kubectl /usr/local/bin/
# Verificar
kubectl version --client
Instalar Minikube (cluster local):
# 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
Iniciar un cluster:
minikube start
# Verificar
kubectl get nodes
Desplegar una aplicación:
kubectl create deployment nginx --image=nginx
kubectl expose deployment nginx --port=80 --type=NodePort
minikube service nginx
Cheatsheet
| Comando | Descripción |
|---|---|
kubectl get pods | Listar pods |
kubectl get services | Listar servicios |
kubectl get deployments | Listar deployments |
kubectl describe pod NAME | Detalles del pod |
kubectl logs POD | Ver logs del pod |
kubectl exec -it POD -- bash | Shell en el pod |
kubectl apply -f file.yaml | Aplicar config |
kubectl delete -f file.yaml | Eliminar recursos |
kubectl scale deploy NAME --replicas=3 | Escalar deployment |
kubectl rollout restart deploy NAME | Reiniciar deployment |
Gotchas
Pod stuck in Pending
# Verificar eventos
kubectl describe pod POD_NAME
# Causas comunes:
# - Recursos insuficientes → añadir nodos o reducir requests
# - Error de pull de imagen → verificar nombre de imagen y acceso al registry
CrashLoopBackOff
# Verificar logs
kubectl logs POD_NAME --previous
# Causas comunes:
# - Crash de la app → corregir código de la aplicación
# - Config faltante → verificar ConfigMaps/Secrets
Can’t connect to cluster
# Verificar contexto actual
kubectl config current-context
# Listar contextos
kubectl config get-contexts
# Cambiar contexto
kubectl config use-context CONTEXT_NAME
Apply vs Create
kubectl create # Crear nuevo recurso (falla si existe)
kubectl apply # Crear o actualizar (idempotente)
# Siempre preferir apply para producción
kubectl apply -f deployment.yaml