Principio de la arquitectura de Kubernetes

Kubernetes Cluster (clúster) se compone de [Master] y [Node], y varios servicios de Kubernetes se ejecutan en el nodo.

[Diagrama esquemático de la arquitectura de K8s] :

 

Análisis del principio arquitectónico:

1. [Nodo principal]

Master es el cerebro de Kubernetes Cluster. Los servicios de Daemon en ejecución incluyen kube-apiserver, kube-Scheduler, kube-controller-manager, etcd y Pod network (por ejemplo: flannel);

1.1 【Servidor API (be-apiserver)】

El servidor API proporciona una API RESTful HTTP / HTTPS, a saber, Kubernetes AРI. API Server es la interfaz de front-end de Kubernetes Cluster. Varias herramientas de cliente (CLI o UI) y otros componentes de Kubermetes pueden administrar varios recursos del Cluster a través de él.

1.2 【Programador (kube-programador)】

El Programador es responsable de decidir en qué nodo ejecutar el Pod. El Programador considerará completamente la topología del Clúster, la carga actual de cada nodo y los requisitos de la aplicación para alta disponibilidad, rendimiento y afinidad de datos al programar.

1.3 【Administrador de controladores (kube- controlador- administrador)】

El administrador del controlador es responsable de administrar varios recursos del clúster y garantizar que los recursos estén en el estado esperado. ContollerManager se compone de varios controladores, incluido el controlador de replicación, el controlador de puntos finales, el controlador de espacio de nombres, el controlador de cuentas de servicio, etc.

Diferentes controladores gestionan diferentes recursos. Por ejemplo, el controlador de replicación administra el ciclo de vida de Deployment, StatefulSet y DaemonSet, y el controlador del espacio de nombres administra los recursos del espacio de nombres.

1.4 【etcd】

etcd es responsable de guardar la información de configuración de Kubernetes Cluster y la información de estado de varios recursos. Cuando los datos cambian, etcd notificará rápidamente a los componentes relacionados con Kubernetes.

1.5 [Red de pod]

Pod es la unidad más pequeña de programación de Kubernetes. Un pod puede contener uno o más contenedores, por lo que se puede considerar como el host lógico del contenedor interno. El concepto de diseño de Pod es admitir varios contenedores para compartir la red y el sistema de archivos en un Pod. Por lo tanto, varios contenedores en un pod comparten los siguientes recursos:

  • Espacio de nombres PID: diferentes aplicaciones en el Pod pueden ver los ID de proceso de otras aplicaciones.
  • Espacio de nombres de red: varios contenedores en el Pod están en el mismo espacio de nombres de red, por lo que los rangos de IP y puertos a los que se puede acceder son los mismos. También pueden acceder entre sí a través de localhost.
  • Espacio de nombres de IPC: varios contenedores en el Pod comparten el espacio de nombres de comunicación de proceso interno, por lo que la comunicación entre procesos se puede realizar a través de SystemV IPC o POSIX.
  • Espacio de nombres UTS: varios contenedores en un Pod comparten el mismo nombre de host.
  • Volúmenes: cada contenedor del Pod puede compartir el volumen de almacenamiento (Volumen) definido en el Pod.

Para que los pods puedan comunicarse entre sí, Kubernetes Cluster debe implementar una red de pod, y la franela es una de las opciones.

Los anteriores son los componentes que se ejecutan en [K8s-Master], analicemos [K8s-Node] a continuación.

 

2. [Nodo Nodo]

El nodo es donde se ejecuta el pod. Kubernetes admite tiempos de ejecución de contenedores como Docker y rkt. Los componentes de Kubernetes que se ejecutan en Node son kubelet, kube-proxy y Pod network (por ejemplo: flannel).

2.1 【kubelet】

El kubelet es el agente del maestro en el nodo. Cuando el planificador determina ejecutar un pod en un nodo, enviará la información de configuración específica (generador de imágenes, volumen, etc.) del pod al kubelet del nodo, y luego, el kubelet creará y ejecutará el contenedor en función de esta información e informará el estado de ejecución al maestro.

2.2 【kube-proxy】

El servicio representa lógicamente varios Pods en el back-end, y el mundo exterior accede al Pod a través del servicio. ¿Cómo se reenvía la solicitud al servicio al Pod? Este es el trabajo que debe completar kube-proxy. Implementa el proxy de red del Pod en el nodo Node, mantiene las reglas de red y el balanceo de carga de cuatro capas.

Cada nodo ejecutará el servicio kube-proxy, que es responsable de reenviar el flujo de datos TCP / UPD que accede al servicio al contenedor back-end. Si hay varias copias, kube-proxy logrará el equilibrio de carga.

2.3 [Red de pod]

Para que los pods puedan comunicarse entre sí, Kubernetes Cluster debe implementar una red de pod, y la franela es una de las opciones.

2.4 【Motor de contenedor】

Motor de contenedor Docker o Rocket, contenedor en funcionamiento (contenedor).

Los anteriores son los componentes que se ejecutan en [K8s-Node].

 

3. [Introducción a la arquitectura Etcd]

En el diagrama de arquitectura de etcd, podemos ver que etcd se divide principalmente en cuatro partes:

  • Servidor HTTP: se utiliza para procesar solicitudes de API enviadas por usuarios y solicitudes de información de sincronización y latidos de otros nodos etcd;
  • Tienda: se utiliza para procesar varias funciones compatibles con etcd, incluida la indexación de datos, los cambios de estado de los nodos, la supervisión y la retroalimentación, el procesamiento y la ejecución de eventos, etc. Es la implementación específica de la mayoría de las funciones de la API proporcionada por los usuarios por etcd;
  • Raft: La implementación específica del algoritmo de coherencia fuerte de Raft es el núcleo de etcd;
  • WAL: Write Ahead Log (registro de escritura anticipada), es el método de almacenamiento de datos de etcd. Además de almacenar el estado de todos los datos y el índice del nodo en la memoria, etcd usa WAL para el almacenamiento persistente. En WAL, todos los datos se registrarán por adelantado antes de enviarlos. Instantánea es una instantánea de estado que se toma para evitar un exceso de datos; la entrada representa el contenido de registro específico almacenado;

Por lo general, la solicitud de un usuario se envía y se reenvía a la [Tienda] a través del [Servidor HTTP] para el procesamiento de transacciones específicas. Si se trata de una modificación de nodo, se entregará al módulo [Raft] para cambios de estado y A continuación, sincronice con otros [etcd nodos] para confirmar el envío de datos y, finalmente, envíe los datos y vuelva a sincronizar.

Nota: Se recomienda utilizar la versión Etcd v3.0 en el clúster k8s, la versión v2 ha quedado obsoleta en k8s v1.11.

 

4. [k8s otros componentes]

 

[Resumen simple]

  • Componentes oficiales del K8s:
  1. Servidor API: una entrada unificada para todos los accesos de servicios (gran presión);
  2. ControllerManage: mantenga el número esperado de copias de Pod;
  3. Programador: programador, responsable de recibir tareas, seleccionar los nodos de nodo apropiados para la asignación de tareas;
  4. ETCD: sistema de almacenamiento KV distribuido estructurado C / S (base de datos de pares clave-valor), que almacena toda la información importante en el clúster k8s (los datos se conservan y el clúster k8s se puede restaurar restaurando los datos);
  5. Kubelet: interactuar directamente con el motor del contenedor para realizar la gestión del ciclo de vida del contenedor;
  6. Kube-proxy: responsable de escribir reglas en IPTABLES e IPVS para implementar el acceso al mapeo de servicios;
  • k8s otros componentes:
  1. CoreDNS: puede crear una resolución de correspondencia IP de nombre de dominio para el SVC en el clúster;
  2. Panel de control: proporciona un sistema de acceso a la estructura B / S para el grupo k8s;
  3. Controlador de entrada: k8s solo puede implementar un proxy de cuatro capas de forma predeterminada, e INGRESS puede implementar un proxy de siete capas;
  4. Federación: proporciona una función de gestión unificada que puede utilizar varios k8 en los centros de clústeres;
  5. Prometheus: proporciona capacidades de monitoreo de clúster k8s;
  6. ELK: proporciona una plataforma unificada de análisis e intervención para los registros del clúster k8s;

[Referencia de ETCD]

Supongo que te gusta

Origin blog.csdn.net/ChaITSimpleLove/article/details/106173853
Recomendado
Clasificación