即使提供了 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 文件中具有给定的配置。
我有一个带有一些节点的较旧的 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 文件中具有给定的配置。