更新时间:2024-05-31 GMT+08:00

调整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副本。

  1. 登录CCE控制台,进入集群,单击左侧导航栏的“节点管理”。
  2. 切换至“节点”页签,选择CoreDNS需要独占的节点,单击“标签与污点管理”。

    添加以下标签:

    • 标签键:node-role.kubernetes.io/coredns
    • 标签值:true

    添加以下污点:

    • 污点键:node-role.kubernetes.io/coredns
    • 污点值:true
    • 污点效果:NoSchedule
    图1 添加标签与污点

  3. 单击左侧导航栏的“插件中心”,选择“CoreDNS域名解析”插件,单击编辑。
  4. 在“节点亲和”中,选择“自定义亲和策略”,并添加上述节点标签。

    在“容忍策略”中添加对上述污点的容忍。

    图2 添加容忍策略

  5. 单击“确定”。

基于HPA自动扩容CoreDNS

由于HPA会频繁触发CoreDNS副本缩容,建议不要使用容器水平扩缩容(HPA)。如果您的场景下必须依赖于HPA,建议您通过“CCE容器弹性引擎”插件配置HPA自动扩容策略,流程如下:

  1. 登录CCE控制台,进入集群,单击左侧导航栏的“插件中心”,在右侧找到CCE容器弹性引擎,单击“安装”。
  2. 配置插件规格后单击“安装”,插件详细说明请参考CCE容器弹性引擎
  3. 在CCE控制台单击左侧导航栏的“工作负载”,命名空间选择“kube-system”,找到CoreDNS实例,单击操作栏中的“弹性伸缩”。

    在“HPA策略”中,您可以根据业务需求,通过CPU利用率、内存利用率等指标自定义HPA策略以自动扩容CoreDNS。

    图3 创建弹性伸缩策略

  4. 单击“创建”,当最新状态为“已启动”时,代表HPA自动扩容CoreDNS策略生效。