
# 优化域名解析请求
DNS解析是Kubernetes集群中最高频的网络行为之一，针对Kubernetes中的DNS解析的特点，您可以通过以下的方式优化域名解析请求。
#### 客户端使用连接池
当一个容器应用需要频繁请求另一服务时，推荐使用连接池配置，连接池可以缓存上游服务的链接信息，避免每次访问都经过DNS解析和TCP重新建链的开销。
#### 优化容器内的resolve.conf文件
由于resolve.conf文件中的ndots和search两个参数的作用，容器内resolve.conf文件的不同写法决定了域名解析的效率，关于ndots和search两个参数机制的详情请参考[工作负载DNS配置说明](https://support.huaweicloud.com/usermanual-cce/cce_10_0365.html)。
#### 优化域名的配置
当容器需要访问某域名时，请按照以下原则进行配置，可最大程度减少域名解析次数，减少域名解析耗时。
1. Pod访问同命名空间的Service，优先使用\<service-name\>访问，其中service-name代指Service名称。
2. Pod跨命名空间访问Service，优先使用\<service-name\>.\<namespace-name\>访问，其中namespace-name代指Service所处的命名空间。
3. Pod访问集群外部域名时，优先使用FQDN类型域名访问，这类域名通过常见域名最后加半角句号（.）的方式来指定地址，可以避免search搜索域拼接带来的多次无效搜索，例如需要访问www.huaweicloud.com，则优先使用FQDN类型域名www.huaweicloud.com.来访问。
 
#### 使用本地域名缓存
集群规格较大，DNS解析请求量大的情况下可以考虑在节点上缓存DNS解析的结果，推荐使用节点DNS缓存NodeLocal DNSCache，具体使用请参考[使用NodeLocal DNSCache提升DNS性能](https://support.huaweicloud.com/usermanual-cce/cce_10_0362.html)。
