Kubernetes的DNS服务CoreDNS和NodeLocalDNS

💡 原文中文,约2200字,阅读约需6分钟。
📝

内容提要

最近部署k8s集群时,容器解析集群外自建dns中配置的域名报错。将容器中的NodeLocalDNS地址注释掉后解析正常。NodeLocalDNS访问上游CoreDNS解析异常。修改/etc/resolv.conf太麻烦,将coredns cm配置中forward /etc/resolv.conf改成forward . 172.20.xx.10 172.20.xx.20临时解决。

🎯

关键要点

  • 在部署k8s集群时,容器解析外部自建DNS的域名报错。
  • 注释掉容器中的NodeLocalDNS地址后,解析恢复正常。
  • NodeLocalDNS访问上游CoreDNS时出现解析异常。
  • 由于Pod数量庞大,修改/etc/resolv.conf非常麻烦。
  • 临时解决方案是将coredns cm配置中的forward改为forward . 172.20.xx.10 172.20.xx.20。
  • NodeLocal DNSCache通过在节点上运行DNS缓存代理来提高DNS性能。
  • 启用NodeLocal DNSCache后,DNS查询路径包括多个步骤,涉及NodeLocal DNSCache和kube-dns服务。
  • NodeLocal DNSCache的工作原理包括缓存查询和备用链路的处理。

延伸问答

在部署k8s集群时,容器解析外部DNS时出现了什么问题?

容器解析外部自建DNS的域名报错,NodeLocalDNS访问上游CoreDNS解析异常。

如何临时解决NodeLocalDNS导致的解析异常?

将coredns cm配置中的forward改为forward . 172.20.xx.10 172.20.xx.20。

NodeLocal DNSCache的主要功能是什么?

NodeLocal DNSCache通过在节点上运行DNS缓存代理来提高DNS性能。

启用NodeLocal DNSCache后,DNS查询的路径是怎样的?

DNS查询路径包括NodeLocal DNSCache、kube-dns服务和CoreDNS,涉及多个步骤。

为什么修改/etc/resolv.conf在Pod数量庞大的情况下很麻烦?

因为Pod数量庞大,逐个修改/etc/resolv.conf非常麻烦。

NodeLocal DNSCache在DNS查询中如何处理缓存缺失?

NodeLocal DNSCache会通过kube-dns服务请求CoreDNS进行解析,如果本地无缓存应答。

🏷️

标签

➡️

继续阅读