网上找了很多办法都没用,自己琢磨了下,在环境变量里设置fieldRef读取status.hostIP的值,这个其实就是宿主机的值,再在Pod里通过环境变量读取就好了。
同理一样可以获得节点名称,所在的命名空间等
fieldRef<Object>:当前Pod资源的指定字段,目前支持使用的字段包括 metadata.name、metadata.namespace、metadata.labels、metadata.annotations、spec.nodeName、spec.serviceAccountName、status.hostIP和status.podIP。
resourceFieldRef<Object>:当前容器的特定系统资源的最小值(配额)或最大值(限额),目前支持的引用包括limits.cpu、limts.ephemeral-storage、requests、cpu、requests.memory、requests.ephemeral-storage。
这是一个yaml示例
apiVersion: v1
kind: Pod
metadata:
name: env-demo
labels:
purpose: demonstrate-environment-variables
spec:
containers:
- name: env-demo-container
image: busybox
command: [ "httpd" ]
args: [ "-f" ]
env:
- name: HELLO_WORLD
value: just a demo
- name: MY_NODE_NAME
valueFrom:
fieldRef:
fieldPath: spec.nodeName
- name: MY_NODE_IP
valueFrom:
fieldRef:
fieldPath: status.hostIP
- name: MY_POD_NAMESPACE
valueFrom:
fieldRef:
fieldPath: metadata.namespace
restartPolicy: OnFailure