Kubernetes 更新pods中的默认搜索域

Kubernetes 更新pods中的默认搜索域,kubernetes,dns,coredns,k3s,Kubernetes,Dns,Coredns,K3s,当我exec进入一个容器时,我看到一个/etc/resolv.conf文件如下所示: $ cat /etc/resolv.conf search namespace.svc.cluster.local svc.cluster.local cluster.local nameserver 10.43.0.10 options ndots:5 $ cat /somedir/resolv.conf search foo.com bar.com nameserver 8.8.8.8 如何将已部署的所

当我
exec
进入一个容器时,我看到一个
/etc/resolv.conf
文件如下所示:

$ cat /etc/resolv.conf
search namespace.svc.cluster.local svc.cluster.local cluster.local
nameserver 10.43.0.10
options ndots:5
$ cat /somedir/resolv.conf
search foo.com bar.com
nameserver 8.8.8.8
如何将已部署的所有容器附加到搜索域,以便搜索域包含额外的域?e、 g.如果我想在默认情况下为任何pod添加
foo.com
bar.com
,我如何更新搜索行,使其看起来像bellow

search namespace.svc.cluster.local svc.cluster.local cluster.local foo.com bar.com
注:

  • 这是一个自我管理的k8s群集。我能够更新DNS/群集配置,但我需要。我已经更新了coredns组件以正确解析我的名称服务器,但是这个设置需要应用到我想象中的每个pod

  • 我已经看过pod规范,但这不是一个很好的解决方案,因为它需要添加到系统中的每个pod(或部署/作业/复制集/etc)清单中。默认情况下,我需要将其应用于所有pod

  • 由于许多现有服务返回主机名的方式,我不能合理地期望主机名是完全限定的域名。这是为了保持与我们已有的许多服务的向后兼容性(例如,LDAP请求可能返回主机
    fizz
    ,但查找需要完全解析为
    fizz.foo.com
    )。这是裸机和虚拟机通常在这里配置的方式

我找到了一个可能的解决方案,但我自己不认为这是正确的,因为这不是直接针对k8s的,而是针对k3s的。我可能晚些时候回来提供更多信息

在我的例子中,我的测试集群是一个k3s服务,我假设它的作用与k8s基本相同。按照我的环境设置方式,节点上的一个新文件替换了我的正常
/etc/resolv.conf
。我能够通过提供
--resolv conf
来规避这个问题,其中的文件如下所示:

$ cat /etc/resolv.conf
search namespace.svc.cluster.local svc.cluster.local cluster.local
nameserver 10.43.0.10
options ndots:5
$ cat /somedir/resolv.conf
search foo.com bar.com
nameserver 8.8.8.8
然后用
/bin/k3s server--resolv conf=/somedir/resolv.conf

现在,当pod生成时,k3s将解析该文件的
搜索
行,并自动将搜索域附加到创建的任何pod中


我不确定当我在实际的K8上尝试时是否会再次遇到这个问题,但至少这会让我重新开始运行

你看到侧边栏上的标题了吗?我从未修改过CoreDNS,但它似乎与您的problem@flakes如果答案是一种形式,您是否愿意描述该解决方案?对社区的其他人来说,这将更加清晰。@Ohimark done!:)