从以hostNetwork模式运行的pod解析kubernetes服务

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

在 k8n 中,我有一个服务

svcFoo
和两个 pod
pod1
pod2

pod2
正在主机网络模式下运行。

如果我

exec
进入
pod1
并运行
nslookup svcFoo
,那么域名就成功解析了。

但是,如果我

exec
进入
pod2
并运行
nslookup svcFoo
,那么它无法解析域。

有没有办法解析

svcFoo
或从以主机网络模式运行的
svcFoo
获取
pod2
的IP地址?

kubernetes coredns
1个回答
0
投票

要从以

hostNetwork
模式运行的 pod 解析服务 svcFoo,您需要调整该 pod 的 DNS 策略。所以你可能必须使用 dnsPolicy 作为
ClusterFirstWithHostNet

根据此官方 kubernetes 文档 :

ClusterFirstWithHostNet
”:对于使用 hostNetwork 运行的 Pod,您应该将其 DNS 策略显式设置为“
ClusterFirstWithHostNet
”。否则,使用 hostNetwork 和“
ClusterFirst
”运行的 Pod 将回退到“
Default
”策略的行为。

注意:“Default”不是默认的 DNS 策略。如果未明确指定 dnsPolicy,则使用“ClusterFirst”。

下面的示例显示了一个 Pod,其 DNS 策略设置为“

ClusterFirstWithHostNet
”,因为它的 hostNetwork 设置为
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 问题,这可能对您有帮助。

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