# DownwardAPI - 加载宿主机信息到pod
# case 1
[15:56:47 root@master1 storage]#cat 23-storage-downwardapi-env-test.yaml
apiVersion: v1
kind: Pod
metadata:
name: downwardapi-env-test
labels:
app: downwardapi-env
spec:
containers:
- name: downwardapi-env-test
image: 10.0.0.55:80/mykubernetes/pod_test:v0.1
resources:
requests:
memory: "32Mi"
cpu: "250m"
limits:
memory: "64Mi"
cpu: "500m"
env:
- name: THIS_POD_NAME
valueFrom:
fieldRef:
fieldPath: metadata.name
- name: THIS_POD_NAMESPACE
valueFrom:
fieldRef:
fieldPath: metadata.namespace
- name: THIS_APP_LABEL
valueFrom:
fieldRef:
fieldPath: metadata.labels['app']
- name: THIS_CPU_LIMIT
valueFrom:
resourceFieldRef:
resource: limits.cpu
- name: THIS_MEM_REQUEST
valueFrom:
resourceFieldRef:
resource: requests.memory
divisor: 1Mi
[15:56:51 root@master1 storage]#kubectl apply -f 23-storage-downwardapi-env-test.yaml
pod/downwardapi-env-test created
[15:57:01 root@master1 storage]#kubectl get all -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
pod/downwardapi-env-test 1/1 Running 0 6s 10.244.3.7 node1.noisedu.cn <none> <none>
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE SELECTOR
service/kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 7d16h <none>
[15:57:52 root@master1 storage]#kubectl exec -it downwardapi-env-test -- env
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
HOSTNAME=downwardapi-env-test
TERM=xterm
THIS_POD_NAME=downwardapi-env-test
THIS_POD_NAMESPACE=default
THIS_APP_LABEL=downwardapi-env
THIS_CPU_LIMIT=1
THIS_MEM_REQUEST=32
KUBERNETES_PORT=tcp://10.96.0.1:443
KUBERNETES_PORT_443_TCP=tcp://10.96.0.1:443
KUBERNETES_PORT_443_TCP_PROTO=tcp
KUBERNETES_PORT_443_TCP_PORT=443
KUBERNETES_PORT_443_TCP_ADDR=10.96.0.1
KUBERNETES_SERVICE_HOST=10.96.0.1
KUBERNETES_SERVICE_PORT=443
KUBERNETES_SERVICE_PORT_HTTPS=443
DEPLOYENV=Production
RELEASE=Stable
PS1=[\u@\h \w]\$
HOME=/root
# case 2
[15:59:35 root@master1 storage]#cat 24-storage-downwardapi-volume-test.yaml
kind: Pod
apiVersion: v1
metadata:
name: downwardapi-volume-test
labels:
zone: Shanghai
rack: pudong001
app: redis-master
annotations:
region: Asia-China
spec:
containers:
- name: downwardapi-volume-test
image: 10.0.0.55:80/mykubernetes/pod_test:v0.1
resources:
requests:
memory: "32Mi"
cpu: "250m"
limits:
memory: "64Mi"
cpu: "500m"
volumeMounts:
- name: podinfo
mountPath: /etc/podinfo
readOnly: false
volumes:
- name: podinfo
downwardAPI:
defaultMode: 420
items:
- fieldRef:
fieldPath: metadata.namespace
path: pod_namespace
- fieldRef:
fieldPath: metadata.labels
path: pod_labels
- fieldRef:
fieldPath: metadata.annotations
path: pod_annotations
- resourceFieldRef:
containerName: downwardapi-volume-test
resource: limits.cpu
path: "cpu_limit"
- resourceFieldRef:
containerName: downwardapi-volume-test
resource: requests.memory
divisor: "1Mi"
path: "mem_request"
[16:01:11 root@master1 storage]#kubectl apply -f 24-storage-downwardapi-volume-test.yaml
pod/downwardapi-volume-test created
[16:02:03 root@master1 storage]#kubectl get all -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
pod/downwardapi-volume-test 1/1 Running 0 9s 10.244.4.4 node2.noisedu.cn <none> <none>
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE SELECTOR
service/kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 7d16h <none>
[16:02:50 root@master1 storage]#kubectl exec -it downwardapi-volume-test -- cat /etc/podinfo/pod_labels
app="redis-master"
rack="pudong001"
zone="Shanghai"[16:02:51 root@master1 storage]#kubectl exec -it downwardapi-volume-test -- cat /etc/podinfo/pod_namespace
default