更新时间:2024-09-29 GMT+08:00

节点滚动升级

操作场景

节点滚动升级就是先创建新节点,然后将工作负载迁移到新的节点上,再删除旧节点。迁移流程如图1所示。

图1 节点迁移流程

约束与限制

  • 现有节点和工作负载待迁移的节点必须在同一集群。
  • 当前仅支持在Kubernetes v1.13.10及以后集群版本执行此操作。
  • 默认节点池DefaultPool不支持修改配置。

原有节点在默认节点池

  1. 创建新的节点池。具体请参见创建节点池
  2. 单击节点池名称,单击“操作”区域的“节点列表”可查看新建节点的IP地址。
  1. 安装配置kubectl。具体请参见通过kubectl连接集群
  1. 迁移工作负载。

    1. 给需要迁移工作负载的节点打上Taint(污点)。

      kubectl taint node [node] key=value:[effect]

      其中,[node]为待迁移工作负载所在节点的IP;[effect]取值为NoSchedule、PreferNoSchedule或NoExecute,此处必须设置为NoSchedule。

      • NoSchedule:一定不能被调度。
      • PreferNoSchedule:尽量不要调度。
      • NoExecute:不仅不会调度,还会驱逐Node上已有的Pod。

      若需要重新设置污点时,可执行kubectl taint node [node] key:[effect]-命令去除污点。

    2. 安全驱逐节点上的工作负载。

      kubectl drain [node]

      其中,[node]为待转移工作负载所在节点的IP。

    3. 在左侧导航栏中选择“工作负载 > 无状态负载 Deployment”。在工作负载列表中,待迁移工作负载的状态由“运行中”变为“未就绪”。工作负载状态再次变为“运行中”,表示迁移成功。

    迁移工作负载时,若工作负载配置了节点亲和性,则工作负载会一直提示“未就绪”等异常情况。请单击工作负载名称进入到负载详情页,在选择“调度策略”页签,删除原节点的亲和性配置,配置新的节点亲和性和反亲和性策略,详情请参见设置节点亲和调度(nodeAffinity)

    工作负载迁移成功后,在工作负载详情页的“实例列表”页签,可查看到工作负载状已迁移到1中所创建的节点上。

  1. 删除原有节点。

    工作负载迁移成功且运行正常后,即可删除原有节点。

原有节点不在默认节点池

  1. 复制节点池并添加节点。具体请参见复制节点池
  2. 单击节点池名称操作列的“节点列表”,在节点列表中可查看到新建节点的IP地址。
  1. 迁移工作负载。

    1. 单击原节点池后的“编辑”配置污点参数。
    2. 输入“污点(Taints)”的Key和Value值,Effect选项有NoSchedule、PreferNoSchedule或NoExecute,此处必须选择“NoExecute”,单击“确认添加”。
      • NoSchedule:一定不能被调度。
      • PreferNoSchedule:尽量不要调度。
      • NoExecute:不仅不会调度,还会驱逐Node上已有的Pod。

      若需要重新设置污点,需删除已配置污点。

    3. 单击“确定”。
    4. 在左侧导航栏中选择“工作负载 > 无状态负载 Deployment”。在工作负载列表中,待迁移工作负载的状态由“运行中”变为“未就绪”。工作负载状态再次变为“运行中”,表示迁移成功。

    迁移工作负载时,若工作负载配置了节点亲和性,则工作负载会一直提示“未就绪”等异常情况。请单击工作负载名称进入到负载详情页,在选择“调度策略”页签,删除原节点的亲和性配置,配置新的节点亲和性和反亲和性策略,详情请参见设置节点亲和调度(nodeAffinity)

    工作负载迁移成功后,在工作负载详情页的“实例列表”页签,可查看到工作负载状已迁移到1中所创建的节点上。

  1. 删除原有节点。

    工作负载迁移成功且运行正常后,即可删除原有节点。