您现在的位置是:亿华云 > 系统运维
如何在 Kubernetes Pod 中注入环境变量及优先级问题
亿华云2025-10-08 23:24:28【系统运维】5人已围观
简介1. Kubernetes Pod 引用环境变量的几种方式1.1 直接 Key/Value可以直接设置 Value 值,也可以将当前 Pod 的信息作为 Value 值。apiVersion: v1
1. Kubernetes Pod 引用环境变量的中注几种方式
1.1 直接 Key/Value可以直接设置 Value 值,也可以将当前 Pod 的入环信息作为 Value 值。
apiVersion: v1
kind: Pod
metadata:
name: envar-demo
labels:
purpose: demonstrate-envars
spec:
containers:
- name: envar-demo-container
image: gcr.io/google-samples/node-hello:1.0
env:
- name: DEMO_GREETING
value: "Hello from the environment"
- name: DEMO_FAREWELL
value: "Such a sweet sorrow"
- name: MY_NODE_NAME
valueFrom:
fieldRef:
fieldPath: spec.nodeName
- name: MY_POD_NAME
valueFrom:
fieldRef:
fieldPath: metadata.name1.2 从 Secret 引用有两种方式引用 Secret 中的境变级问变量:
通过 envFrom 引用 Secret 中全部变量通过 valueFrom 引用 Secret 中指定变量apiVersion: v1
kind: Pod
metadata:
name: secret-env-pod
spec:
containers:
- name: mycontainer
image: redis
envFrom:
- secretRef:
name: secret-config
env:
- name: SECRET_USERNAME
valueFrom:
secretKeyRef:
name: secret-config
key: username
- name: SECRET_PASSWORD
valueFrom:
secretKeyRef:
name: secret-config
key: password1.3 从 ConfigMap 引用有两种方式引用 ConfigMap 中的变量:
通过 envFrom 引用 ConfigMap 中全部变量通过 valueFrom 引用 ConfigMap 中指定变量apiVersion: v1
kind: Pod
metadata:
name: dapi-test-pod
spec:
containers:
- name: test-container
image: k8s.gcr.io/busybox
envFrom:
- configMapRef:
name: configmap-config
env:
- name: SPECIAL_LEVEL_KEY
valueFrom:
configMapKeyRef:
name: special-config
key: special.how
- name: LOG_LEVEL
valueFrom:
configMapKeyRef:
name: env-config
key: log_level2. 变量引用的优先级
从源码中可以看到的实现逻辑是,会初始化一个 Map 存放环境变量,量及然后按照如下步骤进行处理:
按顺序遍历 envFrom 引用的优先 ConfigMap 和 Secret 的 Key/Value按顺序遍历 env 中的设置的 Key/Value由于 Pod 默认开启了 EnableServiceLinks,最后还需要将 Service 相关变量注入优先级是源码下载中注,Service 变量 > Env > EnvFrom,入环其中 EnvFrom 的境变级问优先级是后面覆盖前面。
这里单独说下,量及注入到环境变量中的优先 Service 相关变量:
注入的范围。所在命名空间的中注所有 Service注入的内容。同一命名空间下,入环所有的境变级问服务地址、端口、网站模板量及协议。优先注入的格式。大写字母加下划线的格式,例如ADMIN_WEB_PC_TEST_PORT_80_TCP=tcp://10.233.45.183:80,ADMIN_WEB_PC_TEST_PORT=tcp://10.233.45.183:80,ADMIN_WEB_PC_TEST_PORT_80_TCP_ADDR=10.233.45.183,ADMIN_WEB_PC_TEST_PORT_80_TCP_PORT=80,ADMIN_WEB_PC_TEST_PORT_80_TCP_PROTO=tcp 。如果同一个命名空间下,部署大量服务,每个 Pod 中可能会增加几百个这样的变量。3. 参考
https://img.ydisp.cn/news/20220701/ctkn1pxyyq3.go data-id="l20de63f-pCK01fpn">https://img.ydisp.cn/news/20220701/4d3dzaxulmn.go很赞哦!(9791)
相关文章
- 2016年1月1日:注册价格将降至每年7欧元。
- 基于C++模板,实现三种异步收发数据的方法
- Java中提供了synchronized,为什么还要提供Lock呢?
- 深入Redux--Redux原理及应用三大原则
- .com域名是国际最广泛流行的通用域名,目前全球注册量第一的域名,公司企业注册域名的首选。国际化公司通常会注册该类域名。
- “码”海钩沉:面向Java开发人员的十佳GitHub储存库
- 万字图解Java多线程,不信你学不会!
- 多线程必考的「生产者 - 消费者」模型,看这篇文章就够了
- 前面这两个步骤都是在本机完成的。到这里还没有涉及真正的域名解析服务器,如果在本机中仍然无法完成域名的解析,就会真正请求域名服务器来解析这个域名了。
- 后量子密码硬件加速:计算速度提升2.5倍,ATP减小4.9倍