当我们为复制控制器创建yml时,我们可以为正在创建的pod提供标签。
apiVersion: v1
kind: ReplicationController
metadata:
name: redis
spec:
template:
metadata:
labels:
app: redis
tier: backend
驻留在此pod中的容器可以访问这些标签值吗?
答案 0 :(得分:4)
查看Downward API,它允许容器更多地了解自己。
答案 1 :(得分:0)
从容器内部访问pod信息的一种方法是使用环境变量。吊舱的yaml文件为:
apiVersion: v1
kind: Pod
metadata:
name: pod-env
spec:
containers:
- name: test-container
image: ubuntu
command: [ "sh", "-c"]
args:
- while true; do
echo -en '\n';
printenv MY_NODE_NAME MY_POD_NAME;
printenv MY_POD_IP
sleep 1000;
done;
env:
- name: MY_NODE_NAME
valueFrom:
fieldRef:
fieldPath: spec.nodeName
- name: MY_POD_NAME
valueFrom:
fieldRef:
fieldPath: metadata.name
- name: MY_POD_IP
valueFrom:
fieldRef:
fieldPath: status.podIP
restartPolicy: Never
mY_POD_NAME环境变量从容器的字段spec.nodeName中获取其值。同样,我们也可以将字段的字段作为值。 要验证此连接,请使用以下命令:
kubectl exec -it pod-env -- /bin/bash
并打印环境变量:
printenv MY_POD_NAME
将信息从吊舱传递到容器的其他方法是使用向下API:https://kubernetes.io/docs/tasks/inject-data-application/downward-api-volume-expose-pod-information/