【问题标题】:Pass environment variable through service in Kubernetes?通过 Kubernetes 中的服务传递环境变量?
【发布时间】:2015-11-19 01:50:51
【问题描述】:

有没有办法通过 Kubernetes 中的服务传递环境变量?

我尝试将它传递给我的服务 yaml,如下所示:

apiVersion: v1
kind: Service
metadata:
  labels:
    name: kafka
  name: kafka
spec:
  ports:
    - port: 9092
    selector:
      name: kafka
  env:
    - name: BROKER_ID
      value: "1"

服务正在被 kubectl 消费,并被创建。

我已确认服务已通过env | grep KAFKA 连接到我的容器,并且变量的输出大大增加,正如我的服务启动时所预期的那样。

但是,我想传入自定义环境变量,这些变量必须根据它所在的容器实例而有所不同。

这可能吗?

【问题讨论】:

    标签: cluster-computing kubernetes


    【解决方案1】:

    Kubernetes 的设计方式将服务与 Pod 分离。您不能将 Secret 或 env var 注入到正在运行的 Pod 中。您想要的是将 Pod 配置为使用 env var 或 Secret。

    【讨论】:

    • 这篇文章与Kafka on Kubernetes multi-node相关。所以我要做的是确保可以传递给主节点和 Zookeeper 的 Kafka 节点的代理 ID。有人想出了为此使用剥离的 Pod-ips 的想法。你有更好的建议吗?问题当然是 Kubernetes 本身并不能保证单个 Pod “永远”活着,但 Zookeeper 中的配置文件是基于静态配置的。
    【解决方案2】:

    这是迄今为止我发现的最好的方法:(需要阅读) https://github.com/kubernetes/kubernetes/issues/4710

    大致上,在执行脚本之前,在已挂载的文件中创建一个秘密并获取它。

    【讨论】:

    • 您能举个例子吗?我是否将“env”替换为“secret”,并以某种方式引用一个秘密卷?与独立 Kubernetes 相比,这更侧重于 Openshift 吗? PS:上次你发的帖子我也看了,但我真的不明白。 :)
    • 如果您在票证链接中阅读了一个示例,请搜索“Example of current way it can be done today”
    • 这最终成为创建动态环境变量的好方法。
    猜你喜欢
    • 1970-01-01
    • 2022-11-03
    • 1970-01-01
    • 2012-08-24
    • 1970-01-01
    • 2020-03-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多