2015-07-21 54 views
2

我想了解处理有几个节点和一个主节点的Kubernetes群集的好方法。 我在我的公司的云中托管集群,普通的Ubuntu盒(因此没有Google Cloud或AWS)。为无状态web应用程序创建多节点Kubernetes群集

每个窗格包含webapp(这是无状态的),我通过复制控制器运行任意数量的窗格。

我看到与服务,我可以申报PublicIPs但是这是令人困惑,因为在我的奴才节点添加ip地址 后,每个ip只公开它运行的pod,它不会做任何形式的负载平衡。因此, 如果一个节点没有任何活动的pod运行(因为创建的pod是在节点间随机分配的),它只是超时,并且我结束了一些不响应的IP地址。我理解这个错误吗?

我该如何真正地为我的web应用程序做一个适当的外部负载平衡?我应该在Pod级别上进行负载平衡,而不是使用Service? 如果是这样,豆荚被认为是致命的,他们可能动态死亡和出生,我如何跟踪这一点?

回答

2

最近PublicIP的事情正在发生变化,我不知道它到底在哪里。但是,服务是您在应用程序中引用的IP地址和端口。换句话说,如果我创建了一个数据库,我将它创建为一个pod(带或不带复制控制器)。但是,我不会连接到其他应用程序的Pod。我连接到了解该吊舱的服务(通过标签选择器)。这很重要,原因很多。

  1. 如果数据库失败并重新创建一个不同的主机上,还是访问它的应用程序引用(固定)服务的IP地址,kubernetes代理拿得到请求发送到正确吊舱的照顾。
  2. 服务地址为所有Kubernetes节点所知。任何节点都可以正确代理请求。

我认为这个主题的变体适用于您的问题。您可能会考虑创建一个外部负载平衡器,将流量转发到特定(Web)服务的所有节点。如果节点发生故障,您仍然需要将节点从平衡器的目标中取出,但是,我认为任何节点都会转发任何服务的流量,而不管该服务是否在该节点上。

所有这一切说,我没有外部(公共)IP地址负载平衡的直接经验集群,所以有可能更好的技术。我试图做的主要观点是,无论节点是否具有吊舱,节点都会将请求代理到适当的吊舱。

-g