我正在使用 podman-compose 部署多个 Pod。为此,每个 pod 在 podman-compose.yaml 文件中都有自己的定义,我以无根模式执行该文件(因此 Pod 中的所有容器共存于同一主机/IP 中)。但是,我希望 Pod 中的容器能够访问另一个 Pod 中的容器公开的服务。
我知道 Kubernetes 有一个 Service 对象,可以让 Pod 之间进行通信。但我不想用K8S...
所以我的问题是:是否有任何“等效”或解决方法可以用来在 Pod 之间实现此类通信?不仅在 Podman 生态系统中,而且在 Linux 生态系统中也是如此。
理想情况下,我想使用 DNS 来让容器解析其他 pod 中其他容器的 IP。我应该使用我的机器(所有 Pod 都在其中运行)DNS 来代理 Pod 之间的请求吗?更重要的是,这是一个好的做法吗?
抱歉,如果答案很明显,我是 IT 世界的新手。
不管怎样,先谢谢大家了!
创建一个网络并让所有 Pod 在启动时使用该网络。然后,如果您使用 --name 来命名 pod,则可以使用该名称作为其他人的 DNS 条目。
Eg
podman network create $NETWORK_NAME
podman pod create --name $POD1 --network $NETWORK_NAME
podman pod create --name $POD2 --network $NETWORK_NAME
podman run -it --detach --pod $POD1 --name $CONTAINER1 --network $NETWORK_NAME image_name
podman run -it --detach --pod $POD2 --name $CONTAINER2 --network $NETWORK_NAME image_name
现在如果你从 CONTAINER2 进行冰壶运动,你可以使用
curl http://$POD1 它将解析为该 POD 的 IP(创建的网络上的私有 IP)。
如果您不想使用 pod,只需删除 podman run 的所有 pod create 和 --pod 标志,然后使用 $CONTAINER1 或 $CONTAINER2 与同一网络中的其他容器进行通信。
这样,您不需要公开大量端口,并且可以让容器与主机通信并返回到公开的端口。只需通过 pod/容器名称引用它们即可。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)