无根 Podman 中 pod 之间的网络 DNS

问题描述 投票:0回答:1

我将容器放在不同的容器中,以更好地组织我的应用程序。这是我的设置:

  • 网络:公共
  • Pod1(公开 80、81、443)附加到网络公共:
    • NginX 代理管理器
    • 玛丽亚数据库
  • Pod2 连接到公共网络:
    • 节点-红色

现在,我希望 NginX 代理管理器 (NPM) 与 Node-red 对话。

我的命令如下:

podman network create public
podman pod create --name pod1 --network public -p 2080:80,2081:81,2443:443
podman pod create --name pod2 --network public
podman run -d --pod pod1 --name db -e MYSQL_ROOT_PASSWORD=... jc21/mariadb-aria:latest
podman run -d --pod pod1 --name nom -e ... jc21/nginx-proxy-manager:latest
podman run -d --pod pod2 --name my-node-red node red/node-red:latest

我在 Windows 上使用 WSL podman 机器进行了类似的设置,无根,并且它可以工作,即我可以从 npm ping node-red,但它在我的 OpenSUSE Micro 服务器上不起作用。当我查找node-red容器的IP时,npm可以通过IP到达node-red,所以这只是一个DNS问题。

一些帖子指出了 podman-plugins 包,从描述来看,它似乎解决了 DNS 问题。然而,该软件包从今天起已被弃用,从描述来看,它似乎已成为 podman 网络的一部分。

我正在寻找的是DNS解析,以便NPM可以通过pod名称找到node-red,即在NPM中,我可以指向pod2,而不是pod2的IP。

注意:我在 OpenSUSE Leap Micro 中运行 Podman 4.4.4。

containers opensuse podman dnsmasq podman-networking
1个回答
0
投票

我终于找到了答案,我发现Podman社区反应非常迟钝。我希望这种情况在不久的将来会改变。

发生的情况是,当我安装 OpenSUSE Leap 上的最新产品 podman 4.4.4 时,默认网络后端是 CNI,它不支持容器 DNS。我所做的是安装 netavarkaardvark-dns

# Depending on your distro, you may have different installation commands
# This is for OpenSUSE Leap Micro
sudo transactional-update reboot pkg in netavark aardvark-dns

之后,我重置了我的 podman 机器。也许有一种方法可以只更改网络后端,但重置 podman 机器会删除所有内容;图像、容器、pod。无论如何,从现在开始,当我创建网络时,默认网络后端是netavark,它具有容器 DNS。

podman network create some-network

您现在可以创建无根容器和 Pod,并让它们通过 Pod 名称相互通信。我还没有尝试过在 pod 之外的容器中使用容器名称,但我怀疑它也能工作。

BR

© www.soinside.com 2019 - 2024. All rights reserved.