kubernetes pod yaml将pod ip和端口设置为env-var



我有一个案例,我想将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_SERVERPOD_IP之后声明,否则将不起作用。

最新更新