Рубрики
Uncategorized

Расширение контроллера Kubernetes

Обзор контроллеров Kubernetes В основе самого Kubernetes есть большой набор контроллеров … Помечено Kubernetes, DevOps, Docker.

Обзор контроллеров Kubernetes В основе самого Kubernetes есть большой набор контроллеров. Контроллер гарантирует, что конкретный ресурс находится (и остается) в желаемом состоянии, продиктованном заявленным определением. Если ресурс отклоняется от желаемого состояния, контроллер запускается для выполнения необходимых действий, чтобы вернуть состояние ресурса туда, где оно должно быть. Но как контроллеры «знают», что произошло изменение? Например, когда вы увеличиваете развертывание, вы фактически отправляете запрос на сервер API с новой желаемой конфигурацией. Сервер API в ответ публикует изменение всех подписчиков событий (любой компонент, который прослушивает изменения на сервере API). Таким образом, контроллер развертывания создает один или несколько стручков для соответствия новому определению. Новое создание POD сами по себе является новым изменением, которое сервер API также передает слушателям событий. Таким образом, если есть какие -либо действия, которые должны быть запускаются при создании нового стручка, они автоматически начинают. Обратите внимание, что Kubernetes использует методологию декларативного программирования, а не обязательную. Это означает, что сервер API публикует только новое определение. Это не обучает контроллеру или какого -либо слушателя событий о том, как они должны действовать. Реализация оставлена контроллеру.

В то время как нативные контроллеры Kubernetes, такие как развертывание, Statefulsets, услуги, работа и т. Д. Достаточно самостоятельно для решения большинства потребностей приложений, иногда вы хотите реализовать свой собственный контроллер. Kubernetes позволяет вам расширять и опираться на существующую функциональность, не ломая или изменяя исходный код Kubernetes. В этой статье мы обсуждаем, как мы можем сделать это и лучшие практики.

Пользовательский контроллер или оператор? Из происхождения Kubernetes считалось контроллерами как способ, которым разработчики могут расширить функциональность Kubernetes, предоставляя новое поведение. Из-за многих этапов, которые проходили расширенные контроллеры, мы можем грубо классифицировать их по двум основным категориям:

Пользовательские контроллеры: это контроллеры, которые действуют на стандартные ресурсы Kubernetes. Они используются для улучшения платформы и добавления новых функций. Оператор: В своем сердце они являются пользовательскими контроллерами. Однако вместо использования стандартных ресурсов K8S они действуют на пользовательские определения ресурсов (CRD). Это ресурсы, которые были созданы специально для оператора. Вместе оператор и его CRD могут справиться с сложной бизнес -логикой, с которой не может обрабатывать родной или расширенный контроллер. Приведенная выше классификация используется только для различения различных концепций, которые вам необходимо понять в каждой модели. Но, в конце концов, концепция остается прежней; Мы расширяем Kubernetes, создав новый контроллер. В этой статье нас интересует первый тип; пользовательские контроллеры.

Оригинал: «https://dev.to/ahmedat71538826/extending-the-kubernetes-controller-1dbj»