如何在kubernetes中部署mulit pods

时间:2018-03-07 08:07:33

标签: docker deployment kubernetes

我有两个码头图片Mosquitto& user-infouserInfo是一个容器,它执行一些逻辑,然后将结果发送到mosquitto。然后Mosquitto使用此信息将其发送到物联网中心。在user-info内部,我提到使用hostname=mosquitto,以便user-info将所有数据发送到mosquitto

我首先创建了一个包含这两个容器的pod。所以我用kind: Pod写了一个yaml文件,一切正常。由于这些容器位于同一个容器内,因此它们可以轻松地相互通信,因此user-info能够将数据发送到mosquitto

现在我要继续创建pod并希望使用kind: Deployment,但我想知道在部署中无法创建多个pod。因此,如果我为mosquitto-deployment.yaml&创建两个部署文件user-info-deployment.yaml,他们都将创建两个不同的pod。那么我该如何让这些豆荚沟通呢?

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

2 个答案:

答案 0 :(得分:1)

“与Kubernetes一起运行”这本书的引用应该给你一个提示;

  

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

从我读到的关于你的项目的内容来看,这两个容器更适合单个pod - 这样他们就可以通过localhost进行通信。

一般情况下,您永远不需要带有类型吊舱的k8清单,仅用于实验目的。

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

汤姆

答案 1 :(得分:0)

在单独的部署中使用两个不同的软件是有道理的。只要您使用---分隔符行将它们分开,就可以将它们放在单个yaml文件中,但这与为每个分隔符分隔文件基本相同。

你需要为一组pod(0-N)提供服务,你的集群中(或NodePort和LB svc外部)需要连接到这些pod,因此在你的情况下你只需要svc用于Mosquitto,除非是某些东西否则也会与用户信息交谈。

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