【问题标题】:Kubernetes/Helm: Deploy multi pod each one having its proper parameterKubernetes/Helm:部署多个 pod,每个 pod 都有其适当的参数
【发布时间】:2019-06-28 02:51:31
【问题描述】:

我对 Kubernetes 很陌生:我的问题可能更多是设计问题而不是代码问题。 我想知道:Kubernetes 如何处理一个 pod 和另一个 pod 的副本之间的通信? 我的情况很简单,我有一个 API pod,它将 UI 提供的参数传递给计算单元 pod。根据我的需要,我将拥有许多 CU pod 的副本,它们正在等待 API 将参数传递给它们以使用。 每个 CU pod 必须使用不同的参数:它们都以相同的方式工作,但参数不同。 如何让我的 API pod 了解可用于向它们发送参数的 CU pod,以便它们可以工作。 是自动的吗?至少有可能还是我的集群设计不佳?

我想到了另一种方法:一旦我的 api 从 ui 获取参数,它将部署一个 CU pod,例如,作为环境变量提供的参数,CU 可以使用它。

提前感谢您的帮助!

【问题讨论】:

    标签: kubernetes replication


    【解决方案1】:

    假设您有 5 个 CU pod 正在运行并为它们提供 ClusterIP 服务。现在,当您向该服务发送请求时,负载平衡将在内部发生,服务会将请求转发到负载较小的 pod。这是为了保持后端 pod 的高可用性。因此,在您的情况下,即使某些 CU pod 出现故障,您也不会受到影响

    您需要比预期请求更多的 pod。也可以使用 Autoscale 来动态增加 pods

    【讨论】:

      【解决方案2】:

      在 k8s 中,pod 之间的通信由服务处理。要访问集群中的任何 pod,您需要创建 ClusterIp 服务。

      因此,在您的情况下,您需要为 CU pod 创建 ClusterIp 服务,以便它们可以访问。一旦您从 API pod 向该服务发送请求,它将被发送到您无法预测或控制的任何 CU pod(此处将发生自动负载平衡)。

      同样从 api pod 发送请求,将获取 API pod 中可用的 CU ClusterIp 服务名称、端口、主机详细信息作为 env 变量(前提是您在创建 API pod 之前创建了 CU 服务)。您还可以设置 DNS 服务器以通过 pod 的名称访问服务。

      【讨论】:

      • 好的,我明白了,唯一对我来说还不清楚的是自动负载平衡部分:
      • ok...假设您有 5 个 CU pod 正在运行并为它们提供 ClusterIP 服务。现在,当您向该服务发送请求时,负载平衡将在内部发生,服务会将请求转发到负载较小的 pod。这是为了保持后端 pod 的高可用性。因此,在您的情况下,即使某些 CU pod 出现故障,您也不会受到影响。
      • 好的,只是为了确定:假设我从 UI 获取一个参数到 API pod,然后如果我从 UI 获取另一个参数:我仍然有一个 CU 使用前一个参数,Kubernetes 是否能够将此参数从剩余的两个 CU pod 转发到一个 CU pod?据我了解:参数将被发送到所有 CU 吊舱,我无法控制它。我想要的是只将它发送到一个吊舱。但从你的意思来看:请求只发送到负载较少的 pod,对吧?
      • 在这种情况下,如果我期望例如三个请求,我应该部署 5 或 6 个 CU pod 以确保有足够的可用 pod 来处理请求。
      • 这取决于您的应用程序设计。您的 CU pod 一次可以处理多个请求吗?如果是,您可以拥有更少数量的 pod。
      猜你喜欢
      • 1970-01-01
      • 2019-12-22
      • 1970-01-01
      • 2020-06-02
      • 2016-11-14
      • 2019-05-24
      • 2019-02-13
      • 2020-07-20
      • 1970-01-01
      相关资源
      最近更新 更多