2016-04-14 78 views
0

我在'裸机'Ubuntu机器上运行kubernetes群集,如此处所述http://kubernetes.io/docs/getting-started-guides/ubuntu/。我创建了一个负载平衡器服务后,我可以看到其IP地址,运行:如何从裸机群集中公开kubernetes服务

kubectl describe services sonar 
Name:   sonar 
IP:    10.0.0.170 
Port:   <unset> 9000/TCP 
Endpoints:  172.17.0.2:9000 
. . . 

然后,我与运行kubernetes集群之外nginx的揭露这个世界。太好了,但在下一次服务部署时,ip会发生变化。我该如何处理这个问题?修复IP,使用环境变量,任何其他方式?

回答

2

没有看到您的服务定义,我听起来像是想要一个NodePort服务类型而不是LoadBalancer。使用NodePort服务,您只需将NGINX指向Ubuntu机器的IP地址和服务定义中指定的端口即可。只要Ubuntu机器的地址是稳定的,你应该没问题。

如果您在多台机器上运行Kubernetes,只需将所有机器的IP地址添加到您的NGINX机器并让它执行负载平衡。

有关不同服务类型的更多信息,请访问:http://kubernetes.io/docs/user-guide/services/#publishing-services---service-types

+0

非常感谢,从我在文档中阅读的内容中,我需要'NodePort'而不是'LoadBalancer'。 –

2

免责声明:我对Stackpoint工作,学习不同的选择,我们决定使用我们的产品进入控制器,所以我的答案是偏向于入节点之后。

With ingress + ingress Controller您可以将外部负载平衡到吊舱端点。虽然服务是其主要目标是追踪豆荚并创建路线(等等)的资源,但入口是定义平衡规则的更好方式。现在它:

  • 支持主机名
  • 支持使用秘密TLS规范
  • 可以根据路线路径
  • 可以定义默认后端

与入口的最大缺点是你需要一个入口控制器来监听Ingress,解析端点,将配置更改传送给平衡器,并在必要时重新加载。由于我们控制着Ingress告诉平衡器的内容,因此我们可以配置Keepalive,粘性会话,健康检查等等。

使用服务,您不完全控制所有这些参数。

在kubernetes/contrib上有一个nginx example应该与大多数场景匹配。在Stackpoint,我们使用我们自己的haproxy入口控制器,并且对结果非常满意(并且将从我们的用户界面简称为Ingress管理)

ingress kubernetes page包含更多信息,并在底部有一些链接替代品。

相关问题