Kubernetes - Как API Server / etcd узнает о состоянии каждого модуля? - PullRequest
0 голосов
/ 05 июня 2018

Я понимаю, что kubelet отвечает за получение PodSpecs (обычно с сервера API) и запуск Pod.

Компоненты Kubernetes> Компоненты узла> kubelet

"Кубеле принимает набор PodSpecs, предоставляемых через различные механизмы, и обеспечивает работоспособность и работоспособность контейнеров, описанных в этих PodSpecs."

Но какСервер API отслеживает состояние каждого модуля (например, работает / не работает)?kubelet отправляет регулярные запросы на сервер API?Или сервер API регулярно опрашивает kubelet?Или какой-то другой механизм?

1 Ответ

0 голосов
/ 05 июня 2018

kubelet делает все на узле.Типичный процесс создания модуля будет следующим:

  1. По умолчанию kubelet подключается к api-серверу через эту «вещь», называемую watch .Это своего рода паб / саб.Таким образом, kubelet будет подписан на событие «create pod», а api-сервер уведомит его о необходимости создания pod.
  2. kubelet получит время выполнения контейнера (docker или rkt) вместе с другими спецификациями podи создаст модуль.

Примечание: здесь задействованы другие компоненты, такие как планировщик и диспетчер контроллера (упомянутые в вашем посте как различные механизмы), но я их пропущу.

kubelet выполнит необходимые проверки жизнеспособности и готовности и сообщит api-серверу о состоянии.Успех! api-сервер обновит etcd (добавив метаданные модуля), чтобы отслеживать, что происходит в кластере.

В этот момент kubeletбудет отвечать за этот модуль.Если модуль выйдет из строя, kubelet сообщит об api-сервере, api-сервер даст команду убить модуль, включит новый и снова обновит сервер etcd.

Одна вещь, на которую следует обратить вниманиев том, что все компоненты в k8s общаются с api-сервером напрямую.Таким образом, диспетчер контроллера или планировщик не говорят kubelet, что делать.Скорее они говорят это api-серверу, а api-серверу kubelet.

...