为无状态Web应用程序创build多节点Kubernetes群集

我试图理解处理有几个节点和一个主节点的Kubernetes集群的好方法。 我在我的公司的云中托pipe集群,简单的Ubuntu的盒子(所以没有谷歌云或AWS)。

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

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

我怎样才能真正做我的networking应用程序的正确的外部负载平衡? 我应该在Pod级别上进行负载平衡而不是使用Service? 如果是这样,豆荚被认为是致命的,他们可能dynamic死亡和出生,我怎么跟踪这个?

PublicIP的东西最近在改变,我不知道它到底在哪里。 但是,服务是您在应用程序中引用 IP地址和端口。 换句话说,如果我创build一个数据库,我创build它作为一个pod(有或没有复制控制器)。 但是,我不连接到其他应用程序。 我连接到一个知道该吊舱的服务(通过标签select器)。 这很重要,原因很多。

  1. 如果数据库失败并在不同的主机上重新创build,访问它的应用程序仍然引用(固定)服务IP地址,并且kubernetes代理负责将请求发送到正确的pod。
  2. 服务地址是所有Kubernetes节点都知道的。 任何节点都可以正确代理请求。

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

所有这一切,我没有直接的经验与外部(公共)IP地址负载平衡的集群,所以也许有更好的技术。 我试图做的主要点是节点将代理请求到适当的pod无论该节点是否有一个pod。

-G