¿Qué es Kubernetes?

Kubernetes (K8s) es una plataforma de orquestación de contenedores de código abierto, originalmente diseñada por Google y ahora mantenida por la Cloud Native Computing Foundation (CNCF). Permite automatizar el despliegue, escalado y operación de aplicaciones en contenedores a través de clústeres de servidores.

Kubernetes abstrae la infraestructura subyacente y ofrece una API declarativa: tú defines el estado deseado (cuántos contenedores, qué imágenes, qué puertos) y el control plane se encarga de converger el estado actual hacia ese estado deseado.

$ minikube start --driver=docker
😄  minikube v1.32.0 on Ubuntu 24.04
✨  Usando el driver docker con perfil predeterminado
👍  Iniciando control plane node minikube en clúster minikube
🏗️  Preparando Kubernetes v1.28.3…
📦  Descargando imágenes...
🤖  Listo! minikube está listo

Arquitectura de Kubernetes

Un clúster de Kubernetes se divide en dos planos principales:

  • Control Plane (antes Master Node): es el cerebro del clúster. Incluye el API Server (punto de entrada REST), etcd (almacén clave-valor distribuido), Scheduler (asigna pods a nodos) y Controller Manager (vigila el estado deseado).
  • Nodos Workers: máquinas donde realmente corren los contenedores. Cada worker ejecuta el kubelet (agente que se comunica con el control plane) y kube-proxy (red y balanceo).
kubectl get nodes -o wide
NAME       STATUS   ROLES           AGE   VERSION   INTERNAL-IP
minikube   Ready    control-plane   5m    v1.28.3   192.168.49.2

etcd es el único almacén de estado de Kubernetes. Toda la configuración del clúster, secretos, recursos y metadatos vive ahí. Por eso en producción se recomienda tener al menos 3 nodos etcd para alta disponibilidad.

Pods, Nodes y Namespaces

Tres conceptos que debes dominar desde el día uno:

  • Pod: la unidad más pequeña de Kubernetes. Uno o más contenedores que comparten red y almacenamiento. Cada pod tiene su propia IP.
  • Node: una máquina (física o virtual) del clúster. Puede ser control-plane o worker.
  • Namespace: un clúster virtual dentro del clúster físico. Sirve para aislar equipos, entornos (dev, staging, prod) o proyectos.
kubectl get pods -A
NAMESPACE     NAME                               READY   STATUS    RESTARTS
kube-system   coredns-5dd5756b68-abc12           1/1     Running   0
kube-system   etcd-minikube                      1/1     Running   0
kube-system   storage-provisioner                 1/1     Running   0

kubectl get namespaces
NAME              STATUS   AGE
default           Active   6m
kube-system       Active   6m
kube-public       Active   6m
kube-node-lease   Active   6m

Por defecto trabajamos en el namespace default. Para crear un namespace propio: kubectl create namespace midesarrollo. A partir de ahí, todos los comandos con -n midesarrollo operarán dentro de ese contexto.

Infografía Kubernetes: Conceptos fundamentales — Clúster, Pods, Nodes y Namespaces
Infografía: Kubernetes: Conceptos fundamentales — Clúster, Pods, Nodes y Namespaces