调整CoreDNS部署状态
CCE集群默认安装CoreDNS插件,CoreDNS应用默认情况下与您的业务容器运行在同样的集群节点上,部署时的注意事项如下:
合理调整CoreDNS副本数
建议您在任何情况下设置CoreDNS副本数应至少为2,且副本数维持在一个合适的水位以承载整个集群的解析。CCE集群安装CoreDNS插件的默认实例数为2。
- CoreDNS使用资源的规格与解析能力相关,修改CoreDNS副本数量、CPU/内存的大小会对影响解析性能,请经过评估后再做修改。
- CoreDNS插件默认配置了podAntiAffinity(Pod反亲和),当一个节点已有一个CoreDNS Pod时无法再添加新的Pod,即一个节点上只能运行一个CoreDNS Pod。如果您配置的CoreDNS副本数量大于集群节点数量,会导致多出的Pod无法调度。建议Pod的副本数量不大于节点的数量。
合理分配CoreDNS所在位置
- CoreDNS插件默认配置了podAntiAffinity(Pod反亲和),各个CoreDNS副本会强制部署在不同节点上。建议您将CoreDNS副本打散在不同可用区的节点上,避免单可用区故障。
- CoreDNS所运行的集群节点应避免CPU、内存用满的情况,否则会影响域名解析的QPS和响应延迟。建议您使用插件自定义参数完成CoreDNS隔离部署。
使用自定义参数完成CoreDNS隔离部署
建议CoreDNS插件与资源使用率高的负载隔离部署,防止因业务波动导致CoreDNS性能下降或不可用。您可以通过自定义参数完成CoreDNS独占节点部署。
节点数应大于CoreDNS副本数,避免单个节点上运行多个CoreDNS副本。
- 登录CCE控制台,进入集群,单击左侧导航栏的“节点管理”。
- 切换至“节点”页签,选择CoreDNS需要独占的节点,单击“标签与污点管理”。
添加以下标签:
- 标签键:node-role.kubernetes.io/coredns
- 标签值:true
添加以下污点:
- 污点键:node-role.kubernetes.io/coredns
- 污点值:true
- 污点效果:NoSchedule
图1 添加标签与污点
- 单击左侧导航栏的“插件中心”,选择“CoreDNS域名解析”插件,单击编辑。
- 在“节点亲和”中,选择“自定义亲和策略”,并添加上述节点标签。
在“容忍策略”中添加对上述污点的容忍。
图2 添加容忍策略
- 单击“确定”。
基于HPA自动扩容CoreDNS
由于HPA会频繁触发CoreDNS副本缩容,建议不要使用容器水平扩缩容(HPA)。如果您的场景下必须依赖于HPA,建议您通过“CCE容器弹性引擎”插件配置HPA自动扩容策略,流程如下:
- 登录CCE控制台,进入集群,单击左侧导航栏的“插件中心”,在右侧找到CCE容器弹性引擎,单击“安装”。
- 配置插件规格后单击“安装”,插件详细说明请参考CCE容器弹性引擎。
- 在CCE控制台单击左侧导航栏的“工作负载”,命名空间选择“kube-system”,找到CoreDNS实例,单击操作栏中的“弹性伸缩”。
在“HPA策略”中,您可以根据业务需求,通过CPU利用率、内存利用率等指标自定义HPA策略以自动扩容CoreDNS。
图3 创建弹性伸缩策略
- 单击“创建”,当最新状态为“已启动”时,代表HPA自动扩容CoreDNS策略生效。