【问题标题】:How to do mulit pods deployment in kubernetes如何在 kubernetes 中进行多 pod 部署
【发布时间】:2018-03-07 08:07:33
【问题描述】:

我有两个 docker 镜像 Mosquittouser-infouserInfo 是一个容器,它执行一些逻辑,然后将结果发送到 mosquitto。 Mosquitto 然后使用此信息将其发送到 IOT 集线器。在user-info 内部,我已经提到要使用hostname=mosquitto,所以user-info 会将所有数据发送到mosquitto

我首先使用这两个容器创建一个 pod。所以我用kind: Pod写了一个yaml文件,一切顺利。由于这些容器位于同一个 pod 中,因此它们能够轻松地相互通信,因此 user-info 能够向 mosquitto 发送数据。

现在我不想创建 Pod,而是想使用 kind: Deployment,但我想知道在部署中创建多个 Pod 是不可能的。因此,如果我为 mosquitto-deployment.yamluser-info-deployment.yaml 创建两个部署文件,它们都会创建两个不同的 pod。那么如何让这些 pod 进行通信呢?

我阅读了有关服务的信息,我们可以使用服务进行交流,但我很难使用服务。如果我为 mosquitto 创建服务,是否需要为 user-info 创建服务,或者它可以直接与 mosquitto 服务通信。另外,是否可以使用单个 deployment.yaml 文件来创建所有 pod,而不是使用 2-3 个 deployment.yaml 文件。

【问题讨论】:

    标签: docker deployment kubernetes


    【解决方案1】:

    《Up and running with Kubernetes》一书中的一句话应该会给你一个提示;

    一般来说,在设计 Pod 时要问自己的正确问题是: “如果这些集装箱降落在不同的地方,它们会正常工作吗? 机器?”如果答案是“否”,则 Pod 是正确的分组 容器。如果答案是“是”,则可能是多个 Pod 正确的解决方案。

    根据我对您项目的了解,这两个容器更适合单个 pod - 这样它们就可以通过 localhost 进行通信。

    一般来说,您永远不需要带有 kind pod 的 k8 清单,这仅用于实验目的。

    对于典型的应用程序,您将需要一个部署和服务对象。

    汤姆

    【讨论】:

      【解决方案2】:

      在不同的部署中拥有两个不同的软件是有意义的。只要用--- 分隔符行分隔它们,就可以将它们都放在一个 yaml 文件中,但这本质上与为每个文件分别设置文件相同。

      您需要为一组 Pod (0-N) 提供服务,集群中的某些东西(或 NodePort 和 LB svc 的外部)需要连接到这些 Pod,因此在您的情况下,您只需要 Mosquitto 的 svc,除非有什么else 也会与 user-info 对话。

      您可以将服务视为位于选定 pod 组前面的负载均衡器。

      【讨论】:

      • 我们是否需要提及user-infodeployment.yaml 中使用的服务名称,因为user-info pod 将如何知道使用哪个服务来发送数据。?
      • 是的,需要告诉 whjat 服务调用,即。通过 env var 就像 ie。 MOSQUITTO_ENDPOINT="蚊子"
      猜你喜欢
      • 2018-12-01
      • 2020-07-20
      • 1970-01-01
      • 2020-07-27
      • 2021-03-25
      • 2017-07-05
      • 2017-12-29
      • 2021-09-21
      • 1970-01-01
      相关资源
      最近更新 更多