Kubernetes: получить имя пула узлов из модуля - PullRequest
0 голосов
/ 12 июля 2020

В моем кластере Kubernetes работают два пула узлов (называемые «A» и «B»), которые работают в моем кластере Kubernetes. Мое развертывание - , предпочитающее (с использованием функции «nodeAffinity-> preferredDuringSchedulingIgnoredDuringExecution») для запуска в пуле узлов «B». Но если ресурсов в пуле узлов «B» недостаточно, Kubernetes выделит новый модуль в пуле узлов «A» ( второй вариант ).

Мой лог c должен проверить если модуль находится в пуле узлов A и нет задач для решения (задачи, поступающие из очереди) - выключите модуль. Будем надеяться, что следующий экземпляр будет запущен в пуле узлов B ...

Мое приложение, работающее в модуле, знает, когда очереди пусты. В этом случае мне нужно проверить, запущен ли модуль в пуле узлов A. Если да, выключите.

Как узнать пул узлов узла, в котором модуль запланирован, из модуля?

Спасибо.

1 Ответ

2 голосов
/ 12 июля 2020

Вы можете добавить определенные c метки ко всем узлам в определенном c пуле, чтобы отличать guish узлы от других узлов в другом пуле узлов.

В модуле определите среда, как показано ниже, которая читает из spec.Nodename

env:
  - name: MY_NODE_NAME
    valueFrom:
      fieldRef:
        fieldPath: spec.nodeName

Используя значение из переменной среды, вы можете запросить ниже Kubernetes API и проверить метку, чтобы определить пул узлов.

GET /api/v1/nodes/{MY_NODE_NAME}

Для вызова вышеуказанного API Kubernetes вы можете использовать клиентскую библиотеку kubernetes на любом поддерживаемом языке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...