1

我正在运行一个使用volumeClaimTemplates 的statefulset。那里一切都很好。

我还有一个 configmap,我想基本上用这个配置文件投影到的每个 pod 的 pod 名称替换一些条目;例如,如果 configmap 数据是:

ThisHost=<hostname -s>
OtherConfig1=1
OtherConfig1=2
...

然后对于名为 的 statefulset pod mypod-0,配置文件应该包含ThisHost=mypod-0ThisHost=mypod-1for mypod-1

我怎么能这样做?

4

1 回答 1

0

默认情况下,主机名包含在 pod 内的环境变量中,称为HOSTNAME. 如果您首先可以修改 configmap 本身:

  • 挂载 configmap 并将其设置为ThisHost=hostname -s(这将在 pod 的文件系统中使用该文本创建一个文件)
  • 启动时将替换命令传递给 pod(类似于$ sed 's/hostname/$HOSTNAME/g' -i /path/to/configmapfile

基本上,您挂载 configmap,然后将其替换为 pod 中可用的环境变量信息。这只是一个替换操作。

看下面的例子:

apiVersion: v1
kind: Pod
metadata:
name: command-demo
labels:
purpose: demonstrate-command
spec:
containers:
- name: command-demo-container
image: debian
command: ["sed"]
args: ["'s/hostname/$HOSTNAME'", "-i", "/path/to/config/map/mount/point"]
restartPolicy: OnFailure

args 的语法可能需要一些调整,但你明白了。

请让我知道这是否有帮助。

于 2019-12-12T13:37:46.033 回答