传入要为 K8s 命令列表评估的函数
Pass in function to be evaluated for K8s Commands list
是否可以在 K8s 的 pod 命令中将函数作为值传递以进行评估?我正在传递 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.
这可行吗?如果是这样,正确的方法是什么?谢谢!
这是 shell 语法,因此您需要 运行 一个 shell 来解释它。
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 ))
相当新的 JVM 版本直接支持理解容器内存限制。如果您至少可以更新到 Java 8u191,那么 it supports the current set of relevant JVM options。您可以设置:
- command:
- /opt/tools/Linux/jdk/openjdk1.8.0_251_x64/bin/java
- -XX:MaxRAMPercentage=70.0
是否可以在 K8s 的 pod 命令中将函数作为值传递以进行评估?我正在传递 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.
这可行吗?如果是这样,正确的方法是什么?谢谢!
这是 shell 语法,因此您需要 运行 一个 shell 来解释它。
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 ))
相当新的 JVM 版本直接支持理解容器内存限制。如果您至少可以更新到 Java 8u191,那么 it supports the current set of relevant JVM options。您可以设置:
- command:
- /opt/tools/Linux/jdk/openjdk1.8.0_251_x64/bin/java
- -XX:MaxRAMPercentage=70.0