Kubernetes - Arquitectura

En este capítulo, analizaremos la arquitectura básica de Kubernetes.

Kubernetes: arquitectura de clúster

Como se ve en el siguiente diagrama, Kubernetes sigue la arquitectura cliente-servidor. Donde, tenemos master instalado en una máquina y el nodo en máquinas Linux separadas.

Los componentes clave de maestro y nodo se definen en la siguiente sección.

Kubernetes: componentes de la máquina maestra

Los siguientes son los componentes de Kubernetes Master Machine.

etcd

Almacena la información de configuración que puede utilizar cada uno de los nodos del clúster. Es un almacén de valor clave de alta disponibilidad que se puede distribuir entre varios nodos. Solo puede acceder a él el servidor de la API de Kubernetes, ya que puede tener información confidencial. Es una tienda de valor clave distribuida que es accesible para todos.

Servidor API

Kubernetes es un servidor de API que proporciona todas las operaciones en el clúster utilizando la API. El servidor API implementa una interfaz, lo que significa que diferentes herramientas y bibliotecas pueden comunicarse fácilmente con él.Kubeconfiges un paquete junto con las herramientas del lado del servidor que se pueden utilizar para la comunicación. Expone la API de Kubernetes.

Administrador del controlador

Este componente es responsable de la mayoría de los recolectores que regula el estado del clúster y realiza una tarea. En general, se puede considerar como un demonio que se ejecuta en un bucle no terminal y es responsable de recopilar y enviar información al servidor API. Trabaja para obtener el estado compartido del clúster y luego realizar cambios para llevar el estado actual del servidor al estado deseado. Los controladores clave son controlador de replicación, controlador de punto final, controlador de espacio de nombres y controlador de cuenta de servicio. El administrador del controlador ejecuta diferentes tipos de controladores para manejar nodos, puntos finales, etc.

Programador

Este es uno de los componentes clave del maestro de Kubernetes. Es un servicio en master encargado de distribuir la carga de trabajo. Es responsable de rastrear la utilización de la carga de trabajo en los nodos del clúster y luego colocar la carga de trabajo en qué recursos están disponibles y aceptar la carga de trabajo. En otras palabras, este es el mecanismo responsable de asignar pods a los nodos disponibles. El programador es responsable de la utilización de la carga de trabajo y de la asignación del pod al nuevo nodo.

Kubernetes: componentes de nodo

A continuación, se muestran los componentes clave del servidor de nodo que son necesarios para comunicarse con el maestro de Kubernetes.

Estibador

El primer requisito de cada nodo es Docker, que ayuda a ejecutar los contenedores de aplicaciones encapsulados en un entorno operativo relativamente aislado pero ligero.

Servicio Kubelet

Este es un pequeño servicio en cada nodo responsable de transmitir información hacia y desde el servicio del plano de control. Interactúa conetcdstore para leer los detalles de configuración y los valores de escritura. Este se comunica con el componente maestro para recibir comandos y trabajar. loskubeletEl proceso entonces asume la responsabilidad de mantener el estado de trabajo y el servidor de nodo. Gestiona reglas de red, reenvío de puertos, etc.

Servicio de proxy de Kubernetes

Este es un servicio proxy que se ejecuta en cada nodo y ayuda a que los servicios estén disponibles para el host externo. Ayuda a reenviar la solicitud a los contenedores correctos y es capaz de realizar un equilibrio de carga primitivo. Se asegura de que el entorno de red sea predecible y accesible y, al mismo tiempo, también esté aislado. Gestiona pods en nodos, volúmenes, secretos, creando nuevos controles de salud de contenedores, etc.

Kubernetes: estructura maestra y de nodo

Las siguientes ilustraciones muestran la estructura de Kubernetes Master y Node.