Kubernetes

Resumen de una línea

Orquestador de contenedores a nivel enterprise: múltiples nodos master/worker, auto-scaling, rolling updates, storage persistente, DNS interno, ideal para aplicaciones cloud-native.

Definición

Kubernetes (K8s) = Plataforma de orquestación de contenedores de código abierto que automatiza la implementación, escalabilidad y gestión de aplicaciones en contenedores.

Abstrae la infraestructura subyacente para que los desarrolladores se enfoquen en aplicaciones, no en máquinas.

Conceptos Clave

Arquitectura

Cluster Kubernetes:
  ├─ Master Node (Control Plane)
  │   ├─ API Server
  │   ├─ Scheduler
  │   ├─ Controller Manager
  │   └─ etcd (almacenamiento estado)
  │
  ├─ Worker Node 1
  │   ├─ kubelet
  │   ├─ Container runtime (Docker/podman)
  │   └─ kube-proxy
  │
  └─ Worker Node 2
      ├─ kubelet
      ├─ Container runtime
      └─ kube-proxy

Unidades de Trabajo

  • Pod: Unidad mínima, 1+ contenedores (usualmente 1)
  • ReplicaSet: Escalabilidad automática, N replicas
  • Deployment: Rolling updates, rollbacks, ciclo de vida
  • StatefulSet: Identidad persistente (bases de datos)
  • DaemonSet: Ejecutar en cada nodo (logging, monitoreo)
  • Job/CronJob: Tareas que terminan o periódicas

Exposición de Servicios

  • ClusterIP: Interno, DNS automático
  • NodePort: Puerto en cada nodo (acceso externo)
  • LoadBalancer: IP pública, load balancing
  • Ingress: Enrutamiento HTTP/HTTPS, dominios

Configuración y Secretos

  • ConfigMap: Configuración (archivos, variables)
  • Secrets: Credenciales (contraseñas, tokens)
  • Separación config/código → reproducibilidad

Almacenamiento

  • PersistentVolume (PV): Almacenamiento cluster
  • PersistentVolumeClaim (PVC): Request de almacenamiento
  • StorageClass: Provisioning dinámico
  • Desacoplamiento aplicación ↔ almacenamiento

Packaging y Distribución

  • Helm: Package manager de Kubernetes
  • Charts: Plantillas reutilizables (como apt packages)
  • Simplifica instalación de aplicaciones complejas

Ventajas

✅ Auto-escalabilidad horizontal
✅ Self-healing (reinicia contenedores fallidos)
✅ Rolling updates sin downtime
✅ Portabilidad entre clouds
✅ Gestión declarativa (deseado state)
✅ Comunidad enorme (CNCF)
✅ Ecosistema maduro

Desventajas

❌ Curva de aprendizaje pronunciada
❌ Complejidad para apps simples
❌ Overhead de recursos (master nodes)
❌ Debugging más difícil que docker-compose
❌ Requiere infraestructura o managed service

Casos de Uso

🟢 Microservicios complejos
🟢 Alta disponibilidad crítica
🟢 Multi-tenant SaaS
🟢 Escalado dinámico por demanda
🟢 Migración cloud-agnostic

🔴 Aplicación monolítica simple
🔴 Presupuesto muy limitado
🔴 Baja carga de trabajo

Instalación

Local (Desarrollo)

  • minikube: VM single-node (fácil setup)
  • kind: Kubernetes en Docker (rápido)
  • kubeadm: Multi-node manual (educativo)

Cloud (Producción)

  • EKS (AWS)
  • AKS (Azure)
  • GKE (Google Cloud)
  • DigitalOcean Kubernetes

Relaciones

Conecta con

  • Contenedores — Unidad de deployment
  • Docker — Runtime típico
  • Podman — Alternativa OCI-compatible
  • OpenShift — Distribución empresarial de Kubernetes con abstracciones PaaS

Parte de

  • Cloud Native Computing Foundation (CNCF) ecosystem

Comparado con

  • Docker Compose: Simple single-host
  • Nomad: Orquestador general-purpose (no solo contenedores)
  • OpenShift: Distribución empresarial con features adicionales (ImageStream, BuildConfig, Routes)

Fuentes