從容器內部尋址主機節點的正確方法是什么?
我有一個駐留在主機節點上的容器,并且主機節點上運行著一個 Web 服務器。容器需要能夠訪問主機節點上的 Web 服務器。
我希望找到主機節點的別名,例如 node..cluster.local (10.1.111.192),但我在檔案中找不到它。
環境是啟用了 kubedns 的 microk8s。

calico介面上分配給主機的地址可以從節點內部訪問:10.1.111.192,我在檔案中發現我可以添加一個hostalias-pod,所以我可以添加別名,例如。節點本地(10.1.111.192)。https://kubernetes.io/docs/tasks/network/customize-hosts-file-for-pods/
對 IP 進行硬編碼似乎并不優雅,但我處于單節點環境中,因此節點地址是否不變(這會改變嗎?)并不重要。這是一個我正在嘗試學習的小專案,所以我想找到最正確的方法來做到這一點。
uj5u.com熱心網友回復:
您可以使用向下 API獲取底層主機名,值得一提的是,它將回傳IP運行 pod 的節點的名稱。
env:
- name: HOST_IP
valueFrom:
fieldRef:
fieldPath: status.hostIP
因此,從 pod 內部,您將能夠訪問該特定主機
curl $HOST_IP:8080
一個完整的例子
apiVersion: v1
kind: Pod
metadata:
name: print-host-ip
spec:
containers:
- name: print-host-ip
image: gcr.io/google_containers/busybox
env:
- name: HOST_IP
valueFrom:
fieldRef:
fieldPath: status.hostIP
command: [ "/bin/sh", "-c", 'echo "host ip is $HOST_IP"' ]
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/526527.html
