全部文档
当前文档

暂无内容

如果没有找到您期望的内容,请尝试其他搜索词

文档中心

KCE集群CoreDNS风险及升级方案

最近更新时间:2024-06-17 11:36:41

问题

2023年11月30日之前创建的KCE集群,coredns deployment的污点容忍策略,配置了“容忍一切污点”。如下:

      tolerations:
      - operator: Exists

引入该配置的目的,是为了解决客户给KCE集群中的节点打上自定义的污点,导致新建或者重建coredns pod无法调度的问题,但是,该配置会导致如下问题:

  1. 在coredns所在的节点不健康时(如挂掉或其他原因导致NotReady),coredns的pod不会发生漂移

  2. 手动删除coredns pod重建,新建的pod仍有可能调度到NotReady的节点上

风险分析

KCE集群默认的coredns副本数为2,且coredns多个副本会调度到不同的节点上。在默认配置(即coredns副本数为2)的场景下,如果其中一个coredns pod所在的节点故障(另一个节点正常),会导致只有一个coredns pod提供服务,coredns服务的可用性降低,如果2个coredns所在的节点全部故障,会导致集群全部域名解析失败。

如果用户修改了coredns副本数为N,当一个coredns所在节点故障时,集群中coredns可用性降低1/N。当N个coredns所在节点全部故障时,导致集群全部域名解析请求失败。

升级方案

托管集群

修改coredns deployment的yaml,去掉"容忍一切污点"的配置(删除- operator: Exists这一行)

独立部署集群

  1. 修改coredns deployment的yaml,去掉"容忍一切污点"的配置(删除- operator: Exists这一行)

  2. 增加对master节点的污点容忍(注意,如果master节点上还有其他污点,也需要增加相应的容忍,否则coredns pod无法调度):

      - effect: NoSchedule
        key: dedicated
        operator: Equal
        value: master

升级风险分析

  1. 升级过程中,由于yaml发生变化,会导致coredns pod重建,可能会遇到五分钟内全集群范围内的解析超时或失败的情况。这是linux内核ipvs模块的缺陷导致,详见:https://github.com/torvalds/linux/commit/35dfb013149f74c2be1ff9c78f14e6a3cd1539d1

  2. 去掉“容忍一切污点”的配置以后:

  • 在独立部署集群中,客户后续给master新增污点,需要同步修改coredns deployment的污点容忍,加入对新增污点的容忍,否则可能导致coredns节点故障时新的coredns pod无法调度

  • 在托管集群中,客户后续给node新增污点,需要同步修改coredns deployment的污点容忍,加入对新增污点的容忍,否则可能导致coredns节点故障时新的coredns pod无法调度

缓解措施

  1. 增加coredns副本数,减轻coredns单个节点故障时,集群中域名解析失败的概率。参考:https://docs.ksyun.com/documents/43667?type=3

文档导读
纯净模式常规模式

纯净模式

点击可全屏预览文档内容
文档反馈