我有两个docker image Mosquitto
和user-info
。 userInfo
是执行某些逻辑,然后将结果发送到mosquitto
的容器。然后Mosquitto使用此信息将其发送到IOT集线器。我提到的user-info
内部使用hostname=mosquitto
,因此user-info
将所有数据发送到mosquitto
首先,我用这两个容器创建了一个容器。所以我用kind: Pod
编写了一个yaml文件,一切正常。由于这些容器位于同一个容器中,因此它们可以轻松地彼此通信,因此user-info
能够将数据发送到mosquitto
。
现在,我不想创建Pod,而是想使用kind: Deployment
,但我想知道在部署中不能创建多个Pod。因此,如果我为mosquitto-deployment.yaml
和user-info-deployment.yaml
创建两个部署文件,它们都将创建两个不同的容器。那么如何使这些 pods 进行交流呢?
我阅读了有关服务的信息,我们可以使用服务进行通信,但是我在服务方面遇到了困难。如果我为mosquitto创建服务,是否需要为user-info
创建服务,或者它可以直接与mosquitto服务通信。另外,不可能使用单个deploy.yaml文件创建所有Pod,而不是使用2-3 deployment.yaml文件。
最佳答案
在单独的部署中拥有两个不同的软件是有意义的。只要您用---
分隔线将它们分开,就可以将它们都放在一个yaml文件中,但这本质上与为每个文件都具有单独的文件相同。
您需要为一组Pod(0-N)提供服务,群集中的某物(或NodePort和LB svc的外部)需要连接到这些Pod,因此在您的情况下,您只需要Mosquitto的svc,除非其他情况也是如此。与用户信息交谈。
您可以考虑将服务作为位于所选Pod组前面的负载平衡器。
关于docker - 如何在Kubernetes中进行多容器部署,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49146940/