如何在无根网络上 Pods 之间进行通信

How to Communicate Between Pods on a Rootless Network

我正在尝试创建一组 pods 通过 REST 相互通信,但似乎无法在 pods 之间建立 DNS 解析。我查看了 ,但提供的答案似乎不起作用...

has a similar solution, with a caveat that the provided podman run commands don't even execute/return correctly. It also has a comment with negative upvotes indicating that the solution is to use the dnsname plugin. I looked into the plugin, and it hasn't been updated in ~8 months. Furthermore, this issue 似乎表明在无根操作时不需要插件(由于 infra 容器)。

以下是我用来创建 network/pods 的代码。我也尝试过将 network=test-network 与 运行 命令一起使用,但是当我这样做时 pods 最终处于降级状态(大概是因为基础设施最终处于配置状态但是不是运行宁州)。

podman network create test-network

podman pod create --name test-pod1 --network test-network --share net
podman run \
    --pod=test-pod1 -d \
    --name=test-container1 \
    --network-alias=test-pod1-alias \
    --add-host test-container1:127.0.0.1 \
    --entrypoint='["/bin/sh","-c", "while true; do echo hello; sleep 10;done"]' \
    ubi/ubi8:latest test-container1

podman pod create --name test-pod2 --network test-network --share net
podman run \
    --pod=test-pod2 -d \
    --name=test-container2 \
    --network-alias=test-pod2-alias \
    --add-host test-container2:127.0.0.1 \
    --entrypoint='["/bin/sh","-c", "while true; do echo hello; sleep 10;done"]' \
    ubi/ubi8:latest test-container2

通过使用 dnf install podman-pluginsrhel8-appstream 安装 podman-plugins,我似乎已经成功解决了这个问题。

container-tools 或 containernetworking-plugins 中似乎没有包含 dnsname 插件,但 DNS 实际工作需要它。一旦我安装了 podman-plugins,我就成功地执行了从 test-container1 到 test-pod2 的 ping 调用。但是,我在 test-container1 和 test-container2 或 test-container2-alias 之间仍然没有任何 DNS。