首页 > 解决方案 > Kubernetes 环境变量未在命令中正确使用

问题描述

我正在尝试在我的 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]

有没有人见过类似的东西?

标签: kubernetes

解决方案


参数不是由 shell 解释的,所以花括号不会得到你想要的行为。如果要在 arg 中使用 envvar 值,$(VAR_NAME)则使用容器的环境扩展变量引用。


推荐阅读