Notas de estudio de k8s (2): introducción a los componentes de k8s

Introducción a los componentes k8s

Diagrama de arquitectura

Insertar descripción de la imagen aquí

Role

  • Master: Es la puerta de enlace y eje central del cluster.Su función principal es exponer las interfaces API, rastrear el estado de salud de otros servidores, programar cargas de manera óptima y orquestar la comunicación entre otros componentes . Un solo nodo maestro puede completar todas las funciones, pero considerando el problema del punto único de falla, generalmente se implementan múltiples nodos maestros en un entorno de producción para formar un clúster. Incluye todos los componentes del plano de control.
  • Nodo: es el nodo de trabajo de Kubernetes y es responsable de recibir instrucciones de trabajo del Master, crear y destruir objetos Pod en consecuencia de acuerdo con las instrucciones y ajustar las reglas de la red para un enrutamiento y reenvío de tráfico razonables . En un entorno de producción, puede haber N nodos. Incluye todos los nodos de nodos.

Componentes del plano de control

Los componentes del plano de control toman decisiones globales para el clúster, como la programación de recursos. replicasAdemás de detectar y responder a eventos del clúster, como iniciar un nuevo pod cuando no se cumple un campo implementado ).

Los componentes del plano de control se pueden ejecutar en cualquier nodo del clúster. Sin embargo, para simplificar, el script de configuración normalmente inicia todos los componentes del plano de control en la misma máquina y no ejecuta contenedores de usuario en esta máquina.

a un servidor

El servidor API es un componente del plano de control de Kubernetes y es responsable de exponer la API de Kubernetes y manejar el trabajo de aceptar solicitudes . El servidor API es la interfaz del plano de control de Kubernetes.

apiserver es la puerta de entrada de todo el clúster

La única interfaz externa de K8S proporciona API RESTful HTTP/HTTPS, es decir, API de Kubernetes. Todas las solicitudes deben comunicarse a través de esta interfaz. Es el principal responsable de recibir, verificar y responder a todas las solicitudes REST. El estado del resultado se almacena persistentemente en etcd, que es la única entrada para todas las adiciones, eliminaciones y modificaciones de recursos .

puerto

[root@k8s-master ~]# netstat -anplut|egrep LISTEN.*apiserver

Insertar descripción de la imagen aquí

envase

[root@k8s-master ~]# docker ps|grep apiserver
c09166f7c313   ca9843d3b545                                        "kube-apiserver --ad…"   3 minutes ago   Up 3 minutes             k8s_kube-apiserver_kube-apiserver-k8s-master_kube-system_2fc27474246553d4d73cbb5d364b9726_6
8f9429e1d4e6   registry.aliyuncs.com/google_containers/pause:3.2   "/pause"                  5 minutes ago   Up 5 minutes             k8s_POD_kube-apiserver-k8s-master_kube-system_2fc27474246553d4d73cbb5d364b9726_5

etcétera

Un almacén de valores clave coherente y de alta disponibilidad que se utiliza como base de datos backend para todos los datos del clúster de Kubernetes.

Responsable de guardar la información de configuración del clúster k8s y la información de estado de varios recursos.Cuando los datos cambien, etcd notificará rápidamente a los componentes k8s relevantes. etcd es un componente de servicio independiente y no está afiliado al clúster K8S. En un entorno de producción, etcd debe ejecutarse en un clúster para garantizar la disponibilidad del servicio.

etcd no solo se utiliza para proporcionar almacenamiento de datos de valores clave, sino que también proporciona un mecanismo de vigilancia para monitorear e impulsar cambios. En el sistema de clúster K8S, los cambios en los valores de las claves etcd se notificarán al servidor API , que los enviará al cliente a través de la API de vigilancia.

puerto

[root@k8s-master ~]# netstat -anplut|egrep LISTEN.*etcd

Insertar descripción de la imagen aquí

envase

[root@k8s-master ~]# docker ps |grep etcd
c66803416c06   0369cf4303ff                                        "etcd --advertise-cl…"   6 minutes ago   Up 6 minutes             k8s_etcd_etcd-k8s-master_kube-system_6b17573732d23fd599a67ffecd227455_5
f2847eb09da2   registry.aliyuncs.com/google_containers/pause:3.2   "/pause"                  6 minutes ago   Up 6 minutes             k8s_POD_etcd-k8s-master_kube-system_6b17573732d23fd599a67ffecd227455_5

programador de kube

kube-schedulerEs un componente del plano de control , responsable de monitorear los Pods recién creados que no especifican un nodo en ejecución (nodo) y de seleccionar los nodos en los que se ejecutarán los Pods .

Los factores considerados en las decisiones de programación incluyen requisitos de recursos de Pods individuales y colecciones de Pods, software, hardware y restricciones de políticas, especificaciones de afinidad y antiafinidad, ubicación de datos, interferencia entre cargas de trabajo y plazos.

envase

[root@k8s-master ~]# docker ps|grep scheduler
c179d65f1940   3138b6e3d471                                        "kube-scheduler --au…"   7 minutes ago   Up 7 minutes             k8s_kube-scheduler_kube-scheduler-k8s-master_kube-system_0378cf280f805e38b5448a1eceeedfc4_5
2dbe2c73b36b   registry.aliyuncs.com/google_containers/pause:3.2   "/pause"                  7 minutes ago   Up 7 minutes             k8s_POD_kube-scheduler-k8s-master_kube-system_0378cf280f805e38b5448a1eceeedfc4_5

puerto

[root@k8s-master ~]# netstat -anplut|egrep LISTEN.*scheduler

Insertar descripción de la imagen aquí

administrador-controlador-kube

kube-controller-manager es un componente del plano de control y es responsable de ejecutar el proceso del controlador .

Responsable de gestionar varios recursos del clúster y garantizar que los recursos estén en el estado esperado.

Lógicamente, cada controlador es un proceso independiente, pero para reducir la complejidad, todos se compilan en el mismo ejecutable y se ejecutan en el mismo proceso.

Estos controladores incluyen:

  • Controlador de nodo: Responsable de notificar y responder cuando falla un nodo
  • Controlador de trabajo: monitorea los objetos de trabajo que representan tareas únicas y luego crea pods para ejecutar estas tareas hasta su finalización.
  • Controlador EndpointSlice: completa el objeto EndpointSlice (para proporcionar el vínculo entre el Servicio y el Pod).
  • Controlador ServiceAccount: cree una cuenta de servicio predeterminada (ServiceAccount) para el nuevo espacio de nombres.
  • Controlador de réplica: especifique la cantidad de contenedores en el pod. Si faltan algunos, se completarán automáticamente.
  • Controlador de implementación: ayuda a implementar software
  • Controlador de tareas programadas: ayuda a monitorear las tareas programadas

puerto

[root@k8s-master ~]# netstat -anplut|egrep LISTEN.*kube-controlle

Insertar descripción de la imagen aquí

envase

[root@k8s-master ~]# docker ps |grep kube-controlle
3ea62f3d0381   b9fa1895dcaa                                        "kube-controller-man…"   10 minutes ago   Up 10 minutes             k8s_kube-controller-manager_kube-controller-manager-k8s-master_kube-system_5c575d17517839b576ab4817fd06353f_5
8d65ce545508   registry.aliyuncs.com/google_containers/pause:3.2   "/pause"                  10 minutes ago   Up 10 minutes             k8s_POD_kube-controller-manager-k8s-master_kube-system_5c575d17517839b576ab4817fd06353f_5

administrador-del-controlador-de-la-nube

Un componente del plano de control de Kubernetes que incorpora una lógica de control específica de la plataforma en la nube. Cloud Controller Manager le permite conectar su clúster a la API de un proveedor de nube y separar los componentes que interactúan con la plataforma de nube de los componentes que interactúan con su clúster.

cloud-controller-managerEjecute únicamente controladores específicos de la plataforma en la nube. Por lo tanto, si ejecuta Kubernetes en su propio entorno o ejecuta un entorno de aprendizaje en su computadora local, el clúster implementado no necesita un administrador de controlador de nube.

De manera similar a kube-controller-manager, cloud-controller-managervarios bucles de control lógicamente independientes se combinan en el mismo archivo ejecutable para que usted lo ejecute como el mismo proceso. Puede escalarlo horizontalmente (ejecutar más de una réplica) para mejorar el rendimiento o mejorar la tolerancia a fallos.

Todos los siguientes controladores incluyen dependencias de los controladores de la plataforma en la nube:

  • Controlador de nodo: se utiliza para verificar el proveedor de la nube después de que el nodo finaliza la respuesta para determinar si el nodo se ha eliminado
  • Controlador de ruta: se utiliza para configurar el enrutamiento en la infraestructura de la nube subyacente
  • Controlador de servicio: se utiliza para crear, actualizar y eliminar balanceadores de carga del proveedor de la nube.

Componente de nodo

kubelet

Garantiza que todos los contenedores se ejecuten en Pods.

Se ejecuta un programa independiente en el host, no en el contenedor

kubeletSe ejecutará en todos los nodos del clúster . Garantiza que todos los contenedores (contenedores) se ejecuten en Pods .

Kubelet es el agente de un nodo. Cuando el Programador determina ejecutar un Pod en un Nodo, enviará la información de configuración específica (imagen, volumen, etc.) del Pod al kubelet del nodo. El kubelet creará y ejecute el contenedor basándose en esta información y envíelo al maestro para informar el estado de ejecución .

puerto

[root@k8s-master ~]# netstat -anplut|grep kubelet

Insertar descripción de la imagen aquí

proceso

[root@k8s-master ~]# ps aux|grep kubelet

Insertar descripción de la imagen aquí

fue un apoderado

Se ejecuta un programa independiente en el host, no en el contenedor

kube-proxy es un proxy de red que se ejecuta en cada nodo del clúster e implementa parte del concepto de servicio de Kubernetes .

kube-proxy mantiene algunas reglas de red en los nodos que permiten la comunicación de red con Pods desde sesiones de red dentro o fuera del clúster.

Si el sistema operativo proporciona una capa de filtrado de paquetes disponible, kube-proxy implementará reglas de red a través de ella. De lo contrario, kube-proxy solo reenvía el tráfico.

Modo proxy (equilibrio de carga)

  • ipvs, se recomienda habilitar ipvs en el entorno de producción
  • iptables, usado por defecto, baja eficiencia

puerto

[root@k8s-master ~]# netstat -anplut|grep LISTEN.*kube-proxy

Insertar descripción de la imagen aquí

proceso

[root@k8s-master ~]# ps aux|grep kube-proxy
root       3485  0.5  1.5 744064 28764 ?        Ssl  12:41   0:04 /usr/local/bin/kube-proxy --config=/var/lib/kube-proxy/config.conf --hostname-override=k8s-master
root      14987  0.0  0.0 112824   992 pts/0    S+   12:54   0:00 grep --color=auto kube-proxy

complemento principal

Componentes de comunicación de red.

Calicó

Logre la comunicación entre hosts en el tipo de red superpuesta, adecuada para clústeres a gran escala

Todos los hosts k8s se ejecutarán

franela

Adecuado para clusters de pequeña escala

DNS central

Programe y ejecute pods que proporcionen servicios DNS en un clúster K8S. Otros pods en el mismo clúster pueden usar este servicio DNS para resolver nombres de host . K8S utiliza el proyecto CoreDNS de forma predeterminada desde la versión 1.11 para proporcionar servicios dinámicos de resolución de nombres para el registro y descubrimiento de servicios para el clúster.

Panel

Todas las funciones del clúster K8S deben basarse en la interfaz de usuario web para administrar las aplicaciones en el clúster y el propio clúster.

Supongo que te gusta

Origin blog.csdn.net/qq_57629230/article/details/131344027
Recomendado
Clasificación