Skip to content

K8s

This content is not available in your language yet.

10.3 Kubernetes (K8s): Orquestación de Contenedores a Escala

Sección titulada «10.3 Kubernetes (K8s): Orquestación de Contenedores a Escala»

Una vez que las aplicaciones se ejecutan en contenedores, surge un problema inmediato en entornos reales: ¿cómo gestionar decenas o cientos de contenedores distribuidos entre múltiples nodos? Aquí es donde entra Kubernetes (K8s).

Kubernetes es una plataforma de orquestación que automatiza el despliegue, escalado y operación de aplicaciones contenerizadas. Permite pasar de ejecutar contenedores individuales a gestionar infraestructuras completas declarativas y resilientes.

Para un Sysadmin senior, Kubernetes no es solo una herramienta, sino un cambio de paradigma operativo: se deja de administrar máquinas para administrar estados deseados.


Al finalizar este capítulo serás capaz de:

  • Comprender la arquitectura y componentes de Kubernetes.
  • Gestionar clústeres y nodos.
  • Desplegar aplicaciones mediante objetos declarativos.
  • Entender el ciclo de vida de los Pods.
  • Aplicar buenas prácticas en entornos productivos.

Kubernetes es un sistema de orquestación que permite:

  • desplegar contenedores automáticamente
  • escalar aplicaciones
  • gestionar redes internas
  • garantizar alta disponibilidad

Se basa en un modelo declarativo: defines el estado deseado y Kubernetes se encarga de alcanzarlo.

En Kubernetes no ejecutas contenedores manualmente; defines cómo deben ejecutarse y el sistema mantiene ese estado.


Un clúster Kubernetes se compone de:

  • API Server → punto central de comunicación
  • Scheduler → decide dónde ejecutar los Pods
  • Controller Manager → mantiene el estado deseado
  • etcd → base de datos del clúster
  • kubelet → agente que ejecuta Pods
  • container runtime → Docker, containerd
  • kube-proxy → gestión de red

Unidad mínima de ejecución (uno o varios contenedores).

Define cómo desplegar Pods y garantiza disponibilidad.

Expone aplicaciones dentro o fuera del clúster.

Aislamiento lógico dentro del clúster.


Ejemplo:

apiVersion: apps/v1
kind: Deployment
metadata:
name: web
spec:
replicas: 2

Kubernetes asegura que siempre existan 2 réplicas.


Cada Pod:

  • tiene su propia IP
  • puede comunicarse con otros Pods

Servicios:

  • ClusterIP
  • NodePort
  • LoadBalancer

Kubernetes permite:

  • escalar Pods automáticamente
  • reiniciar contenedores fallidos
  • redistribuir carga

Desplegar una aplicación web en Kubernetes:

  • crear deployment
  • exponer servicio
  • verificar funcionamiento

Este laboratorio asume un entorno local con minikube o similar.


Ventana de terminal
kubectl cluster-info

Ventana de terminal
kubectl get nodes

Ventana de terminal
nano deployment.yml
apiVersion: apps/v1
kind: Deployment
metadata:
name: web-deploy
spec:
replicas: 2
selector:
matchLabels:
app: web
template:
metadata:
labels:
app: web
spec:
containers:
- name: nginx
image: nginx:1.25
ports:
- containerPort: 80

Ventana de terminal
kubectl apply -f deployment.yml

Ventana de terminal
kubectl get pods

Ventana de terminal
kubectl expose deployment web-deploy \
--type=NodePort \
--port=80

Ventana de terminal
kubectl get svc

Ventana de terminal
curl http://<NODE_IP>:<NODE_PORT>

Ventana de terminal
kubectl scale deployment web-deploy --replicas=4

Ver resultado:

Ventana de terminal
kubectl get pods

NAME READY STATUS
web-deploy-abc123 1/1 Running
web-deploy-def456 1/1 Running

-Causa:*

  • error en contenedor

-Solución:*

Ventana de terminal
kubectl logs <pod>

ErrImagePull

-Solución:*

verificar nombre y acceso al repositorio.


Servicio no accesible.

-Solución:*

Ventana de terminal
kubectl describe svc

Pods no programados.

Pending

-Solución:*

verificar capacidad del nodo.


Errores de indentación.

-Solución:*

validar estructura cuidadosamente.


Separar entornos:

Ventana de terminal
kubectl create namespace prod

resources:
limits:
memory: "512Mi"
cpu: "1"

livenessProbe:
httpGet:
path: /
port: 80

Separar configuración:

Ventana de terminal
kubectl create configmap app-config

Evitar latest.


Actualizaciones sin downtime:

Ventana de terminal
kubectl rollout status deployment web-deploy

Controlar accesos al clúster.


Integrar con:

  • Prometheus
  • Grafana
  • ELK

Gestionar manifests en Git + CI/CD.


Has comprendido los fundamentos de Kubernetes, incluyendo su arquitectura, modelo declarativo y capacidad para orquestar contenedores a gran escala. Este conocimiento te permite evolucionar desde la ejecución de contenedores individuales hacia la gestión de plataformas completas.

Kubernetes representa el estándar actual en despliegues modernos, especialmente en entornos cloud y microservicios.

Con este capítulo, completas el bloque de virtualización:

  • KVM → virtualización tradicional
  • Docker → contenedores
  • Kubernetes → orquestación

El siguiente paso es profundizar en la observabilidad y operación de sistemas complejos:

➡️ 11-monitorización — rendimiento, métricas y troubleshooting avanzado en Linux.