Рейтинг:0

Заставьте модули kubernetes взять на себя определенную личность/роль/задачу после запуска

флаг mx

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

У меня есть список «агентов» высокого уровня, которые я хочу развернуть как модули в кластере kubernetes.

Некоторые узлы в этом кластере имеют специальное оборудование, некоторые — нет, но все модули должны использовать один и тот же контейнер.

Может выглядеть так (опять же: синтаксис неверен):

агент 1
...
агент8
агент9 сеть rs232.1
агент10 беспроводная сеть rs232.2

Я устанавливаю развертывание, которое выглядит примерно так (синтаксис неверен):

развертывание (стандартные узлы)
  реплики: 8
---
развертывание (rs232, терминал 1)
  реплики: 1
  селектор узлов:
    rs232=1
  среда:
    rs232=1 (потому что nodeSelector не может быть правильно передан)
---
развертывание (rs232, терминал 2)
  реплики: 1
  селектор узлов:
    rs232=2
  среда:
    rs232=2

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

Таким образом, модуль будет общаться со службой распределения ролей следующим образом:

pod — привет, я pod/container-xyz и у меня env/label/annotation rs232=2
service - Привет, ну тогда ты теперь agent10
pod - хорошо, тогда я сделаю работу агента10
(сервис - прикольно, я добавлю агент10 как псевдоним вам в DNS кластера) <- это будет мой следующий вопрос

То же самое для агентов без специального оборудования: сервис дает им по одной роли агента.

Я пробовал что-то с StatefulSet, но это не отвечает всем требованиям (из-за различных nodeSelector, и они очень медленно запускаются).

Я начал думать о выделенном самореализованном серверном модуле, который хранил бы мой список агентов и сдавал их в аренду соответствующему оборудованию (немного похожему на сервер dhcp), но я почти уверен, что я не единственный, у кого есть эта проблема, и должна быть решение там. Я быстро посмотрел на Zookeeper, но не думаю, что это для меня. Я, вероятно, не нахожу решения, потому что мой словарный запас не является правильным, я думаю.

У кого-нибудь есть хорошая идея? Я иду в правильном направлении?

kkopczak avatar
флаг ng
Какую версию Kubernetes вы использовали и как настроили кластер? Вы использовали установку на «голое железо» или какого-то облачного провайдера?
FLBzh avatar
флаг mx
Привет, @kkopczak, спасибо за вопрос, но какое отношение он имеет к моей проблеме?
kkopczak avatar
флаг ng
Такая информация поможет воспроизвести вашу проблему.
Рейтинг:1
флаг us

Я бы, вероятно, реализовал это с помощью Композитный контроллер MetaController и пользовательский ресурс, который определяет агентов. Хотя требуется кодирование. Это выглядит намного сложнее, чем есть на самом деле.

В основном вы регулярно получаете перехватчики синхронизации по HTTP, описывающие текущее состояние ресурсов, и вы отвечаете JSON, чтобы создать/уничтожить их.

FLBzh avatar
флаг mx
Да ! Большое спасибо. Есть даже пример, который является хорошей базой для реализации того, что нам нужно: https://github.com/metacontroller/metacontroller/tree/master/examples/indexedjob.

Ответить или комментировать

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