外部访问服务

时间:2020-06-16 13:02:56

标签: azure kubernetes

我正在尝试在带有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

如何从群集网络外部的浏览器访问该服务?

1 个答案:

答案 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>

请不要忘记在防火墙规则中打开此端口。