3

在码头,我有两个容器MosquittoabduserInfo

userInfo是一个容器,它执行一些逻辑,然后将结果发送到 mosquitto 容器。Mosquitto 容器然后使用此信息将其发送到 IOT 集线器。为了在 Docker 中启动这些容器,我创建了一个网络并在同一个网络中启动了这两个容器。所以我可以很容易地使用mosquitto容器内容器的主机名userinfo来发送数据。我需要在 Kubernetes 中做同样的事情。

所以在 kubernetes 中,我所做的,我部署了Mosquitto它的 POD,然后我创建了它的服务并在userInfopod 内使用它来发送数据到mosquitto. 但这不起作用。

我通过使用创建了服务

kubectl expose deployment mosquitto

我需要发送 to 的userInfo数据Mosquitto

  • 我怎样才能做到这一点。?

  • 我需要像以前那样创建网络dockers还是有其他方法。?

我还尝试使用两个容器(即mosquitto& )创建一个 pod userInfo,但这也不起作用。

谢谢

4

2 回答 2

3

一个 Kubernetes pod 可能包含多个容器。当两个容器紧密耦合时,人们通常在一个 pod 中运行多个容器,听起来这就是您要寻找的。这些容器保证托管在同一台机器上(它们可以通过 localhost 相互联系),共享相同的端口空间,也可以使用相同的卷。 https://kubernetes.io/docs/concepts/workloads/pods/pod/#what-is-a-pod

于 2018-03-06T12:28:11.873 回答
0

两个容器相同的 POD

如果您对属于同一 POD 的两个容器之间的通信感兴趣,那么官方文档中的指南显示了如何通过共享卷来实现这一点。

Pod 可以有多个容器的主要原因是为了支持辅助应用程序来辅助主应用程序。帮助应用程序的典型示例是数据拉取器、数据推送器和代理。帮助程序和主应用程序经常需要相互通信。通常这是通过共享文件系统(如本练习中所示)或通过环回网络接口 localhost 完成的。

如果不需要,尽量避免将两个容器放在同一个 POD 中。可以在此处找到更多信息:Kubernetes 中的多容器 pod 和容器通信

两个容器两个 POD

在这种情况下(您也可以对前一种情况做同样的事情),最好的方法是通过服务公开容器的侦听过程。

通过这种方式,您将能够始终依赖相同的 IP 或域名(您只能在内部解析)和端口。 例如,如果您有一个"my-service"在 Kubernetes 命名空间中调用的服务,则会创建"my-ns"一个 DNS 记录"my-service.my-ns"

网络部分由 Kubernetes 管理,因此您不需要做任何事情(在基本配置中),只需在创建服务时指示容器的目标端口和客户端应该使用的端口,并且映射是自动的.

一旦你暴露了一个端口和一个 IP,你如何实现通信和数据传输就不再是 Kubernetes 的问题了。您可以通过具有静态内容的 Web 服务器、通过 FTP、使用发送 SCP 命令的脚本来实现它,基本上有无数种方法可以做到这一点。

于 2018-03-06T12:29:22.320 回答