【发布时间】:2020-06-28 23:56:16
【问题描述】:
我有一个具有以下规格的容器:
containers:
- name: test-container
image: REDACTED
env:
- name: DISPLAY
value: ":10.0" <---------------------
- name: NODE_ENV
value: "production"
- name: ENDPOINT
value: REDACTED
ports:
- containerPort: 8080
volumeMounts:
- name: x11
mountPath: /tmp/.X11-unix
volumes:
- name: x11
hostPath:
path: /tmp/.X11-unix
旁注:这样做是允许我在主机节点上渲染组件,但在我的容器内执行计算。
现在我已将 DISPLAY 硬编码为“:10.0”,但我想做类似的事情:
env:
- name: DISPLAY
value: ":$HOST_DISPLAY"
这将挂载主机节点的 DISPLAY 变量(而不是硬编码和猜测它会是什么),这样如果一个节点设置了“:0”或任何其他变量,它将动态转发/注入到容器中。
有什么方法可以做到这一点?如果有帮助,我可以使用 ansible 运算符
编辑以进一步解释:
想象一个 pod,它是一个简单的 http 服务器,当你用浏览器点击它时,它会向你显示它正在运行的节点的操作系统。假设该节点有一个名为 OPERATING_SYSTEM 的环境变量。节点 A 的 OPERATING_SYSTEM=Windows 节点 B 的 OPERATING_SYSTEM=Linux。我如何配置这个 pod 来显示节点的操作系统。 不是容器操作系统
另一个例子:
想象一个 pod 是一个简单的 http 服务器,当您使用浏览器访问它时,它会返回给您运行它的节点的 ID。假设节点 1 有一个名为 NODE_ID=123 的环境变量,而节点 2 有一个名为 NODE_ID=456 的环境变量。当任何 pod 被调度到这两个任意节点之一时,它可以访问这些 NODE 环境变量以正确显示它正在哪个节点上运行
我几乎想这样做,除了 node.fields:https://v1-15.docs.kubernetes.io/docs/tasks/inject-data-application/environment-variable-expose-pod-information/
【问题讨论】:
-
我仍然不确定你想要实现什么。您可以考虑使用
ConfigMap、Kustomize或initContainer,但是您需要以不同的方式描述此场景。 -
我正在尝试从运行 pod 的节点中提取环境变量,并能够从 pod/容器中访问该环境变量
标签: kubernetes google-kubernetes-engine kubernetes-pod