即无需在容器规范中配置任何变量?我想可能有一些环境变量,其中暴露了 Kubernetes 命名空间的名称,但我在文档中没有看到任何内容。
想知道这是否可能,或者我需要将命名空间的名称作为变量注入容器规范中。
答案1
您可以使用字段引用。
看一下这个例子:
apiVersion: v1
kind: Pod
metadata:
name: envars-fieldref-example
spec:
containers:
- name: test
image: k8s.gcr.io/busybox
command: [ "sh", "-c"]
args:
- while true; do
echo -en '\n';
printenv YOUR_POD_NAMESPACE, YOUR_POD_IP;
sleep 10;
done;
env:
- name: YOUR_POD_NAMESPACE
valueFrom:
fieldRef:
fieldPath: metadata.namespace
- name: YOUR_POD_IP
valueFrom:
fieldRef:
fieldPath: status.podIP
在配置文件中,你可以看到五个环境变量。env
字段是一个数组环境变量。数组中的第一个元素指定YOUR_POD_NAMESPACE
环境变量从 Pod 的metadata.namespace
字段中获取其值。类似地,其他环境变量从 Pod 字段中获取其名称。
查看更多:env-pod。