Kubernetes - 如何将数据从pod发送到kubernetes中的另一个pod

时间:2018-03-06 11:30:49

标签: docker kubernetes mosquitto kubernetes-pod kubernetes-service

在码头工人中,我有两个容器Mosquitto abd userInfo

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

所以在kubernetes,我做了什么,我部署了Mosquitto所以它的POD已经创建,然后我创建了它的服务并在userInfo pod中使用它将数据发送到mosquitto。但这不起作用。

我使用

创建了服务
kubectl expose deployment mosquitto

我需要将userInfo的数据发送到Mosquitto

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

  • 我是否需要像dockers那样创建网络,或者还有其他任何方式。

我还尝试用两个容器创建一个容器,即mosquitto& userInfo,但这也无效。

由于

2 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:-1)

两个容器相同的POD

如果您对属于同一个POD的两个容器之间的通信感兴趣,那么官方文档中的the guide将显示如何通过共享卷实现此目的。

  

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

如果您不需要,请尽量避免将两个容器放在同一个POD中。其他信息可在此处找到:Multi-container pods and container communication in Kubernetes

两个容器两个POD

在这种情况下(对于前一种情况也可以这样做),最好的方法是通过service暴露容器的监听过程。

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

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

然后,当您暴露端口和IP如何实现通信时,数据传输不再是Kubernetes问题。您可以通过具有静态内容的Web服务器,通过FTP,使用脚本发送SCP命令来实现它,基本上有无限的方法来执行它。