Kubernetes: Introducción y Conceptos Básicos

Publicado el 26 de Enero, 2025 | Por TechGuías

Kubernetes, también conocido como K8s, es una plataforma open-source para automatizar el despliegue, escalado y gestión de aplicaciones en contenedores. Originalmente desarrollado por Google, se ha convertido en el estándar de facto para orquestación de contenedores.

¿Qué es Kubernetes?

Kubernetes es un sistema de orquestación de contenedores que automatiza muchas tareas manuales involucradas en el despliegue, gestión y escalado de aplicaciones en contenedores. Proporciona un marco para ejecutar sistemas distribuidos de manera resiliente.

Conceptos Fundamentales

Pods

La unidad más pequeña y básica en Kubernetes. Un pod puede contener uno o más contenedores que comparten almacenamiento y red.

Services

Un servicio expone una aplicación ejecutándose en un conjunto de pods como un servicio de red. Proporciona un punto de acceso estable.

Deployments

Un deployment gestiona un conjunto de pods replicados. Permite actualizaciones sin tiempo de inactividad.

Arquitectura de Kubernetes

Control Plane (Plano de Control)

Gestiona el clúster. Incluye componentes como API Server, etcd, Scheduler y Controller Manager.

Nodes (Nodos)

Máquinas worker que ejecutan las aplicaciones. Cada nodo contiene kubelet, kube-proxy y un runtime de contenedores.

Comandos Básicos

# Ver pods
kubectl get pods

# Crear un deployment
kubectl create deployment mi-app --image=nginx

# Escalar un deployment
kubectl scale deployment mi-app --replicas=3

# Ver servicios
kubectl get services

# Aplicar un archivo YAML
kubectl apply -f deployment.yaml

Ejemplo de Deployment

apiVersion: apps/v1
kind: Deployment
metadata:
  name: mi-app
spec:
  replicas: 3
  selector:
    matchLabels:
      app: mi-app
  template:
    metadata:
      labels:
        app: mi-app
    spec:
      containers:
      - name: mi-app
        image: nginx:latest
        ports:
        - containerPort: 80

Ventajas de Kubernetes

  • Escalado automático de aplicaciones
  • Auto-recuperación de contenedores fallidos
  • Rolling updates sin downtime
  • Gestión eficiente de recursos
  • Portabilidad entre diferentes proveedores cloud

Conclusión

Kubernetes puede parecer complejo al principio, pero sus beneficios para aplicaciones en producción son enormes. Comienza con conceptos básicos, experimenta localmente con minikube o kind, y gradualmente avanza hacia despliegues más complejos.