阿里云容器服务Kubernetes版ACK部署了CoreDNS作为集群内的DNS服务器,为集群内的工作负载提供域名解析服务。本文主要介绍CoreDNS的概念、作用,以及CoreDNS作为集群内的DNS服务器的域名解析原理。
CoreDNS介绍
CoreDNS是Kubernetes集群中负责DNS解析的组件,能够支持解析集群内部自定义服务域名和集群外部域名。CoreDNS具备丰富的插件集,在集群层面支持自建DNS、自定义hosts、CNAME、rewrite等需求。与Kubernetes一样,CoreDNS项目由 CNCF 托管。关于CoreDNS的更多信息,请参见CoreDNS: DNS and Service Discovery。
- 关于ACK集群CoreDNS的详细配置说明,请参见集群CoreDNS配置。
- 关于如何使用CoreDNS提高ACK集群整体DNS查询性能,请参见优化集群DNS性能。
您还可以在ACK集群中部署Node Local DNS提升服务发现的稳定性和性能,Node Local DNS通过在集群节点上作为DaemonSet运行DNS缓存代理来提高集群DNS性能。关于如何在集群中部署Node Local DNS的具体步骤,请参见在ACK集群中部署Node Local DNS。
CoreDNS版本与集群Kubernetes版本关系
关系项 | 版本 | |||
---|---|---|---|---|
Kubernetes | 1.12 | 1.14 | 1.16 | 1.18 |
CoreDNS | 1.2.6 | 1.3.1 | 1.6.2 | 1.6.7 |
ACK集群内DNS域名解析原理
ACK集群中kubelet的启动参数有--cluster-dns=<dns-service-ip>
和--cluster-domain=<default-local-domain>
,这两个参数分别被用来设置集群DNS服务器的IP地址和主域名后缀。
nameserver 172.xx.x.xx
search kube-system.svc.cluster.local svc.cluster.local cluster.local
options ndots:5

序号 | 描述 |
---|---|
① | 业务Pod(Pod Client)试图访问Nginx服务(Service Nginx)时,先会请求本地DNS配置文件(/etc/resolv.conf)中指向的DNS服务器(nameserver 172.21.0.10,即Service kube-dns)获取服务IP地址,得到解析结果为172.21.0.30的IP地址。 |
② | 业务Pod(Pod Client)再直接发起往该IP地址的请求,请求最终经过Nginx服务(Service Nginx)转发到达后端的Nginx容器(Pod Nginx-1和Pod Nginx-2)上。 |
关于集群DNS域名解析原理的详细说明,请参见集群DNS域名解析原理。
在文档使用中是否遇到以下问题
更多建议
匿名提交