我有一个案例,我想将pod的IP地址设置为容器环境变量的一部分,以及端口(例如,可以硬编码为default8080(
类似于下面的内容,但我也需要附加端口作为其中的一部分。所以APPLICATION_SERVER的结果会是111...000:8080,我想是这样的。
- name: APPLICATION_SERVER
valueFrom:
fieldRef:
fieldPath: status.podIP
该信息在向下API 中可用
您正在查找的值可作为env vars从Downward API 获得
- status.podIP-pod的IP地址
- spec.serviceAccountName-pod的服务帐户名称
- spec.nodeName-节点的名称
- status.hostIP-节点的IP
Podspec
apiVersion: v1
kind: Pod
metadata:
name: dapi-envars
spec:
containers:
- name: test-container
image: k8s.gcr.io/busybox
command: [ "sh", "-c"]
args:
- while true; do
echo -en 'n';
echo "Application Server $(APPLICATION_SERVER)";
sleep 10;
done;
env:
- name: MY_POD_IP
valueFrom:
fieldRef:
fieldPath: status.podIP
- name: APPLICATION_SERVER
value: "$(MY_POD_IP):8080"
输出
kubectl logs dapi-envars
Application Server 10.244.0.7:8080
Application Server 10.244.0.7:8080
Application Server 10.244.0.7:8080
Application Server 10.244.0.7:8080
Application Server 10.244.0.7:8080
https://kubernetes.io/docs/tasks/inject-data-application/define-environment-variable-container/
您可以重用已定义的环境变量来定义新的环境变量。例如,在您的情况下,您可以这样做:
- name: POD_IP
valueFrom:
fieldRef:
fieldPath: status.podIP
- name: APPLICATION_SERVER
value: "$(POD_IP):8080"
请确保APPLICATION_SERVER
在POD_IP
之后声明,否则将不起作用。