在 k8n 中,我有一个服务
svcFoo
和两个 pod pod1
和 pod2
。
pod2
正在主机网络模式下运行。
如果我
exec
进入pod1
并运行nslookup svcFoo
,那么域名就成功解析了。
但是,如果我
exec
进入 pod2
并运行 nslookup svcFoo
,那么它无法解析域。
有没有办法解析
svcFoo
或从以主机网络模式运行的svcFoo
获取pod2
的IP地址?
要从以
hostNetwork模式运行的 pod 解析服务
svcFoo
,您需要调整该 pod 的 DNS 策略。所以你可能必须使用 dnsPolicy 作为 ClusterFirstWithHostNet
。
根据此官方 kubernetes 文档 :
“
”:对于使用 hostNetwork 运行的 Pod,您应该将其 DNS 策略显式设置为“ClusterFirstWithHostNet
”。否则,使用 hostNetwork 和“ClusterFirstWithHostNet
”运行的 Pod 将回退到“ClusterFirst
”策略的行为。Default
注意:“Default”不是默认的 DNS 策略。如果未明确指定 dnsPolicy,则使用“ClusterFirst”。
下面的示例显示了一个 Pod,其 DNS 策略设置为“
”,因为它的 hostNetwork 设置为ClusterFirstWithHostNet
。true
apiVersion: v1 kind: Pod metadata: name: busybox namespace: default spec: containers: - image: busybox:1.28 command: - sleep - "3600" imagePullPolicy: IfNotPresent name: busybox restartPolicy: Always hostNetwork: true dnsPolicy: ClusterFirstWithHostNet
请参阅 Chimbu Chinnadurai 的 Medium 博客 了解更多信息,并查看此 github 问题,这可能对您有帮助。