接下来是 Downward API,它的作用是:让 Pod 里的容器能够直接获取到这个 Pod API 对象本身的信息。
apiVersion: v1
kind: Pod
metadata:
name: test-downwardapi-volume
labels:
zone: us-est-coast
cluster: test-cluster1
rack: rack-22
spec:
containers:
- name: client-container
image: k8s.gcr.io/busybox
command: ["sh", "-c"]
args:
- while true; do
if [[ -e /etc/podinfo/labels ]]; then
echo -en '\n\n'; cat /etc/podinfo/labels; fi;
sleep 5;
done;
volumeMounts:
- name: podinfo
mountPath: /etc/podinfo
readOnly: false
volumes:
- name: podinfo
projected:
sources:
- downwardAPI:
items:
- path: "labels"
fieldRef:
fieldPath: metadata.labels
- path: "labels" 保存在labels文件中
只不过这次 Volume 的数据来源,变成了 Downward API。而这个 Downward API Volume,
则声明了要暴露 Pod 的 metadata.labels 信息给容器。
[root@dock01 ~]# cat labels.yaml
apiVersion: v1
kind: Pod
metadata:
name: labels-downwardapi-volume
labels:
zone: us-est-coast
cluster: test-cluster1
rack: rack-22
spec:
containers:
- name: client-container
image: busybox
command: ["sh", "-c"]
args:
- while true; do
if [[ -e /etc/podinfo/zjzc_20210124 ]]; then
echo -en '\n\n'; cat /etc/podinfo/zjzc_20210124; fi;
sleep 5;
done;
volumeMounts:
- name: podinfo
mountPath: /etc/podinfo
readOnly: false
volumes:
- name: podinfo
projected:
sources:
- downwardAPI:
items:
- path: "zjzc_20210124"
fieldRef:
fieldPath: metadata.uid
[root@dock01 ~]# kubectl create -f labels.yaml
pod/labels-downwardapi-volume created
[root@dock01 ~]# kubectl exec -it labels-downwardapi-volume -- /bin/sh
/ # cat /etc/podinfo/zjzc_20210124
6ba72e64-bb95-4d70-936a-0f0b1f78a822/ #