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

时间:2015-07-21 15:46:10

标签: docker cluster-computing kubernetes

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

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

我看到使用Services,我可以声明PublicIPs然而这是令人困惑的,因为在添加了IP地址之后 我的minion节点,每个ip只暴露它运行的pod,它不进行任何类型的负载平衡。由于此,  如果一个节点没有运行任何活动的pod(因为创建的pod在节点之间是随机分配的),它只是超时而且我最终会得到一些不响应的IP地址。我理解这个错误吗?

如何才能真正为我的网络应用程序进行适当的外部负载平衡?我应该在Pod级别上进行负载平衡而不是使用服务吗? 如果是这样,豆荚被认为是致命的,它们可能会动态死亡和出生,我如何追踪它?

1 个答案:

答案 0 :(得分:2)

PublicIP的事情最近发生了变化,我并不知道它到底的确切位置。但是,服务是您在应用程序中引用的 IP地址和端口。换句话说,如果我创建一个数据库,我将其创建为一个pod(带或不带复制控制器)。但是,我没有从另一个应用程序连接到pod。我连接到了解pod的服务(通过标签选择器)。出于多种原因,这很重要。

  1. 如果数据库出现故障并在其他主机上重新创建,则访问它的应用程序仍会引用(固定)服务IP地址,而kubernetes代理负责将请求发送到正确的pod。
  2. 所有Kubernetes节点都知道服务地址。任何节点都可以适当地代理请求。
  3. 我认为主题的变体适用于您的问题。您可以考虑创建一个外部负载均衡器,它将流量转发到特定(Web)服务的所有节点。如果节点出现故障,您仍然需要将节点从平衡器的目标中取出,但是,我认为任何节点都会转发任何服务的流量,无论该服务是否在该节点上。

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

    -g