【发布时间】:2019-02-22 16:17:20
【问题描述】:
我正在尝试将 ReplicationController 的随机生成的 pod ID 扩展(即multiverse-{replicaID})注入到容器的环境变量中。我可以手动获取主机名并从那里提取它,但由于兼容性原因,我希望不必将特殊情况添加到容器内运行的脚本中。
如果一个 pod 被命名为 multiverse-nffj1,INSTANCE_ID 应该等于 nffj1。我搜索了文档,但一无所获。
apiVersion: v1
kind: ReplicationController
metadata:
name: multiverse
spec:
replicas: 3
template:
spec:
containers:
- env:
- name: INSTANCE_ID
value: $(replicaID)
我尝试将command 添加到控制器的模板配置中以从主机名创建环境变量,但不知道如何使该环境变量可用于正在运行的脚本。
是否存在我缺少的变量,或者此功能不存在?如果没有,是否有人对如何在不编辑容器内的脚本的情况下使其工作有任何想法?
【问题讨论】:
-
对于“不编辑脚本”部分,您是否愿意劫持
command:将其转换为command: ["/bin/bash", "-c", "...; exec /dockerfile-entrypoint.sh"],以便它仍然运行脚本未修改但运行您的脚本首先? -
理论上可行。老实说,似乎有点hacky。除非有真正的解决方案,否则我会暂时这样做。
-
据我所知,没有可以从清单中执行的“可执行”操作;您可以访问一些元数据字段,但它们都不包含您正在寻找的东西(再次,AFAIK)
标签: kubernetes