Kubernetes 从容器访问标签
Kubernetes access labels from containers
当我们为复制控制器创建一个 yml 时,我们可以为正在创建的 pod 提供标签。
apiVersion: v1
kind: ReplicationController
metadata:
name: redis
spec:
template:
metadata:
labels:
app: redis
tier: backend
驻留在此 pod 中的容器能否访问这些标签值?
查看 Downward API,它允许容器更多地了解自身。
从容器内部访问 pod 信息的一种方法是使用环境变量。 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 环境变量从 pod 的字段 spec.nodeName 获取其值。同样我们也可以将容器的字段作为值。
要使用以下命令验证此连接到 pod:
kubectl exec -it pod-env -- /bin/bash
并打印环境变量:
printenv MY_POD_NAME
将信息从 pod 传递到容器的其他方式是使用 downwardAPI:https://kubernetes.io/docs/tasks/inject-data-application/downward-api-volume-expose-pod-information/
当我们为复制控制器创建一个 yml 时,我们可以为正在创建的 pod 提供标签。
apiVersion: v1
kind: ReplicationController
metadata:
name: redis
spec:
template:
metadata:
labels:
app: redis
tier: backend
驻留在此 pod 中的容器能否访问这些标签值?
查看 Downward API,它允许容器更多地了解自身。
从容器内部访问 pod 信息的一种方法是使用环境变量。 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 环境变量从 pod 的字段 spec.nodeName 获取其值。同样我们也可以将容器的字段作为值。 要使用以下命令验证此连接到 pod:
kubectl exec -it pod-env -- /bin/bash
并打印环境变量:
printenv MY_POD_NAME
将信息从 pod 传递到容器的其他方式是使用 downwardAPI:https://kubernetes.io/docs/tasks/inject-data-application/downward-api-volume-expose-pod-information/