【问题标题】:Creating a multi node Kubernetes Cluster for a stateless webapp为无状态 Web 应用创建多节点 Kubernetes 集群
【发布时间】:2015-07-21 15:46:10
【问题描述】:

我正在尝试了解一种处理具有多个节点和一个主节点的 Kubernetes 集群的好方法。 我将集群托管在我公司的云中,普通的 Ubuntu 盒子(所以没有 Google Cloud 或 AWS)。

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

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

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

【问题讨论】:

    标签: docker cluster-computing kubernetes


    【解决方案1】:

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

    1. 如果数据库出现故障并在其他主机上重新创建,访问它的应用程序仍会引用(固定)服务 IP 地址,并且 kubernetes 代理负责将请求发送到正确的 pod。
    2. 所有 Kubernetes 节点都知道服务地址。任何节点都可以适当地代理请求。

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

    话虽如此,我还没有直接使用外部(公共)IP 地址对集群进行负载平衡的经验,因此可能有更好的技术。我试图说明的要点是,无论该节点是否有 pod,节点都会将请求代理到适当的 pod。

    -g

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-05-12
      • 2019-10-12
      • 2020-03-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多