在運行Minikube時,我想連接到一個服務器,該服務器有惱人的習慣,使用其內部IP地址向服務註冊表宣告自己。將內部Kubernetes IP地址路由到主機系統
但是,由於遺留原因,我必須首先連接到此註冊表,並從中檢索該服務器的IP地址。從我的開發機器訪問此服務器的唯一方法是,我在橋接內部網絡,因此我可以訪問Minikube的網絡。是否有捷徑可尋?
在運行Minikube時,我想連接到一個服務器,該服務器有惱人的習慣,使用其內部IP地址向服務註冊表宣告自己。將內部Kubernetes IP地址路由到主機系統
但是,由於遺留原因,我必須首先連接到此註冊表,並從中檢索該服務器的IP地址。從我的開發機器訪問此服務器的唯一方法是,我在橋接內部網絡,因此我可以訪問Minikube的網絡。是否有捷徑可尋?
如果我理解正確:您正試圖將minikube內的服務器公開到您的主機網絡。這可以通過幾種方法完成:
首先是爲您的服務器/吊艙創建一個NodePort Service。然後,您可以運行minikube service list
獲得網址爲您服務:
$ minikube service list
|-------------|----------------------|-----------------------------|
| NAMESPACE | NAME | URL |
|-------------|----------------------|-----------------------------|
| default | kubernetes | No node port |
| default | <your-service> | http://192.168.99.100:<port>|
| kube-system | kube-dns | No node port |
| kube-system | kubernetes-dashboard | http://192.168.99.100:30000 |
|-------------|----------------------|-----------------------------|
二是使用kubectl proxy和代理您需要的端口到本地機器。此方法不需要您創建服務,它應該適用於您當前的配置。
kubectl proxy --port=<port-you-want-access-on-server>
這一操作將使得可在本地主機的代理端口:端口
如果你只是想獲得一個吊艙的IP地址,該命令應(從How to know a Pod's own IP address from a container in the Pod?)工作:
kubectl get pod $POD_NAME --template={{.status.podIP}}
此外,如果你只需要訪問minikube的內部網絡,你可以使用:
minikube ssh
這將下降到minikube的VM
您可以從本地主機
使用minikube IP地址
$ sudo ip route add 172.17.0.0/16 via $(minikube ip) # linux
$ sudo route -n add 172.17.0.0/16 $(minikube ip) # OSX
子網掩碼添加路由到內部網絡的路由添加到K8內部網絡可以使用kubectl get service
命令發現
通過部署測試容器並從本地主機連接到它來測試路由
$ kubectl run monolith --image=kelseyhightower/monolith:1.0.0 --port=80
$ IP=$(kubectl get pod -l run=monolith -o jsonpath='{.items[0].status.podIP }')
$ curl http://$IP
{"message":"Hello"}
您還可以添加一個路由K8主
sudo route -n add 10.0.0.0/24 $(minikube ip)
這是唯一有用的地方發展,你應該使用NodePort
或LoadBalancer
在生產中暴露出的豆莢。
由於kubernetes覆蓋網絡的子網掩碼已經改變,所以我不想再用minikube 0.24工作 - 我估計是'10.0.0.0/8'。 – Peter
它是'10.96.0.0/12'參見[constant.go](https://github.com/kubernetes/minikube/blob/master/pkg/util/constants.go) – Peter