即使提供了 dnsPolicy: "Default",Kubernetes pod 也不会采用主机 DNS 设置

Kubernetes pod doesn't take the host DNS settings even if dnsPolicy: "Default" is provided

我有一个带有一些节点的较旧的 Kubernetes 集群 (运行 coreDNS)。 每次管道启动时,Jenkins 都会在此集群中启动新的 pods。 pod 的规格如下:

apiVersion: "v1"
kind: "Pod"
metadata:
  name: "test"
spec:
  containers:
  - image: "docker_image:1.0"
    name: "jnlp"
    volumeMounts:
    - mountPath: "/home/user"
      name: "home-volume"
      readOnly: false
  dnsPolicy: "Default"
  hostNetwork: true
  nodeSelector:
    beta.kubernetes.io/os: "linux"
    kubernetes.io/hostname: "node_to_run_on"
  volumes:
  - hostPath:
      path: "/home/user"
    name: "home-volume"

到目前为止,使用此配置一切正常。现在,一个新的 Ubuntu 机器被添加到集群中(使用相同的旧版 ansible 剧本),并且在 Jenkins 启动的 pod 中,DNS 设置被覆盖(结论是 pod 无法与 Jenkins 通信)。 启动容器(使用 docker 运行 -it -v $HOME:$HOME --network host docker_image:1.0 /bin/bash)一切正常,DNS 设置如下预期。

我想提一下,需要 运行 pods 使用网络主机,因为一些主机通过 VPN 连接到公司网络。当前主机(具有上述问题)也通过 VPN 连接。

问题已通过添加解决:

dnsPolicy: "None"
dnsConfig:
  nameservers:
  - IP1
  - IP2
  searches:
  - domain

这会强制新容器在其 /etc/resolv.conf 文件中具有给定的配置。