Introducción

Kubernetes es una plataforma de código abierto diseñada para automatizar el despliegue, escalado y operación de aplicaciones en contenedores. Originalmente desarrollado por Google, Kubernetes ha sido donado a la Cloud Native Computing Foundation (CNCF) y se ha convertido en el estándar de facto para la orquestación de contenedores.

Objetivos de Aprendizaje

Al final de esta sección, deberías ser capaz de:

  • Entender qué es Kubernetes y por qué es importante.
  • Conocer los beneficios de usar Kubernetes.
  • Identificar los componentes básicos de Kubernetes.

¿Qué es Kubernetes?

Kubernetes, a menudo abreviado como K8s, es una plataforma de orquestación de contenedores que permite gestionar aplicaciones en contenedores a gran escala. Kubernetes proporciona una infraestructura para desplegar, mantener y escalar aplicaciones de manera eficiente.

Beneficios de Kubernetes

  1. Automatización del Despliegue y Gestión:

    • Kubernetes automatiza el despliegue de aplicaciones, lo que reduce el tiempo y el esfuerzo necesarios para poner en marcha nuevas versiones de software.
  2. Escalabilidad:

    • Permite escalar aplicaciones de manera horizontal (añadiendo más instancias de una aplicación) y vertical (aumentando los recursos de una instancia).
  3. Alta Disponibilidad:

    • Kubernetes asegura que las aplicaciones estén siempre disponibles, gestionando automáticamente la recuperación de fallos y la distribución de cargas.
  4. Portabilidad:

    • Al ser una plataforma de código abierto, Kubernetes puede ejecutarse en cualquier entorno, ya sea en la nube, en servidores locales o en un entorno híbrido.
  5. Gestión de Configuración y Secretos:

    • Kubernetes facilita la gestión de configuraciones y secretos de manera segura y eficiente.

Componentes Básicos de Kubernetes

  1. Nodo (Node):

    • Un nodo es una máquina (física o virtual) que ejecuta aplicaciones en contenedores. Cada nodo contiene los servicios necesarios para ejecutar pods y está gestionado por el plano de control de Kubernetes.
  2. Pod:

    • Un pod es la unidad más pequeña y simple en el modelo de objetos de Kubernetes. Un pod representa una instancia en ejecución de una aplicación en contenedores.
  3. Clúster (Cluster):

    • Un clúster es un conjunto de nodos gestionados por Kubernetes. El clúster es el entorno en el que se despliegan y gestionan las aplicaciones.
  4. Plano de Control (Control Plane):

    • El plano de control es responsable de gestionar el estado del clúster. Incluye componentes como el servidor API de Kubernetes, el controlador de administrador y el programador.
  5. Servicio (Service):

    • Un servicio en Kubernetes es una abstracción que define un conjunto lógico de pods y una política para acceder a ellos. Los servicios permiten la comunicación entre diferentes componentes de una aplicación.

Ejemplo Práctico

A continuación, se muestra un ejemplo básico de un archivo de configuración de Kubernetes para desplegar una aplicación simple en un pod.

apiVersion: v1
kind: Pod
metadata:
  name: my-app
spec:
  containers:
  - name: my-app-container
    image: nginx:1.14.2
    ports:
    - containerPort: 80

Explicación del Código

  • apiVersion: v1: Especifica la versión de la API de Kubernetes que se está utilizando.
  • kind: Pod: Define el tipo de objeto que se está creando, en este caso, un pod.
  • metadata: Proporciona metadatos sobre el pod, como su nombre (name: my-app).
  • spec: Define las especificaciones del pod.
    • containers: Lista de contenedores que se ejecutarán en el pod.
      • name: Nombre del contenedor.
      • image: Imagen del contenedor que se utilizará.
      • ports: Lista de puertos que se expondrán desde el contenedor.

Ejercicio Práctico

Ejercicio 1: Crear un Pod Simple

  1. Crea un archivo YAML llamado simple-pod.yaml.
  2. Define un pod que ejecute una imagen de nginx con el puerto 80 expuesto.
  3. Aplica el archivo de configuración usando kubectl.

Solución:

Archivo simple-pod.yaml:

apiVersion: v1
kind: Pod
metadata:
  name: simple-nginx
spec:
  containers:
  - name: nginx
    image: nginx:latest
    ports:
    - containerPort: 80

Comando para aplicar el archivo:

kubectl apply -f simple-pod.yaml

Resumen

En esta sección, hemos aprendido qué es Kubernetes, sus beneficios y los componentes básicos que lo conforman. También hemos visto un ejemplo práctico de cómo definir y desplegar un pod simple utilizando un archivo de configuración YAML. Con esta base, estamos listos para profundizar en la arquitectura de Kubernetes en la siguiente sección.

Curso de Kubernetes

Módulo 1: Introducción a Kubernetes

Módulo 2: Componentes Principales de Kubernetes

Módulo 3: Gestión de Configuración y Secretos

Módulo 4: Redes en Kubernetes

Módulo 5: Almacenamiento en Kubernetes

Módulo 6: Conceptos Avanzados de Kubernetes

Módulo 7: Monitoreo y Registro

Módulo 8: Seguridad en Kubernetes

Módulo 9: Escalado y Rendimiento

Módulo 10: Ecosistema y Herramientas de Kubernetes

Módulo 11: Estudios de Caso y Aplicaciones del Mundo Real

Módulo 12: Preparación para la Certificación de Kubernetes

© Copyright 2024. Todos los derechos reservados