Tecnología que te entiende
Kubernetes para principiantes: pods, deployments y services
Cloud

Kubernetes para principiantes: pods, deployments y services

15 Apr 2026 2 min de lectura 972 vistas

Kubernetes (K8s) es el orquestador de contenedores dominante en la industria. Si sabes Docker pero no Kubernetes, te estás perdiendo la mitad del ecosistema. Esta guía te explica los conceptos clave sin que te quieras rendir en el intento.

¿Por qué existe Kubernetes?

Docker te permite correr contenedores en un servidor. Pero ¿qué pasa cuando necesitas correr 100 contenedores en 10 servidores, asegurar que siempre haya 3 réplicas corriendo, actualizar sin downtime, escalar automáticamente bajo carga y recuperarse de fallos sin intervención manual? Eso es Kubernetes.

Arquitectura básica

Un cluster de Kubernetes tiene dos tipos de nodos:

  • Control Plane (antes Master): gestiona el cluster — API Server, Scheduler, etcd, Controller Manager
  • Worker Nodes: donde corren los contenedores — tienen el kubelet, kube-proxy y el container runtime (Docker, containerd)

Los objetos fundamentales

Objeto Qué es
Pod La unidad mínima de K8s. Uno o más contenedores que comparten red y almacenamiento. Efímero — si muere, K8s lo recrea.
Deployment Gestiona réplicas de Pods. Define cuántas instancias correr y cómo actualizarlas (rolling update).
Service Expone Pods con una IP estable y load balancing. Los Pods cambian de IP — el Service no.
ConfigMap Variables de configuración no sensibles inyectadas en los Pods.
Secret Como ConfigMap pero para datos sensibles (contraseñas, tokens). Base64-encoded.
Ingress Enruta tráfico HTTP/HTTPS desde el exterior hacia los Services correctos según la URL.

Tu primer Deployment

# deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: mi-app
spec:
  replicas: 3            # 3 instancias siempre corriendo
  selector:
    matchLabels:
      app: mi-app
  template:
    metadata:
      labels:
        app: mi-app
    spec:
      containers:
        - name: mi-app
          image: nginx:alpine
          ports:
            - containerPort: 80
          resources:
            requests:
              memory: "64Mi"
              cpu: "250m"
            limits:
              memory: "128Mi"
              cpu: "500m"
# Aplicar el manifiesto
kubectl apply -f deployment.yaml

# Ver el estado
kubectl get deployments
kubectl get pods

# Escalar a 5 réplicas
kubectl scale deployment mi-app --replicas=5

# Ver logs de un pod
kubectl logs <nombre-del-pod>

# Entrar a un pod (como docker exec)
kubectl exec -it <nombre-del-pod> -- /bin/sh

Exponer con un Service

# service.yaml
apiVersion: v1
kind: Service
metadata:
  name: mi-app-svc
spec:
  selector:
    app: mi-app        # conecta con todos los Pods con este label
  ports:
    - port: 80
      targetPort: 80
  type: ClusterIP      # solo interno; usa LoadBalancer para exponer al exterior

Práctica local con minikube o kind

# Instalar minikube (cluster de un nodo local)
# https://minikube.sigs.k8s.io/docs/start/

minikube start

# Verificar que kubectl apunta al cluster local
kubectl cluster-info

# Abrir el dashboard web
minikube dashboard

# Detener el cluster
minikube stop
💡 K3s para producción ligera: Si necesitas Kubernetes en un VPS pequeño o Raspberry Pi, K3s de Rancher es una distribución oficial certificada con solo 40 MB de binario. Instala en 30 segundos y consume ~512 MB de RAM.
"Kubernetes tiene una curva de aprendizaje empinada. Pero una vez que lo entiendes, nunca querrás gestionar contenedores de otra forma."