Podman:如何解析使用 Kubernetes YAML 部署的 pod 的主机名

2024-05-08

我正在使用 podman 4.5-dev 我使用以下方式部署了两个 Pod:podman kube 播放 foo.yaml podman kube play bar.yaml

我在文件中指定了 pod 的主机名,但它们不会在容器内得到解析。 我验证了 Pod 位于同一网络中。

是否缺少某些 DNS 配置?我应该使用服务吗?官方文档缺乏关于这个主题的准确指示

这是两个 pod 之一的 YAML(另一个具有相同的键和不同的值):

apiVersion: v1
kind: Pod
metadata:
  labels:
    app: postgres
  name: postgres
spec:
  hostname: postgres
  containers:
  - name: pgadmin-container
    image: docker.io/dpage/pgadmin4:latest
    ports:
    - containerPort: 80
      hostPort: 9876

以下是一些可能有用的终端输出:

[daniele@localhost]$ podman pod inspect xptssrv |grep -ni network
25:          "HostNetwork": false,
34:          "Networks": [
35:               "podman-default-kube-network"
37:          "NetworkOptions": null,


[daniele@localhost]$ podman pod inspect postgres |grep -ni network
25:          "HostNetwork": false,
34:          "Networks": [
35:               "podman-default-kube-network"
37:          "NetworkOptions": null,



[daniele@localhost]$ podman network inspect podman-default-kube-network |grep "" -n
1:[
2:     {
3:          "name": "podman-default-kube-network",
4:          "id": "a4dcf21f020ee4e36651c11256cbe884182552e835eaaafd409153cd21dca4cc",
5:          "driver": "bridge",
6:          "network_interface": "cni-podman1",
7:          "created": "2023-02-21T23:03:25.800256942+01:00",
8:          "subnets": [
9:               {
10:                    "subnet": "10.89.0.0/24",
11:                    "gateway": "10.89.0.1"
12:               }
13:          ],
14:          "ipv6_enabled": false,
15:          "internal": false,
16:          "dns_enabled": false,
17:          "ipam_options": {
18:               "driver": "host-local"
19:          }
20:     }
21:]

[daniele@localhost pods]$ podman exec  xptssrv-xptssrv-container cat /etc/resolv.conf 
nameserver 192.168.1.6
nameserver 8.8.8.8


编辑您的网络设置/etc/containers/net.d/podman-default-kube-network.conflist改变这一行

"dns_enabled": false,

To this:

"dns_enabled": true,

然后重新启动并启动您的 yaml 并尝试解决此问题:

postgres_pgadmin-container_1

或者也许是这样的:

postgres_postgres_1

Edit1

只需复制配置文件:

sudo cp /usr/share/containers/containers.conf /etc/containers/containers.conf

然后在文件中使用以下命令将网络后端更改为 netavark:

sed -i "/^\s*\#*\s*network_backend\s*=.*$/ s/^.*$/network_backend = \"netavark\"/" /etc/containers/containers.conf

Notice:我认为最好重新启动系统才能应用更改。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Podman:如何解析使用 Kubernetes YAML 部署的 pod 的主机名 的相关文章

随机推荐