通过环境变量将 Pod 信息呈现给容器
Downward API 的能力
下面这些信息可以通过环境变量和 downward API 卷提供给容器:
## 能通过 fieldRef 获得的:
metadata.name // Pod 名称
metadata.namespace // Pod 名字空间
metadata.uid // Pod 的 UID
metadata.labels['<KEY>'] // Pod 标签 <KEY> 的值 (例如, metadata.labels['mylabel'])
metadata.annotations['<KEY>'] // Pod 的注解 <KEY> 的值(例如, metadata.annotations['myannotation'])
metadata.labels // Pod 的所有标签,以 label-key="escaped-label-value" 格式显示,每行显示一个标签
metadata.annotations // Pod 的所有注解,以 annotation-key="escaped-annotation-value" 格式显示,每行显示一个标签
## 以下信息可通过环境变量获得:
status.podIP // 节点 IP
spec.serviceAccountName // Pod 服务帐号名称, 版本要求 v1.4.0-alpha.3
spec.nodeName // 节点名称, 版本要求 v1.4.0-alpha.3
status.hostIP // 节点 IP, 版本要求 v1.7.0-alpha.1
# 例子:
apiVersion: v1
kind: Pod
metadata:
name: dapi-envars-fieldref
spec:
containers:
- name: test-container
image: k8s.gcr.io/busybox
command: [ "sh", "-c"]
args:
- while true; do
echo -en '\n';
printenv MY_NODE_NAME MY_POD_NAME MY_POD_NAMESPACE;
printenv MY_POD_IP MY_POD_SERVICE_ACCOUNT;
sleep 10;
done;
env:
- name: MY_NODE_NAME
valueFrom:
fieldRef:
fieldPath: spec.nodeName
- name: MY_POD_NAME
valueFrom:
fieldRef:
fieldPath: metadata.name
- name: MY_POD_NAMESPACE
valueFrom:
fieldRef:
fieldPath: metadata.namespace
- name: MY_POD_IP
valueFrom:
fieldRef:
fieldPath: status.podIP
- name: MY_POD_SERVICE_ACCOUNT
valueFrom:
fieldRef:
fieldPath: spec.serviceAccountName
restartPolicy: Never
## 能通过 resourceFieldRef 获得的:
容器的 CPU 约束值
容器的 CPU 请求值
容器的内存约束值
容器的内存请求值
容器的巨页限制值(前提是启用了 DownwardAPIHugePages 特性门控)
容器的巨页请求值(前提是启用了 DownwardAPIHugePages 特性门控)
容器的临时存储约束值
容器的临时存储请求值
# 例子
apiVersion: v1
kind: Pod
metadata:
name: dapi-envars-resourcefieldref
spec:
containers:
- name: test-container
image: k8s.gcr.io/busybox:1.24
command: [ "sh", "-c"]
args:
- while true; do
echo -en '\n';
printenv MY_CPU_REQUEST MY_CPU_LIMIT;
printenv MY_MEM_REQUEST MY_MEM_LIMIT;
sleep 10;
done;
resources:
requests:
memory: "32Mi"
cpu: "125m"
limits:
memory: "64Mi"
cpu: "250m"
env:
- name: MY_CPU_REQUEST
valueFrom:
resourceFieldRef:
containerName: test-container
resource: requests.cpu
- name: MY_CPU_LIMIT
valueFrom:
resourceFieldRef:
containerName: test-container
resource: limits.cpu
- name: MY_MEM_REQUEST
valueFrom:
resourceFieldRef:
containerName: test-container
resource: requests.memory
- name: MY_MEM_LIMIT
valueFrom:
resourceFieldRef:
containerName: test-container
resource: limits.memory
restartPolicy: Never

浙公网安备 33010602011771号