
# 如何设置容器内的DNS策略？
CCE支持通过dnsPolicy标记每个Pod配置不同的DNS策略：
- **None：**表示空的DNS设置，这种方式一般用于想要自定义DNS配置的场景，而且，往往需要和dnsConfig配合一起使用达到自定义DNS的目的。
- **Default：**从运行所在的节点继承名称解析配置。即容器的域名解析文件使用kubelet的"--resolv-conf"参数指向的域名解析文件（CCE集群在该配置下对接云上DNS）。
- **ClusterFirst：**这种方式表示Pod内的DNS使用集群中配置的DNS服务，简单来说，就是使用Kubernetes中kubedns或coredns服务进行域名解析。如果解析不成功，才会使用宿主机的DNS配置进行解析。
如果未明确指定dnsPolicy，则默认使用"ClusterFirst"：
- 如果将dnsPolicy设置为"Default"，则名称解析配置将从运行pod的工作节点继承。
- 如果将dnsPolicy设置为"ClusterFirst"，则DNS查询将发送到kube-dns服务。 对于以配置的集群域后缀为根的域的查询将由kube-dns服务应答。所有其他查询（例如，www.kubernetes.io）将被转发到从节点继承的上游名称服务器。在此功能之前，通常通过使用自定义解析程序替换上游DNS来引入存根域。但是，这导致自定义解析程序本身成为DNS解析的关键路径，其中可伸缩性和可用性问题可能导致集群丢失DNS功能。此特性允许用户在不接管整个解析路径的情况下引入自定义解析。
  
如果某个工作负载不需要使用集群内的coredns，可以使用kubectl命令或API将此策略设置为dnsPolicy: Default。
