首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Kubernetes DNS使用systemd解决方案的理想设置

Kubernetes DNS使用systemd解决方案的理想设置
EN

Stack Overflow用户
提问于 2018-11-13 13:55:07
回答 1查看 2.1K关注 0票数 1

Im即将使用K8S部署一个新的KubeSpray裸金属集群。在我的代理上,我的解析程序运行的不是从/etc/resolvd.conf获取DNS设置,而是从/etc/systemd/resolved.conf获取它。

那么,哪个是最好的DNS设置使用?CoreDNS?KubeDNS?只想确保我部署的吊舱使用与我的代理节点上配置的相同的DNS服务器。

我应该选择什么?

代码语言:javascript
运行
复制
# Can be dnsmasq_kubedns, kubedns, coredns, coredns_dual, manual or none
dns_mode: kubedns
# Set manual server if using a custom cluster DNS server
#manual_dns_server: 10.x.x.x

# Can be docker_dns, host_resolvconf or none
resolvconf_mode: docker_dns
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-11-14 11:51:14

根据正式文件

从Kubernetes v1.12开始,CoreDNS是推荐的DNS服务器,取代了kube。但是,在默认情况下,kube仍然可以使用某些Kubernetes安装工具安装。请参阅安装程序提供的文档,以了解默认安装了哪个DNS服务器。

CoreDNS部署公开为具有静态IP的Kubernetes服务。CoreDNS和CoreDNS服务都在metadata.name字段中被命名为kube-dns .这样做是为了增强与依赖于遗留kube-dns服务名称来解析集群内部地址的工作负载的互操作性。它抽象出DNS提供程序在该公共端点后面运行的实现细节。

如果Pod的dnsPolicy设置为“default”,它将继承Pod运行在其上的节点的名称解析配置。Pod的DNS解析应该与节点的行为相同。但请看已知问题

如果您不想这样做,或者您想要一个不同的DNS配置,您可以使用kubelet的--resolv-conf标志。将此标志设置为“”以防止Pods继承DNS。将其设置为有效的文件路径,以指定用于DNS继承的/etc/resolv.conf以外的文件。

已知问题

一些Linux发行版(例如Ubuntu)默认使用本地DNS解析器(systemd解决)。系统解析-用存根文件移动并替换/etc/resolv.conf,当解析上游服务器中的名称时,该存根文件会导致致命的转发循环。通过使用kubelet的--resolv-conf标志来指向正确的resolv.conf(使用systemd-resolved,这是/run/systemd/resolve/resolv.conf),可以手动修复这个问题。kubeadm 1.11自动检测systemd-resolved,并相应地调整kubelet标志。

默认情况下,Kubernetes安装不将节点的resolv.conf文件配置为使用集群DNS,因为该过程本质上是特定于发行版的。这可能最终会实现。

Linux的libc是不可能的(请看2005年的这个bug),只有3个nameserver记录和6个DNS search记录的限制。Kubernetes需要消耗1条nameserver记录和3条search记录。这意味着,如果一个本地安装已经使用了3个nameserver,或者使用了3个以上的searches,那么其中的一些设置就会丢失。作为部分解决方案,节点可以运行dnsmasq,这将提供更多的nameserver条目,但不能提供更多的search条目。您还可以使用kubelet的--resolv-conf标志。

如果您使用阿尔卑斯版本3.3或更早作为您的基本映像,DNS可能无法正常工作,因为已知的阿尔卑斯问题。有关更多信息,请查看这里

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53282613

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档