key*_*rai 6 kubernetes minikube
在运行Minikube时,我想连接到一个服务器,这个服务器有一个烦人的习惯,即通过其pod中的内部IP地址向服务注册表宣布自己.
但是由于遗留原因,我必须首先连接到此注册表并从中检索该服务器的IP地址.从我的开发机器访问这个服务器的唯一方法,在我看来,是桥接到内部网络,所以我可以访问Minikube的网络.是否有捷径可寻?
小智 8
您可以从localhost添加到k8内部网络的路由
使用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
Run Code Online (Sandbox Code Playgroud)
您可以使用kubectl get service
命令找到子网掩码
通过部署测试容器并从localhost连接到测试容器来测试路由
$ 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"}
Run Code Online (Sandbox Code Playgroud)
您还可以添加到K8主站的路由
sudo route -n add 10.0.0.0/24 $(minikube ip)
Run Code Online (Sandbox Code Playgroud)
这仅适用于本地开发,您应该使用NodePort
或LoadBalancer
在生产中公开pod.
如果我理解正确:您正在尝试将服务器从minikube内部暴露给主机网络.这可以通过以下几种方式完成:
第一种是为您的服务器/ pod 创建NodePort服务.然后,您可以运行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 |
|-------------|----------------------|-----------------------------|
Run Code Online (Sandbox Code Playgroud)
第二种是使用kubectl代理并将您想要的端口代理到本地计算机.此方法不需要您创建服务,它应该与您当前的配置一起使用.
kubectl proxy --port=<port-you-want-access-on-server>
Run Code Online (Sandbox Code Playgroud)
这将使代理端口在localhost:port上可用
如果您只是想获取一个pod的IP地址,那么这个命令应该可以工作(如何从Pod中的容器知道一个Pod自己的IP地址?):
kubectl get pod $POD_NAME --template={{.status.podIP}}
Run Code Online (Sandbox Code Playgroud)
此外,如果您只需要访问minikube的内部网络,您可以使用:
minikube ssh
Run Code Online (Sandbox Code Playgroud)
哪个会让你进入minikube的VM
归档时间: |
|
查看次数: |
7233 次 |
最近记录: |