linux - 定义环境变量引用容器的变量环境 [kubernetes]
问题描述
我有一个用于 Spring Boot 应用程序的 K8s 部署我想创建一个.hprof
带有 pod 名称 ($hostname)的转储文件
我的JAVA_OPTIONS
参数是一个变量环境我想引用父级中的另一个变量JAVA_Options
containers:
- env:
- name: SPRING_PROFILES_ACTIVE
value: prod,swagger
- name: JAVA_OPTS
value: ' -XX:MaxRAMPercentage=50 -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/jvm-data/$HOSTNAME.hprof'
我期望的是有一个包含主机名的变量:
$ echo $JAVA_OPTS -XX:MaxRAMPercentage=50 -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/jvm-data/myPodNameStaging.hprof
结果是:
$HOSTNAME.hprof
设置为字符串。
我也尝试了很多组合$(HOSTNAME)
${HOSTNAME}
。我总是得到变量的名称而不是内容值。
我的问题是:如何参考$HOSTNAME
解决方案
这是不可能的。您将需要以其他方式定义这些或以其他方式自行处理插值。一个常见的选项是这样的:
command:
- sh
- -c
- |
JAVA_OPTS="asdfasdf" java -whatever
但这确实需要完全覆盖来自底层容器的命令,这很烦人。也就是说,您可以在卷路径中进行有限的替换,因此可能会在该级别处理它,而不是针对这种特殊情况。
推荐阅读
- laravel - “NPM install”命令行无法在 LARAVEL 项目目录中运行
- amazon-web-services - 在通过 Kops 在 AWS 中创建的 kubernetes 中创建 nlb-ip 负载均衡器
- c# - 从 api 获取对象列表的通用任务
- firebase-storage - Firebase 存储文件可供所有人访问
- python - python, xml.etree, 使用命名空间解析 XML
- java - 使用 JSF 升级 JBoss 7.2 - 范围类型 javax.enterprise.context.SessionScoped 没有活动上下文
- php - 无法使用 symfony 保存静态数据
- python - 读取和写入变量到文件python
- c++ - LeetCode(不重复字符的最长子串)
- python - Django 不一致的查询集结果