Kubernetes (Software)
|
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)
Sumario
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
- Sitio oficial de Rancher*
- Sitio Oficial de Lens*
- Kubernetes (Oficial) en Github*
- Repositorio de Github de Kubernetes Dashboard*