Kubernetes --- Diagrama de arquitectura y teoría básica

Prefacio

  • Kubernetes es una herramienta para administrar clústeres de aplicaciones en contenedores.En el campo de la informática, este proceso generalmente se denomina orquestación;

  • Es apropiado utilizar la analogía de la coreografía orquestal con la coreografía de servicio anterior Al igual que el director de orquesta, Kubernetes combina de manera coordinada muchos microservicios para formar una aplicación. Kubernetes supervisará el clúster de forma automática y continua y ajustará su composición;

  • Comprender la arquitectura de Kubernetes es esencial para implementar y mantener aplicaciones en contenedores.

1. ¿Qué es Kubernetes?

  • Kubernetes, o k8s para abreviar, es un sistema de administración de clústeres de contenedores de código abierto de Google en 2014;

  • K8s es un sistema para automatizar la implementación de aplicaciones. Las aplicaciones modernas están dispersas entre la nube, las máquinas virtuales y los servidores, y la administración manual de aplicaciones ya no es una opción viable.

  • K8s convierte máquinas virtuales y máquinas físicas en aspectos de API unificados. Luego, los desarrolladores pueden usar la API de Kubernetes para implementar, extender y administrar aplicaciones en contenedores.

    • Su arquitectura también proporciona un marco flexible para sistemas distribuidos. K8s coordina automáticamente la expansión y la conmutación por error para su aplicación y proporciona un modo de implementación.

    • Ayuda a administrar los contenedores que ejecutan aplicaciones y garantizar que no haya tiempo de inactividad en el entorno de producción. Por ejemplo, si un contenedor falla, otro contenedor tomará su lugar automáticamente y el usuario final no se dará cuenta en absoluto.

  • Kubernetes no es solo un sistema de orquestación. Es un conjunto de procesos de control independientes e interrelacionados. Su función es trabajar continuamente en el estado actual y mover el proceso en la dirección deseada;

  • K8s proporciona una serie de funciones como la orquestación de contenedores, la programación de recursos, el escalado elástico, la gestión de la implementación y el descubrimiento de servicios;

  • El objetivo de Kubernetes es hacer que las aplicaciones en contenedores sean simples y eficientes. Los servicios, el soporte y las herramientas de Kubernetes están ampliamente disponibles.

En segundo lugar, el desarrollo de K8

  • Era de despliegue tradicional

    • En los primeros días, las organizaciones ejecutaban aplicaciones en servidores físicos. No se pueden definir límites de recursos para aplicaciones en servidores físicos, lo que puede causar problemas de asignación de recursos.
    • Desventajas: cuando se ejecutan varias aplicaciones en un servidor físico, una aplicación puede ocupar la mayoría de los recursos y, como resultado, el rendimiento de otras aplicaciones puede disminuir. Y el costo para las organizaciones de mantener muchos servidores físicos es alto
  • La era de la implementación virtualizada

    • Como solución, se introduce la virtualización, que le permite ejecutar varias máquinas virtuales (VM) en la CPU de un solo servidor físico. La función de virtualización permite aislar aplicaciones entre VM y proporciona un nivel de seguridad porque la información de una aplicación no puede ser accedida libremente por otra aplicación.
    • Debido a que la virtualización puede agregar o actualizar aplicaciones fácilmente, reducir los costos de hardware, etc., la virtualización puede hacer un mejor uso de los recursos en los servidores físicos y lograr una mejor escalabilidad;
  • La era del despliegue de contenedores

    • Los contenedores son similares a las máquinas virtuales, pero tienen propiedades de aislamiento ligeras y pueden compartir sistemas operativos (SO) entre aplicaciones. Por tanto, el contenedor se considera ligero.
    • Los contenedores son similares a las VM, con su propio sistema de archivos, CPU, memoria, espacio de proceso, etc. Debido a que están separados de la infraestructura, se pueden migrar a través de la nube y la distribución del sistema operativo;

3. Características de los K8

  • 1) Autorreparación

    • ① Reinicie el contenedor fallado cuando falla un nodo, reemplácelo y vuelva a implementarlo para garantizar la cantidad esperada de copias;
    • ② Elimine el contenedor que no supere la verificación de estado y no procesará las solicitudes de los clientes hasta que esté listo para garantizar que los servicios en línea no se interrumpan.
  • 2) Escalado elástico

    • Utilice comandos, interfaz de usuario o expanda y reduzca automáticamente las instancias de aplicaciones en función del uso de la CPU para garantizar una alta disponibilidad durante los picos de concurrencia del negocio de aplicaciones, recupere recursos cuando los picos de negocio sean bajos y ejecute servicios a un costo mínimo;
  • 3) Despliegue y reversión automáticos

    • K8s utiliza una estrategia de actualización continua para actualizar las aplicaciones, actualizando un pod a la vez en lugar de eliminar todos los pods al mismo tiempo; si hay un problema en el proceso de actualización, los cambios se revertirán para garantizar que la actualización no se vea afectada. por el negocio;
  • 4) Descubrimiento de servicios y equilibrio de carga

    • K8s proporciona una entrada de acceso unificado (dirección IP interna y un nombre DNS) para varios contenedores y equilibra la carga de todos los contenedores asociados, de modo que los usuarios no necesitan considerar los problemas de IP del contenedor;
  • 5) Gestión de la confidencialidad y la configuración

    • Administre la configuración de aplicaciones y datos confidenciales sin exponer datos confidenciales en el espejo, mejorando la seguridad de los datos confidenciales. Y algunas configuraciones de uso común se pueden almacenar en K8, lo que es conveniente para el uso de las aplicaciones;
  • 6) Orquestación de almacenamiento

    • Monte sistemas de almacenamiento externo, ya sea desde almacenamiento local, nubes públicas (como AWS) o almacenamiento de red (como NFS, GlusterFS, Ceph) como parte de los recursos del clúster, lo que mejora enormemente la flexibilidad del almacenamiento;
  • 7) Procesamiento por lotes

    • Proporcione tareas únicas y tareas cronometradas; cumpla con los escenarios de procesamiento y análisis de datos por lotes.

Cuatro, diagrama de arquitectura K8s y componentes centrales

4.1 Diagrama de la arquitectura del clúster de Kubernetes

Inserte la descripción de la imagen aquí

4.2 Explicación detallada de los componentes de Kubernetes

  • En el diagrama de arquitectura, podemos ver:
    • ① El nodo principal se compone principalmente de tres componentes, un servidor, un controlador-administrador y un programador, y un servicio de almacenamiento etcd para el almacenamiento del estado del clúster;
    • ② Y cada nodo incluye principalmente componentes como kubelet, kube-proxy y contenedor motor. Además, el servicio de clúster completo también depende de algunos componentes adicionales, como kubedns.

4.2.1 Componentes del nodo maestro

  • Componente maestro: proporciona el centro de control de gestión del clúster.

    • El componente maestro puede ejecutarse en cualquier nodo del clúster, pero por simplicidad, generalmente todos los componentes maestros se inician en una máquina virtual / máquina, y ningún contenedor de usuario se ejecutará en esta máquina virtual / máquina.
  • ① kube-apiServer (componente principal)

    • La API de Kubernetes, el puerto unificado del clúster y el coordinador de cada componente, brindan servicios de interfaz con API RESTful. Todas las operaciones de adición, eliminación, modificación y monitoreo de recursos de objetos se llaman a APIServer para su procesamiento y luego se envían a Etcd para almacenamiento.
  • ② kube-controller-manager

    • Para manejar tareas regulares en segundo plano en el clúster, un recurso corresponde a un controlador, y ControllerManaager es responsable de administrar estos controladores
    • El controlador incluye (partes):
1. 节点控制器:负责在节点出现故障时进行通知和响应;

2. 复制控制器:负责为系统中的每个复制控制器对象维护正确数量的Pod;

3. 端点控制器:填充“端点”对象(即,加入“服务和窗格”);

4. 服务帐户和令牌控制器:为新的名称空间创建默认帐户和API访问令牌。
  • ③ programador de kube

    • De acuerdo con el algoritmo de programación, seleccione un nodo de nodo para el Pod recién creado, que se puede implementar de forma arbitraria; se puede implementar en el mismo nodo o en un nodo diferente.
    • Los algoritmos de programación incluyen: algoritmo de preselección, nodos de filtrado; algoritmo preferido, nodos de puntuación
  • ④ Etcd

    • Sistema de almacenamiento de clave-valor distribuido, utilizado para almacenar datos de estado del clúster, como Pod, Servicio y otra información de objetos;
    • Etcd tiene un sistema de descubrimiento de servicios, que no está disponible en los bloqueos de bases de datos mysql y Oracle. También tiene las siguientes características:
1. 简单:安装配置简单,而且提供了HTTP API进行交互,使用也很简单

2. 安全:支持SSL证书验证

3. 快速:根据官方提供的benchmark数据,单实例支持每秒2K+读操作

4. 可靠:采用raft算法,实现分布式系统数据的可用性和一致性

4.2.2 Componentes del nodo de nodo

  • Los componentes de nodo se ejecutan en Node, proporcionan un entorno de ejecución de Kubernetes y mantienen Pod.

  • ① kublet

    • El kubelet es el Agente del Maestro en el nodo Nodo, que administra el ciclo de vida del contenedor en ejecución local. Por ejemplo, cree contenedores, volúmenes de datos de montaje de pod, descargue secretos, obtenga el estado del contenedor y del nodo, etc. kubelet convierte cada pod en un conjunto de contenedores
  • ② kube-proxy

    • Implemente el proxy de red del Pod en el nodo Node, mantenga las reglas de la red y el trabajo de equilibrio de carga de cuatro capas.
  • ③ acoplador o cohete

    • Motor de contenedor, enciende el contenedor

4.2.3 Complementos

1. kube-dns:负责为整个集群提供DNS服务;

2. Ingress Controller:为服务提供外网入口;

3. Heapster:提供资源监控;

4. Dashboard:提供GUI;

5. Federation:提供跨可用区的集群;

6. Fluentd-elasticsearch:提供集群日志采集、存储与查询

Cinco, arquitectura de nodo único de K8

5.1 Gráfico simple de un solo nodo

Inserte la descripción de la imagen aquí

5.2 Proceso detallado

1. 假设用户需创建 tomcat 资源(网站/调度);

2. 请求发送至master 首先需要经过apiserver(资源控制请求的唯一入口);

3. apiserver 接收到请求后首先会先记载在Etcd中;

4. Etcd的数据库根据controllers manager(控制器) 查看创建的资源状态(有无状态化);

5. 通过controllers 触发 scheduler (调度器)6. scheduler 通过验证算法 验证架构中的nodes节点,筛选出最适合创建该资源,接着分配给这个节点进行创建;

7. node节点中的kubelet 负责执行master给与的资源请求,根据不同指令,执行不同操作;

8. 对外提供服务则由kube-proxy开设对应的规则(代理);

9. container 容器开始运行(runtime 生命周期开始计算);

10. 外界用户进行访问时,需要经过kube-proxy 访问到container;

11. 如果container 因故障而被销毁了,master节点的controllers 会再次通过scheduler 资源调度通过kubelet再次创建容器,恢复基本条件限制。

Seis explicaciones detalladas de los conceptos básicos de Kubernetes

  • Debajo

    • ① Unidad mínima de despliegue
    • ② Una colección de contenedores
    • ③ Los contenedores en un Pod comparten el espacio de nombres de la red (comprensiblemente en la misma red de área local)
    • ④ La vaina es de corta duración (tiene un ciclo de vida)
  • Controladores

    • ① ReplicaSet: para garantizar la cantidad esperada de réplicas de Pod (se pueden establecer parámetros)

    • ② Implementación: aplicación sin estado (por ejemplo: web, nignx, apache, tomcat)

    • ③ StatefulSet: implementación de aplicaciones con estado, la aplicación es única y no se puede volver a crear para un reemplazo perfecto, como las bases de datos mysql y Oracle

    • ④ DaemonSet: asegúrese de que todos los nodos ejecuten el mismo pod (establezca todos los nodos en el mismo espacio de nombres)

    • ⑤ Trabajo: tarea de una sola vez (linux analógico: at)

    • ⑥ Cronjob: tarea de sincronización (linux analógico: crontab)

    • Objetos de nivel superior, implementación y administración de pods

  • Servicio

    • ① Evite que el Pod pierda la conexión
    • ② Definir un conjunto de estrategias de acceso a pod (función principal)
    • ③ Asegurar la independencia entre cada Pod (seguridad)
  • Etiqueta

    • Etiquetas, adjuntas a un recurso, utilizadas para asociar objetos, consultar y filtrar
  • Espacios de nombres

    • Espacio de nombres, objetos aislados lógicamente
  • Anotaciones

    • Anotación

Supongo que te gusta

Origin blog.csdn.net/weixin_42449832/article/details/114961464
Recomendado
Clasificación