我想创建一个statefulset,它运行一个创建设备的映像。我希望每个pod创建独特的设备,所以第一个将做1-20,第二个21-40等。图像接受一个标志,指示从哪个索引开始。我正在努力实现这一点,以便标志对于statefulset中的每个pod都是唯一的。
我尝试使用一个init容器,它在卷上创建一个文件,并将pod编号放在该文件上。这正如预期的那样起作用。我也可以从主容器访问这个文件。如何将此文件中的值作为容器的参数传递?我尝试在args部分直接访问它,并创建一个环境变量,但都不起作用。理想情况下,这样的东西会起作用,但不会:
env:
- name: index
value: "cat ./pod/pod.toml"
args: ["--start-index","$(index)"]
1条答案
按热度按时间7ivaypg91#
您可以通过downward api将pod名称公开为环境变量:
您可以使用此变量在shell脚本中计算索引,然后使用适当的参数启动服务:
Pod 0将运行
--start-index 1
,Pod 1将运行--start-index 21
,依此类推。请注意,这确实需要覆盖映像中的
ENTRYPOINT
(通过在清单中设置command
),因为您需要在shell脚本中执行计算。这是简单还是复杂取决于您正在使用的图像,以及它是否具有广泛的现有ENTRYPOINT
脚本。