我有两个码头图片Mosquitto
& user-info
。 userInfo
是一个容器,它执行一些逻辑,然后将结果发送到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文件。
答案 0 :(得分:1)
“与Kubernetes一起运行”这本书的引用应该给你一个提示;
一般来说,在设计Pods时要问自己的正确问题是, “如果这些容器落在不同的地方,它们是否能正常工作 机器?“如果答案是”否“,那么Pod就是正确的分组 容器。如果答案是“是”,则可能是多个Pod 正确的解决方案。
从我读到的关于你的项目的内容来看,这两个容器更适合单个pod - 这样他们就可以通过localhost进行通信。
一般情况下,您永远不需要带有类型吊舱的k8清单,仅用于实验目的。
对于典型的应用程序,您将需要部署和服务对象。
汤姆
答案 1 :(得分:0)
在单独的部署中使用两个不同的软件是有道理的。只要您使用---
分隔符行将它们分开,就可以将它们放在单个yaml文件中,但这与为每个分隔符分隔文件基本相同。
你需要为一组pod(0-N)提供服务,你的集群中(或NodePort和LB svc外部)需要连接到这些pod,因此在你的情况下你只需要svc用于Mosquitto,除非是某些东西否则也会与用户信息交谈。
您可以将服务视为位于所选容器组前面的负载均衡器。