DNS概述
DNS为Kubernetes集群内的工作负载提供域名解析服务,CoreDNS是Kubernetes集群中默认内置的DNS服务器,用于提供动态服务发现和域名解析的能力,使得集群内部的服务可以通过服务名相互访问,无需知道具体的IP地址。本文主要介绍CoreDNS域名解析原理和ACK Edge集群中的CoreDNS。
CoreDNS域名解析原理
序号 | 描述 |
① | 业务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)上。 |
ACK Edge集群中的CoreDNS
ACK Edge集群将多地域、多网络域的计算设备纳入一个Kubernetes集群进行统一管理,由于边缘设备分散,CoreDNS采用DaemonSet的方式运行在每个边缘节点上。
当客户端Pod访问域名时,它会先向本地的CoreDNS请求解析域名,并使用解析得到的地址连接到目标服务或目标Pod。
关于CoreDNS的详细配置,请参见如下ACK相关文档:
ACK Edge集群中暂不支持NodeLocal DNSCache 以及ExternalDNS服务。
文档 | 是否适用 | 说明 |
适用 | 无 | |
适用 | 无 | |
部分适用 | ACK Edge集群占用了默认域的Hosts配置,如需自定义CoreDNS配置,请参见CoreDNS自定义配置。 | |
适用 | 无 | |
适用 | 无 | |
部分适用 |
|