Передайте функцию для оценки для списка команд K8s - PullRequest
0 голосов
/ 30 апреля 2020

возможно ли передать функцию в качестве значения в команду pod K8s для оценки? Я передаю аргументы JVM для установки параметра MaxRAM и хотел бы прочитать память cgroups, чтобы определить значение для аргумента

Это пример того, что я пытаюсь сделать

- command:
  - /opt/tools/Linux/jdk/openjdk1.8.0_181_x64/bin/java
  - -XX:MaxRAM=$(( $(cat /sys/fs/cgroup/memory/memory.limit_in_bytes) * 70/100 ))

К сожалению, вышеприведенное не работает и завершается с ошибкой:

Improperly specified VM option 'MaxRAM=$(( $(cat /sys/fs/cgroup/memory/memory.limit_in_bytes) * 100 / 70 ))'
Error: Could not create the Java Virtual Machine.
Error: A fatal exception has occurred. Program will exit.

Это выполнимо? Если так, то как правильно это сделать? Спасибо!

Ответы [ 2 ]

2 голосов
/ 30 апреля 2020

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

command:
- sh
- -c
- |
  exec /opt/tools/Linux/jdk/openjdk1.8.0_181_x64/bin/java -XX:MaxRAM=$(( $(cat /sys/fs/cgroup/memory/memory.limit_in_bytes) * 70/100 ))
1 голос
/ 30 апреля 2020

Достаточно недавние версии JVM имеют прямую поддержку для понимания ограничений памяти контейнера. Если вы можете обновить хотя бы до Java 8u191, тогда поддерживает текущий набор соответствующих параметров JVM . Вы можете установить:

- command:
  - /opt/tools/Linux/jdk/openjdk1.8.0_251_x64/bin/java
  - -XX:MaxRAMPercentage=70.0
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...