我正在尝试在带有minikube的Azure虚拟机上运行hello-node服务并从外部对其进行访问。
minikube start --driver = virtualbox
创建的部署
kubectl创建部署hello-node --image = k8s.gcr.io / echoserver
暴露的部署
kubectl公开部署hello-node --type = LoadBalancer --port = 8080
假设kubectl get services说:
hello-节点LoadBalancer 1.1.1.1 8080:31382 / TCP
azure VM的公共IP为2.2.2.2,私有IP为10.10.10.10,虚拟机IP为192.168.99.1/24
如何从群集网络外部的浏览器访问该服务?
答案 0 :(得分:2)
在您的情况下,您需要使用--type = NodePort来创建公开部署的服务对象。 type = LoadBalancer服务由外部云提供商提供支持。
kubectl expose deployment hello-node --type=NodePort --name=hello-node-service
显示有关服务的信息:
kubectl describe services hello-node-service
输出应与此类似:
Name: example-service
Namespace: default
Labels: run=load-balancer-example
Annotations: <none>
Selector: run=load-balancer-example
Type: NodePort
IP: 10.32.0.16
Port: <unset> 8080/TCP
TargetPort: 8080/TCP
NodePort: <unset> 31496/TCP
Endpoints: 10.200.1.4:8080,10.200.2.5:8080
Session Affinity: None
Events: <none>
记下该服务的NodePort值。例如,在前面的输出中,NodePort值为31496。
获取虚拟机的公共IP地址。然后您可以使用以下URL:
http://<public-vm-ip>:<node-port>
请不要忘记在防火墙规则中打开此端口。