Guía Detallada de la Terminología de Kubernetes

Artículos Guías Manuales Sistemas Linux Windows Binario 0

Kubernetes, también conocido como K8s, es una plataforma de orquestación de contenedores de código abierto que automatiza la implementación, escalado y operaciones de aplicaciones en contenedores. Desarrollado por Google y ahora mantenido por la Cloud Native Computing Foundation (CNCF), Kubernetes ha transformado la manera en que las aplicaciones modernas son desarrolladas, desplegadas y gestionadas. Para comprender cómo funciona Kubernetes y aprovechar al máximo sus capacidades, es esencial familiarizarse con su terminología clave.

Nodo (Node)

Un nodo es una máquina individual, física o virtual, que forma parte de un clúster de Kubernetes. Existen dos tipos principales de nodos:

  1. Nodo Maestro (Master Node): Gestiona el clúster, coordinando todas las actividades, incluida la programación de aplicaciones, la gestión de estado y la respuesta a eventos.
  2. Nodo de Trabajo (Worker Node): Ejecuta las aplicaciones en contenedores y es gestionado por el nodo maestro.

Clúster (Cluster)

Un clúster es un conjunto de nodos que trabajan juntos como una unidad cohesiva. En Kubernetes, un clúster consta de al menos un nodo maestro y varios nodos de trabajo.

Pod

Un pod es la unidad de despliegue más pequeña y básica de Kubernetes. Un pod puede contener uno o más contenedores que comparten el mismo espacio de red y almacenamiento. Los contenedores en un pod son ejecutados juntos en el mismo nodo y pueden comunicarse entre sí de manera eficiente.

Contenedor (Container)

Un contenedor es una unidad estándar de software que empaqueta el código de una aplicación y todas sus dependencias para que la aplicación se ejecute de manera rápida y confiable de un entorno informático a otro. Los contenedores son ligeros y se ejecutan en aislamiento del sistema operativo subyacente. En Kubernetes, los contenedores se gestionan dentro de los pods.

Controlador (Controller)

Los controladores son procesos que vigilan el estado del clúster y realizan ajustes para asegurarse de que el estado actual se acerque al estado deseado especificado en las definiciones del clúster. Los principales controladores incluyen:

  1. ReplicaSet: Asegura que un número específico de réplicas de un pod esté corriendo en cualquier momento.
  2. Deployment: Proporciona actualizaciones declarativas de aplicaciones y garantiza que el número correcto de pods esté ejecutándose.
  3. StatefulSet: Gestiona aplicaciones con necesidades específicas de identidad y almacenamiento persistente.
  4. DaemonSet: Asegura que un pod específico se ejecute en todos los nodos (o en un subconjunto definido de nodos).

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. Kubernetes proporciona varios tipos de servicios:

  1. ClusterIP: Expone el servicio en una IP interna del clúster, accesible solo dentro del clúster.
  2. NodePort: Expone el servicio en el mismo puerto en cada nodo, accesible desde fuera del clúster.
  3. LoadBalancer: Usa un balanceador de carga externo para distribuir el tráfico.
  4. ExternalName: Mapea un servicio a un nombre DNS externo.

Ingress

Ingress es un objeto que gestiona el acceso externo a los servicios en un clúster, típicamente HTTP y HTTPS. Ingress puede proporcionar balanceo de carga, terminación SSL y alojamiento virtual basado en nombre.

ConfigMap y Secret

  • ConfigMap: Almacena pares clave-valor que los pods pueden usar para configurar sus aplicaciones sin necesidad de reempaquetar la imagen del contenedor.
  • Secret: Similar a ConfigMap, pero diseñado específicamente para almacenar información sensible como contraseñas, tokens y claves SSH.

Volumen (Volume)

Un volumen en Kubernetes es un directorio accesible para los contenedores en un pod. Los volúmenes resuelven el problema de la persistencia de datos, ya que los contenedores por sí solos son efímeros. Existen varios tipos de volúmenes, incluidos:

  1. emptyDir: Un volumen temporal que se crea cuando se asigna un pod y se elimina cuando el pod es eliminado.
  2. hostPath: Monta un archivo o directorio desde el sistema de archivos del nodo.
  3. persistentVolume (PV) y persistentVolumeClaim (PVC): PV es un recurso de almacenamiento en el clúster, y PVC es una solicitud de almacenamiento de un pod.

Job

Un Job en Kubernetes es un recurso que asegura que uno o más pods terminen con éxito su tarea. A diferencia de otros controladores que aseguran que un número específico de pods esté siempre corriendo, un Job asegura que una tarea se ejecute hasta completarse. Esto es útil para tareas que deben ejecutarse una sola vez o a intervalos específicos, como procesamiento de datos por lotes, tareas de mantenimiento y operaciones de migración de bases de datos.

  • CronJob: Una extensión del Job que se ejecuta en un horario específico, similar a una tarea programada en cron de UNIX.

Namespace

Un namespace es un mecanismo de aislamiento dentro de un clúster de Kubernetes. Permite segmentar recursos para diferentes usuarios, equipos o aplicaciones dentro del mismo clúster, proporcionando un espacio de nombres lógico para organizar y gestionar los recursos.

API Server

El API Server es el componente que expone la API de Kubernetes. Actúa como el punto central de interacción para todos los componentes del clúster, manejando las solicitudes REST y actualizando el estado del clúster en etcd.

etcd

etcd es una tienda de claves-valor distribuida que Kubernetes usa para almacenar todos los datos de estado del clúster. Es el respaldo de datos central de Kubernetes y garantiza que el estado del clúster se mantenga consistente y altamente disponible.

Kubectl

Kubectl es la herramienta de línea de comandos para interactuar con el clúster de Kubernetes. Permite a los usuarios ejecutar comandos para desplegar aplicaciones, inspeccionar y gestionar recursos del clúster y ver logs, entre otras tareas.

Scheduler

El Scheduler es el componente que asigna pods a nodos de trabajo específicos en función de varios factores, como la disponibilidad de recursos y las políticas de afinidad y tolerancia.

Conclusión

Kubernetes es una plataforma poderosa y flexible para gestionar aplicaciones en contenedores a escala. Comprender la terminología y los conceptos clave es esencial para aprovechar todo su potencial. Desde la creación de pods y servicios hasta la gestión de volúmenes y configuraciones, Kubernetes proporciona las herramientas necesarias para el despliegue, escalado y operación eficientes de aplicaciones modernas.