динамическая командная строка kubernetes pod

У меня есть сторонний контейнер докеров, который принимает аргументы в форме:

docker run foo --arg1 val1 --arg2 val2

и я запустил его как pod в kubernetes следующим образом:

spec:
  containers:
  - name: foo
    image: foo
    args:
    -  --arg1
    - val1
    - --arg2
    - val2

Это хорошо, но теперь мне нужно, чтобы два значения аргумента были динамическими. Например, val1 - это имя / идентификатор модуля, а val2 - это зона (зона доступности aws) узла, на котором работает модуль.

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

Мне интересно, есть ли более элегантное решение, чем это. Допустим, мы можем получить эти динамические значения в initContainer. Теперь вопрос в том, как передать их в командной строке основного контейнера.

PS: Похоже, мы можем получить имя модуля с помощью Downward API. Однако Downward API не раскрывает метку узла, для которой существует открытая проблема. . Итак, что касается этого вопроса, давайте подумаем, что наши параметры произвольные и получаются динамически.


person vrtx54234    schedule 31.08.2020    source источник


Ответы (1)


Вы сможете передавать аргументы, как указано ниже.

HOSTNAME env предоставит подробную информацию о POD_NAME

Подробная информация для региона AWS.

ИЛИ

Запустите команду kubectl при инициализации и используйте метку узла с параметром --show-labels, чтобы получить подробную информацию о регионе на основе назначенного узла пода.

person Anurag Jain    schedule 31.08.2020
comment
Хорошо, это то, к чему я близок прямо сейчас - вызовите api k8s из контейнера инициализации и поместите результат в общий том. Это по-прежнему хороший уровень сложности, но пока что это лучший вариант. - person vrtx54234; 31.08.2020