Kubernetes


¿Qué es Kubernetes?

Kubernetes (K8s) es una plataforma de código abierto para la orquestación de contenedores que automatiza el despliegue, escalado y gestión de aplicaciones containerizadas. Desarrollado originalmente por Google, Kubernetes permite ejecutar y coordinar aplicaciones distribuidas a gran escala, proporcionando herramientas para el manejo automático de fallos, balanceadores de carga y actualizaciones sin tiempo de inactividad.

¿Para qué sirve Kubernetes?

Kubernetes es fundamental para la gestión moderna de aplicaciones en contenedores. Te permite:

  • Automatizar el despliegue y escalado de aplicaciones containerizadas.
  • Gestionar múltiples contenedores como una unidad cohesiva.
  • Proporcionar alta disponibilidad y recuperación automática ante fallos.
  • Balancear la carga de trabajo entre diferentes nodos del cluster.
  • Realizar actualizaciones rolling sin interrumpir el servicio.
  • Gestionar secretos, configuraciones y almacenamiento persistente.

¿Cómo funciona?

Imagina Kubernetes como un director de orquesta para aplicaciones en contenedores. Como un director coordina a los músicos para crear una sinfonía, Kubernetes coordina todos los contenedores en tu cluster para que trabajen juntos armoniosamente. Si un “músico” (contenedor) falla, el director inmediatamente encuentra un reemplazo y la “música” (aplicación) continúa sin interrupciones.

Ejemplo: Despliegue básico en Kubernetes

Aquí tienes un ejemplo de cómo desplegar una aplicación simple en Kubernetes:

# deployment.yaml - Definición del despliegue
apiVersion: apps/v1
kind: Deployment
metadata:
  name: mi-aplicacion-web
  labels:
    app: mi-aplicacion
spec:
  replicas: 3  # Número de instancias a ejecutar
  selector:
    matchLabels:
      app: mi-aplicacion
  template:
    metadata:
      labels:
        app: mi-aplicacion
    spec:
      containers:
      - name: web-container
        image: nginx:1.21
        ports:
        - containerPort: 80
        resources:
          requests:
            cpu: 100m
            memory: 128Mi
          limits:
            cpu: 200m
            memory: 256Mi
        livenessProbe:
          httpGet:
            path: /
            port: 80
          initialDelaySeconds: 30
          periodSeconds: 10
        readinessProbe:
          httpGet:
            path: /
            port: 80
          initialDelaySeconds: 5
          periodSeconds: 5
---
# service.yaml - Servicio para exponer la aplicación
apiVersion: v1
kind: Service
metadata:
  name: mi-aplicacion-service
spec:
  selector:
    app: mi-aplicacion
  ports:
  - protocol: TCP
    port: 80
    targetPort: 80
  type: LoadBalancer
---
# configmap.yaml - Configuración de la aplicación
apiVersion: v1
kind: ConfigMap
metadata:
  name: mi-aplicacion-config
data:
  database_url: "postgresql://db.ejemplo.com:5432/miapp"
  api_key: "mi-clave-api-publica"
  debug_mode: "false"

Conceptos clave de Kubernetes

  • Contenedor: Unidad estándar de software que empaqueta el código y todas sus dependencias para que una aplicación se ejecute rápidamente y de forma confiable en diferentes entornos informáticos.
  • Pod: La unidad más pequeña que puedes desplegar y gestionar en Kubernetes, que puede contener uno o varios contenedores.
  • Servicio: Una abstracción que define una política de acceso para exponer una aplicación ejecutándose en un conjunto de Pods como un servicio de red.
  • ConfigMap: Un objeto que permite almacenar datos de configuración en pares clave-valor, que pueden ser utilizados por los Pods en tiempo de ejecución.
  • Secret: Similar a un ConfigMap, pero diseñado para almacenar información sensible, como contraseñas, tokens o claves SSH, de forma segura.

¿Dónde encuentras Kubernetes?

  • En la nube, como parte de los servicios de infraestructura como servicio (IaaS) que permiten gestionar clústeres de contenedores.
  • En entornos locales, utilizando herramientas como Minikube o kubeadm para crear clústeres de Kubernetes en máquinas físicas o virtuales.
  • Integrado en plataformas de desarrollo y despliegue continuo (CI/CD) para automatizar la entrega de aplicaciones en contenedores.

Conclusión

Kubernetes es una tecnología clave en el mundo de los contenedores y DevOps, que permite gestionar de manera eficiente y escalable aplicaciones distribuidas en contenedores. Su capacidad para automatizar tareas complejas de gestión de aplicaciones lo convierte en una herramienta esencial para el desarrollo y operación de software en la actualidad.


Usamos cookies para mejorar tu experiencia. ¿Aceptas las cookies de análisis?