Создание Pod в Kubernetes — простая задача. Но под капотом скрывается сложный рабочий процесс, который затрагивает несколько компонентов кластера. Делимся переводом статьи, где автор рассказывает, что в этот момент происходит в кластере. Статья будет полезна тем, кто изучает Kubernetes, знакомится с его компонентами и абстракциями.

Начнем с очевидного: kubectl отправляет определение YAML на сервер API.
На этом этапе kubectl:
-
Обнаруживает эндпоинты API с помощью OpenAPI (Swagger).
-
Согласовывает версию ресурса.
-
Проверяет YAML.
-
Выдает запрос.
Когда запрос попадает к API, он проходит следующие этапы:
-
Аутентификация и авторизация.
-
Контроллеры допуска.
На последнем этапе он сохраняется в etcd.
После этого pod добавляется в очередь планировщика. Планировщик фильтрует и оценивает узлы, чтобы найти лучший. И, наконец, привязывает pod к ноде. Привязка записывается в etcd.
На данный момент pod существует только в etcd в виде записи. Инфраструктура еще не создала ни одного контейнера. Здесь за дело берется kubelet.
Kubelet извлекает Pod definition и приступает к делегированию:
-
Создание сети на CNI (например, Cilium).
-
Создание контейнера — CRI (например, containerd).
-
Создание хранилища — CSI (например, OpenEBS).
Кроме всего прочего, Kubelet будет выполнять проверки Pod и, если Pod запущен, сообщать его IP-адрес в control plane.
Этот IP-адрес и порты контейнеров хранятся в etcd как эндпоинты.
Подождите… эндпоинты?
В Kubernetes:
-
endpoint — это пара 10.0.0.2:3000 (IP:порт).
-
Endpoint — это коллекция конечных точек (список пар IP:порт).
Для каждого сервиса в кластере Kubernetes создает объект Endpoint с конечными точками.
Запутанно, не правда ли?
Эндпоинты (IP:порт) используются:
-
kube-proxy для установки правил iptables.
-
CoreDNS для обновления записей DNS.
-
Контроллеры входа для настройки нисходящих потоков.
-
Сервисные сетки.
-
И другие операторы.
Как только добавляется конечная точка, компоненты получают уведомления.
Когда конечная точка (IP:порт) будет передана, вы наконец-то сможете начать использовать Pod!
Что происходит, когда вы удаляете Pod?
Точно такой же процесс, но в обратном порядке.
Правильная последовательность такова:
-
Приложение перестает принимать соединения.
-
Контроллеры (kube-proxy, ingress и т. д.) удаляют конечную точку.
-
Приложение сливает существующее соединение.
-
Приложение отключается.
Если вы только знакомитесь с Kubernetes, то приходите в Слёрм на курс Kubernetes: База. Это стартовый курс для администраторов, после которого вы будете знать его основные компоненты и абстракции, иметь опыт настройки кластера и запуска в нём приложений.
Попробуйте бесплатный демо-доступ к курсу по этой ссылке. Вы получите на три дня видеоуроки из первого модуля.
Когда вы полностью пройдете всю теорию и практику и успешно сдадите сертификацию, вы будете готовы к работе с Kubernetes в продакшене.
ссылка на оригинал статьи https://habr.com/ru/articles/783708/
Добавить комментарий