Kubernetes (Software)

Kubernetes
Información sobre la plantilla
Parte de la familia Internet
Kubernetes.jpg
Plataforma de orquestación de contenedores
DesarrolladorGoogle
Fecha de Creación2014

Kubernetes.Conocido también como k8s, es una plataforma de orquestación de código abierto para automatizar el despliegue y autoescalado de aplicaciones y servicios en contenedores[1]. Fue originalmente desarrollado por Google en 2014 y luego donado a la Cloud Native Computing Foundation (CNCF)

Estructura de un clúster de Kubernetes

Un clúster de Kubernetes consiste principalmente en un conjunto de máquinas workers, compuestas por Nodos y Pods, y el Control Plane, que se encarga de la administración de los nodos del clúster

Nodos y Pods

Cada clúster tiene como mínimo un Nodo, y Cada nodo contiene los servicios necesarios para echar a andar los Pods. Un Pod incluye uno o más contenedores, tiene su propia dirección IP dentro del clúster y se les puede conectar recursos adicionales, el caso más común son volúmenes de almacenamiento y las rutas hacia otros directorios o archivos del sistema de archivos anfitrión para asegurar persistencia de datos tras la muerte del contenedor

kubelet

Es un agente del Control Plane que asegura la ejecución de uno (o más) Pod(s) dentro de un Nodo. Permite que el Control Plane pueda monitorear el nodo y enviar instrucciones al Container Runtime

kube-proxy

Habilita la red en el Nodo con reglas que permiten la comunicación entre los Pods y otras entidades fuera del clúster

Container Runtime

Es un componente fundamental que se encarga de echar a andar los contenedores, es el encargado directo de la ejecución y ciclo de vida de los contenedores. Kubernetes soporta runtimes tales como containerd, CRI-O y cualquier otra implementación de la Interfaz de Container Runtime de Kubernetes (Kubernetes CRI)

El Control Plane

Los componentes del Control Plane son los que administran los Nodos del clúster y reaccionan a determinados eventos que ocurran en el clúster

kube-apiserver

Permite que la API de Kubernetes pueda ser usada por aplicaciones internas y externas a través de librerías en lenguajes de programación tales como Swift, Python, Java y Go

etcd

Es una base de datos de claves y valores de alta disponibilidad que sirve como respaldo de todo el estado actual del clúster. Al trabajar con etcd es recomendable hacer planes de respaldo de datos

kube-scheduler

Se encarga de vigilar los Pods recién creados que todavía no tengan un Nodo asignado para eventualmente asignarles un Nodo

kube-controller-manager

Es el componente del Control Plane encargado de echar a andar procesos controladores. Un proceso controlador es un programa en segundo plano de carácter reconciliatorio que se encarga de vigilar el estado compartido del clúster a través del API Server con el objetivo de pasar de un estado actual a un estado deseado. Como es lógico, cada controlador es un proceso aparte, pero están compilados en un único ejecutable corriendo un único proceso desde el punto de vista del sistema operativo

cloud-controller-manager

Este componente es opcional y puede variar según el proveedor de cloud donde se tenga el clúster, ya que se encarga de conectar el clúster a la API de un proveedor de servicios de nube para de esa forma obtener recursos que forman parte de ese proveedor y usar la lógica de controller manager específica de ese proveedor. Por ejemplo, el cloud-controller-manager de AWS (Amazon Web Services) interactúa y está disponible únicamente dentro del ecosistema de AWS, el de GCP (Google Cloud Platform), dentro de GCP y así sucesivamente

Configuración de un clúster de Kubernetes

En Kubernetes, la configuración se hace a través de archivos YAML (Yet Another Markup Language), los cuales contienen toda la lógica (o fragmentos de la misma) de todo un clúster, sus nodos, y sus recursos en un formato declarativo y legible tanto por humanos como por máquinas

Interfaces y clientes

Un clúster de Kubernetes se administra principalmente a través de kubectl, el cliente de línea de comandos oficial de Kubernetes, dicha herramienta puede usarse desde cualquier equipo que tenga la posibilidad de conectarse a la máquina principal que lleva el clúster

A lo largo de los años han aparecido varias interfaces gráficas, especialmente web, pero de todas las que han surgido estas son algunas de las más relevantes:

  • Kubernetes Dashboard
  • Ranger
  • Lens
  • Docker Desktop

Referencias

Véase también

Fuentes