Análisis del mecanismo operativo de Kubelet Gestión de pods

El kubelet obtiene la lista de Pods para ejecutar en su propio Nodo de las siguientes maneras .

(1) Archivo: el archivo en el directorio de archivos de configuración especificado por el parámetro de inicio de kubelet "a config " (el directorio predeterminado es " etc/
manifiestos de kubernetes /) . El tiempo  mediante la configuración de frecuencia de verificación de archivos , el valor predeterminado es
años 20
staticPodPath: /etc/kubernetes/manifests

(2) punto final HTTP CURL ): establecido a través del parámetro " manifest-url " . a través de una configuración de frecuencia de verificación http
El intervalo de tiempo para verificar los datos del punto final HTTP , el valor predeterminado es 20S.

(3) Servidor  API : el kubelet supervisa el directorio etcd a través del servidor API y sincroniza la tabla Pod .  

Pods creados en modo servidor no API 

Todos los pods creados en el modo de servidor no API se denominan pods estáticos kubelet informa el estado de los pods estáticos a
API Server , API Server crea un Mirror Pod para que el Static Pod coincida. El estado del Mirror Pod será verdadero
En realidad refleja el estado del Static Pod. Cuando se elimina un Static Pod , se eliminará el Mirror Pod correspondiente .

 

Pod creado por API Server  

Solo discutimos la forma de obtener el inventario de Pod a través del Servidor API . El kubelet monitorea el " registro/ nodos/$  nombre del nodo actual " y el directorio "/ registro/ pods " a través del cliente del servidor  API usando Watch  List, y sincroniza la información obtenida con el caché local.
El kubelet escucha e tcd y todas las operaciones en el Pod serán monitoreadas por el kubelet . Si se encuentra un nuevo Pod vinculado a este nodo, el Pod se crea de acuerdo con los requisitos de la lista de Pod .
Si se encuentra que el Pod local ha sido modificado , el kubelet hará las modificaciones correspondientes Por ejemplo , cuando se elimine un contenedor en el Pod , el contenedor se eliminará a través de Docker Client .
Si se encuentra que se eliminó el pod de este nodo , se elimina el pod correspondiente y el contenedor en el pod se pasa a través del cliente de Docker .
El kubelet lee la información monitoreada, y si es para crear y modificar un Pod , realizará el siguiente procesamiento.
(1 ) Crear un directorio de datos para el Pod
(2 ) Lea la lista de pods del servidor API .
(3 ) Monte el volumen externo para el Pod
(4 ) Descarga el Secreto utilizado por el Pod
(5 ) Verifique el Pod que ya se está ejecutando en el nodo , si el Pod no tiene contenedor o Pause container (" kubernetes/pause
El contenedor creado por la imagen) no se inicia, luego detenga primero los procesos de todos los contenedores en el Pod . Si hay contenido que debe eliminarse en el Pod
contenedores, elimine esos contenedores.
(6 ) Cree un contenedor para cada Pod con la imagen " kubemetes/pausa ". El contenedor de pausa se usa para hacerse cargo de la conexión en red de todos los demás contenedores del Pod. Cada vez que se crea un nuevo Pod, el kubelet primero creará el contenedor de Pausa y luego creará otros contenedores. La imagen de kubernetes/pause "tiene aproximadamente 200 KB y es una imagen de contenedor muy pequeña.
(7 ) Haga lo siguiente para cada contenedor en el Pod .
  • Calcule un valor hash para el contenedor y luego use el nombre del contenedor para consultar el valor hash del contenedor Docker correspondiente . Si se encuentra y los valores hash de los dos son diferentes, detenga el proceso del contenedor en Docker y detenga el proceso del contenedor Pause asociado con él ; si los dos son iguales, no haga nada
  • Si el contenedor finaliza y el contenedor no tiene un restartPolicy especificado , no se hará nada.
  • Llame a Docker Client para descargar la imagen del contenedor y llame a Docker Client para ejecutar el contenedor

Supongo que te gusta

Origin blog.csdn.net/qq_34556414/article/details/123610559
Recomendado
Clasificación