Kubernetes

Руководство Kubernetes Operator

Руководство Kubernetes Operator
Операторы Kubernetes - это концепция, представленная проектом CoreOS для расширения возможностей Kubernetes, в частности, для управления приложениями с отслеживанием состояния. Предполагается, что он упростит весь жизненный цикл ресурсов с отслеживанием состояния от упаковки приложения и его развертывания в кластере Kubernetes до управления и масштабирования приложения.

Например, для некоторых основных компонентов Kubernetes, таких как etcd, соответствующие операторы доступны в рамках проекта CoreOs. Etcd - это распределенное хранилище ключей и значений, которое отражает текущее состояние всего кластера Kubernetes в любой момент времени. Естественно, это приложение с отслеживанием состояния, и различные контроллеры Kubernetes обращаются к etcd, чтобы понять, каким будет их следующий шаг. Например, контроллер ReplicaSet будет смотреть на количество модулей, работающих под данным селектором, и пытаться привести количество запущенных экземпляров, равное количеству, заданному вашим ReplicaSet или Deployment YAML. ReplicaSet относится к etcd, который отслеживает количество запущенных модулей, и как только количество модулей будет изменено на желаемое значение, etcd также обновит свою запись.

Но когда дело доходит до приложений с отслеживанием состояния, таких как сама etcd, мы не можем развернуть больше модулей на разных узлах без серьезного вмешательства. Потому что все запущенные экземпляры должны всегда иметь данные, согласованные друг с другом. Здесь операторы пригодятся.

Предпосылки

Если вы хотите следовать этому руководству, вы можете начать с чего-то небольшого, например, с Minikube, установленного на вашем ноутбуке, или с дистрибутива Kubernetes, который поставляется с Docker для настольных ПК.

Важно иметь представление об основных идеях Kubernetes для начала.

И т. Д

Давайте создадим оператора, который будет управлять etcd в нашем кластере Kubernetes. Мы не будем устанавливать etcd как компонент Kubernetes (то есть в пространство имен kube-system), а как обычное приложение. Потому что это поставит под угрозу весь кластер. Однако, когда вы освоитесь с операторами, вы можете использовать их для развертывания etcd в системе kube при загрузке нового кластера.

Я буду использовать здесь Katacoda Playground, и более пристальный осмотр пространства имен kube-system покажет вам, что у нас есть один модуль, на котором работает etcd. Но это не то, с чем мы будем возиться. Мы установим etcd в пространство имен по умолчанию, управляемое etcd-operator

Начиная с пространства имен по умолчанию, у нас нет запущенных модулей, у нас все в порядке.

$ kubectl получить поды

Ресурсы не найдены.

Теперь давайте установим новый экземпляр etcd в это пространство имен. Начнем с клонирования репозитория с последующей простой командой kubectl.

$ git clone https: // github.com / coreos / etcd-оператор.мерзавец
$ cd etd-оператор

Создание оператора Etcd

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

$ / пример / rbac / create_role.ш
$ kubectl create -f ./ пример / развертывание.ямл

Объект оператора будет создан последней командой, хотя работать не над чем. У нас еще нет кластера etcd. Итак, давайте создадим один.

$ kubectl create -f ./ пример / пример-etcd-кластер.ямл

Это создает кластер подов etcd. Вы можете увидеть их, используя:

$ kubectl получить поды
 
ИМЯ ГОТОВ СОСТОЯНИЕ ВОЗРАСТ ВОЗВРАЩАЕТСЯ
etcd-operator-69b559656f-495vg 1/1 Бег 0 9 мес
example-etcd-cluster-9bxfh657qq 1/1 Выполняется 0 23 с
example-etcd-cluster-ntzp4hrw79 1/1 Бег 0 8 мин
example-etcd-cluster-xwlpqrzj2q 1/1 Бег 0 9 мес

Первым в этом списке является модуль оператора, который гарантирует, что кластер etcd поддерживает определенное состояние, как указано в файлах yaml, которые мы использовали ранее. Если вы попытаетесь удалить один из модулей example-etcd-cluster, вместо него будет создан другой. Это очень похоже на то, что делает ReplicaSet, но здесь поды сохраняют состояние!

Операторы в целом

Как упоминалось ранее, операторы - это общая структура, в которой можно развертывать сложные приложения и управлять ими. Сама структура - это то, что делает их полезными, и конкретные примеры, такие как оператор etcd или оператор Prometheus, которые предоставляет CoreOS, предназначены для того, чтобы действовать как руководство для вас при разработке собственного приложения аналогичным образом.

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

Этапы жизненного цикла могут включать в себя различные обновления, выяснение того, какой оператор работает в каких пространствах имен, а также обновление операторов при появлении новой версии.

Рекомендации

Вы можете узнать больше об этой технологии в:

  1. Исходный пост CoreOS и
  2. С оператором etcd можно ознакомиться здесь
Как использовать Xdotool для стимулирования щелчков мыши и нажатия клавиш в Linux
Xdotool - это бесплатный инструмент командной строки с открытым исходным кодом для имитации щелчков мыши и нажатия клавиш. В этой статье будет краткое...
5 лучших эргономичных компьютерных мышей для Linux
Вызывает ли длительное использование компьютера боль в запястье или пальцах?? Вы страдаете от скованности суставов и постоянно должны пожимать руки? В...
Как изменить настройки мыши и сенсорной панели с помощью Xinput в Linux
Большинство дистрибутивов Linux по умолчанию поставляются с библиотекой libinput для обработки событий ввода в системе. Он может обрабатывать события ...