《企业级云原生白皮书项目实战》——第三章 容器——3.2 业务部署——3.2.10 服务发现(1) https://developer.aliyun.com/article/1229234?groupCode=supportservice
合理调整集群CoreDNS部署状态
合理调整CoreDNS副本数
建议您在任何情况下设置CoreDNS副本数应至少为2,且副本数维持在一个合适的水位以承载整个集群的解析。
CoreDNS所能提供的域名解析QPS与CPU消耗成正相关,开启缓存的情况下,单个CPU可以支撑10000+ QPS的域名解析请求。不同类型的业务对域名请求的QPS需求存在较大差异,您可以观察每个CoreDNS副本的峰值CPU使用量,如果其在业务峰值期间占用CPU大于一核,建议您对CoreDNS进行副本扩容。无法确定峰值CPU使用量时,可以保守采用副本数和集群节点数1:8的比值来部署,即每扩容8个集群节点,增加一个CoreDNS副本。
合理分配CoreDNS副本运行的位置
建议您在部署CoreDNS副本时,应将CoreDNS副本打散在不同可用区、不同集群节点上,避免单节点、单可用区故障。CoreDNS默认配置了按节点的弱反亲和性,可能会因为节点资源不足导致部分或全部副本部署在同一节点上,如果遇到这种情况,请删除Pod重新触发其调度来调整。
CoreDNS所运行的集群节点应避免CPU、内存用满的情况,否则会影响域名解析的QPS和响应延迟。
合理配置CoreDNS
关闭kube-dns服务的亲和性配置
亲和性配置可能导致CoreDNS不同副本间存在较大负载差异,建议按以下步骤关闭
修改服务kube-dns的yaml配置删除以下所有内容:
关闭Autopath插件
部分早期版本的CoreDNS开启了Autopath插件,该插件在一些极端场景下会导致解析结果出错,请确认其是否处于开启状态,并编辑配置文件将其关闭。更多信息,请参见#3765。
说明 关闭Autopath插件后,客户端发起的域名解析请求QPS最高会增加3倍,解析单个域名耗时最高增加3倍,请关注CoreDNS负载和业务影响。
1.执行kubectl -n kube-system edit confifigmap coredns命令,打开CoreDNS配置文件。
2.删除autopath @kubernetes一行后保存退出。
3.检查CoreDNS Pod运行状态和运行日志,运行日志中出现reload字样后说明修改成功。
《企业级云原生白皮书项目实战》——第三章 容器——3.2 业务部署——3.2.10 服务发现(3) https://developer.aliyun.com/article/1229220?groupCode=supportservice