kubernetes服务暴露给主机IP

时间:2017-12-08 07:35:58

标签: kubernetes

我在我的4节点集群上创建了类似的kubernetes服务:

kubectl expose deployment distcc-deploy --name=distccsvc --port=8080
 --target-port=3632 --type=LoadBalancer

问题是如何将此服务公开给外部ip。如果没有外部IP,则无法从外部网络ping或访问此服务端点。

我不确定是否需要更改kubedns或进行某种更改。 理想情况下,我希望服务在主机IP上公开。  像here

一样 假设让我们说 我有一个4节点的虚拟机,我正在运行让我们说nginx服务。我把它作为一个lodabalancer服务公开。如何使用vm中的此服务访问nginx?

假设服务名称为nginxsvc,我有办法http://localhost:32876。我将如何在这里获得4节点vm?

1 个答案:

答案 0 :(得分:1)

LoadBalancer根据您部署kubernetes的位置执行不同的操作。如果您在AWS上部署(使用kops或其他工具),它将创建弹性负载平衡器以公开服务。如果你在GCP上部署它会做类似的事情 - 谷歌术语目前逃脱了我。这些是您的服务的云路由流量中的单独VM。如果您在minikube中玩游戏,LoadBalancer并没有真正做任何事情,它会做一个节点端口,假设用户理解minikube不能提供真正的负载均衡器。

LoadBalancer应该通过一个全新的IP地址公开您的服务。因此,云服务提供商会发生这种情况,他们会使用单独的公共IP地址(GCP提供静态地址,AWS提供DNS)来请求VM。 NodePort将作为运行pod的kubernetes节点上的端口公开。对于一般部署而言,这不是一个可行的解决方案,但在开发时工作正常。