我正在尝试引导kubernetes集群中的etcd集群,下面是pod定义的相关部分
- name: etcd
image: quay.io/coreos/etcd:v2.2.0
ports:
- containerPort: 2379
- containerPort: 2380
- containerPort: 4001
env:
- name: POD_IP
valueFrom:
fieldRef:
fieldPath: status.podIP
args:
- "-name"
- "etcd0"
- "-advertise-client-urls"
- http://${POD_IP}:2379,http://${POD_IP}:4001
- "-initial-advertise-peer-urls"
- "http://${POD_IP}:2380"
- "-listen-peer-urls"
- "http://0.0.0.0:2380"
- "-initial-cluster"
- 'etcd0=http://${POD_IP}:2380'
- "-initial-cluster-state"
- "new"然而,当我应用POD_IP环境变量时,它似乎被破坏了,这从日志中可以看出:
advertise URLs of "etcd0" do not match in --initial-advertise-peer-urls [http://$%7BPOD_IP%7D:2380] and --initial-cluster [http://$%7BPOD_IP%7D:2380]有没有人见过类似的东西?
发布于 2018-11-18 12:38:03
这些参数不是由shell解释的,所以大括号不会得到您想要的行为。如果要在arg中使用envav值,可以使用容器的环境扩展变量引用,如$(VAR_NAME)。
发布于 2018-11-18 06:26:07
初始化容器用例:
https://kubernetes.io/docs/concepts/workloads/pods/init-containers/
将值放入配置文件中,并运行模板工具来动态生成主应用程序容器的配置文件。例如,将Jinja值放置在配置中,并使用POD_IP
生成主应用程序配置文件
https://stackoverflow.com/questions/53355665
复制相似问题