此文为学习《Kubernetes权威指南》的相关笔记
学习笔记:
正如名字所表示的,Downward API是一种向下传递信息的接口,所谓向下,是Pod向其包含的容器传递,传递的内容为自身属性,主要传递方式仍然是容器接收外界信息的两大途径:环境变量和Volume,从目前学习来看,这个接口可以向容器提供的信息包括:所属Pod的名称、命名空间、IP地址,Pod为自身设置的资源限制、Pod所拥有的Labels和Annotations.
在我的理解里,Downward API加强了容器的自我认知功能,能够更好的感知自己所属Pod的信息,以便完善自身功能,目前能想到的应用场景如:根据上面提供给自己的资源限制调整自己的运行状态、根据Pod信息来决定自己的实际运行方式来提高可移植性,这个功能发挥的应用场景仍然有待学习。
下面是Downward API的运行实例:
1、通过环境变量的方式将Pod信息注入容器
新建Pod配置文件dapi-test-pod.yaml,在spec.containers.env中指定环境变量来源为Downward API
设置在容器运行时打印当前环境变量
apiVersion: v1
kind: Pod
metadata:
name: dapi-test-pod
spec:
containers:
- name: test-container
image: busybox
command: ["/bin/sh","-c","env"]
env:
- name: MY_POD_NAME
valueFrom:
fieldRef:
fieldPath: metadata.name #Pod名称
- name: MY_POD_NAMESPACE
valueFrom:
fieldRef:
fieldPath: metadata.namespace #所属命名空间
- name: MY_POD_IP
valueFrom:
fieldRef:
fieldPath: status.podIP #Pod的IP