Kubernetes 集群DNS选择:CoreDNS vs Kube-DNS

在二进制部署 Kubernetes 集群时,最后一步是部署 DNS,有两个选项:CoreDNS 和 Kube-DNS,二者主要有什么区别,如何选择呢?

CoreDNS 和 Kube-DNS 作为 Kubernetes 集群的 DNS 服务提供者,在做用和完成的工作上是完全相同的。二者在实现上有一些不同,这导致了在资源消耗和性能上的差异。主要有:

  • CoreDNS 每个实例只有一个容器,而 Kube-DNS 有三个
  • Kube-DNS 使用 dnsmasq 进行缓存,这是一个 C 线程。Core-DNS 使用 Go 开发,goroutine 实现了更高效并发。
  • CoreDNS 默认使用 negative caching(不理解这个负缓存)。Kube-DNS 没有。

这些不同在一些方面对性能产生影响。每个实例里更多的容器数量增加了基础内存需求,也增大了性能开销(因为请求/应答要在容器之间来回传递)。对于kube-dns,dnsmasq 可能经过了 C语言的高度优化,但它毕竟是单线程的,智能利用CPU的一个核。CoreDNS 使用了 negative caching,用于处理外部名称搜索。

从 Kubernets 1.11 开始,CoreDNS 达到了 GA,kubeadm 使用它来默认安装 Kubernetes。容器镜像使用 coredns 而服务名是 kube-dns,这是为了保证应用从 Kube-DNS 迁移到 coredns 时的后向兼容性。

参考资料:

  • https://stackoverflow.com/questions/52761135/kubernetes-kube-dns-vs-coredns
  • https://coredns.io/2018/11/27/cluster-dns-coredns-vs-kube-dns/
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
如果在Kubernetes集群中的某个节点上使用 `nc` 命令探测 `kube-dns` 的 `svcIP` 不通,但其他 `svc` 的 `IP` 可以通,可能是以下几个原因之一: 1. DNS Pod未运行或者不可用:`kube-dns` 是 Kubernetes 集群中负责 DNS 解析的组件。如果 `kube-dns` 的 Pod 未运行或者不可用,那么 `nc` 命令探测 `svcIP` 就会失败。你可以通过运行 `kubectl get pods -n kube-system` 命令来检查 `kube-dns` 的 Pod 状态,确保它们处于运行中且正常工作。 2. 节点网络配置问题:如果其他 `svc` 的 `IP` 可以通,但 `kube-dns` 的 `svcIP` 不通,可能是节点网络配置问题导致的。你可以检查该节点的网络配置,确保它可以与其他节点正常通信,并且没有任何防火墙规则或网络隔离策略阻止了与 `kube-dns` 的通信。 3. DNS服务设置错误:检查 Kubernetes 集群DNS 配置是否正确。你可以通过运行 `kubectl get services -n kube-system` 命令来获取 `kube-dns` 的服务信息,并确保 `kube-dns` 的服务正常运行并且暴露了正确的 `ClusterIP`。 4. DNS解析配置问题:检查节点的 DNS 解析配置是否正确。你可以尝试在该节点上手动解析 `kube-dns` 的 `svcIP`,并确保返回的结果与预期一致。你还可以检查节点上的 `/etc/resolv.conf` 文件,确保 DNS 配置正确并且指向了正确的 DNS 服务器。 如果以上方法仍然不能解决问题,建议你进一步检查节点和集群的网络配置以及 DNS 服务设置,以找到问题的具体原因。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值