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

Kubernetes-How to send data from a pod to another pod in kubernetes

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

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

所以在 kubernetes 中,我做了什么,我部署了 Mosquitto 所以它的 POD 被创建然后我创建了它的服务并在 userInfo pod 中使用它来发送数据到 mosquitto.但这是行不通的。

我使用

创建了服务
kubectl expose deployment mosquitto

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

我还尝试创建一个包含两个容器的 pod,即 mosquittouserInfo,但这也不起作用。

谢谢

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

两个容器相同的POD

如果您对属于同一个 POD 的两个容器之间的通信感兴趣,可以从官方文档中 the guide 了解如何通过共享卷实现这一点。

The primary reason that Pods can have multiple containers is to support helper applications that assist a primary application. Typical examples of helper applications are data pullers, data pushers, and proxies. Helper and primary applications often need to communicate with each other. Typically this is done through a shared filesystem, as shown in this exercise, or through the loopback network interface, localhost.

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

两个集装箱两个POD

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

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

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

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