# 节点滚动升级
#### 操作场景
节点滚动升级就是先创建新节点，然后将工作负载迁移到新的节点上，再删除旧节点。迁移流程如[图1]所示。
图1节点迁移流程   
![](https://support.huaweicloud.com/usermanual-cce/zh-cn_image_0000001199181340.png "点击放大")
#### 约束与限制
- 现有节点和工作负载待迁移的节点必须在同一集群。
- 当前仅支持在Kubernetes v1.13.10及以后集群版本执行此操作。
- 默认节点池DefaultPool不支持修改配置。
 
#### 原有节点在默认节点池
1. 创建新的节点池。具体请参见[创建节点池](https://support.huaweicloud.com/usermanual-cce/cce_10_0012.html)。
2. 单击节点池名称，单击"操作"区域的"节点列表"可查看新建节点的IP地址。

3. 安装配置kubectl。具体请参见[通过kubectl连接集群](https://support.huaweicloud.com/usermanual-cce/cce_10_0107.html)。

4. 迁移工作负载。 
   1. 给需要迁移工作负载的节点打上Taint（污点）。
      ```
      kubectl taint node <node-name> <key>=<value>:<effect>
      ```
      其中，*\<node-name\>* 为待迁移工作负载所在节点的IP；*\<key\>* 为污点的键名；*\<value\>* 为污点的值；*\<effect\>*取值为NoSchedule、PreferNoSchedule或NoExecute，此处必须设置为NoSchedule。
      - NoSchedule：一定不能被调度。
      
      - PreferNoSchedule：尽量不要调度。
      
      - NoExecute：不仅不会调度，还会驱逐Node上已有的Pod。
      
      
      ![](https://support.huaweicloud.com/usermanual-cce/public_sys-resources/note_3.0-zh-cn.png)
      若需要重新设置污点时，可执行以下命令去除污点。
      ```
      kubectl taint node <node-name> <key>:<effect> -
      ```
      
   
   2. 安全驱逐节点上的工作负载。
      ```
      kubectl drain <node>
      ```
      其中，*\<node\>*为待转移工作负载所在节点的IP。
      
   
   3. 在左侧导航栏中选择"工作负载 \> 无状态负载 Deployment"。在工作负载列表中，待迁移工作负载的状态由"运行中"变为"未就绪"。工作负载状态再次变为"运行中"，表示迁移成功。
   
   
   ![](https://support.huaweicloud.com/usermanual-cce/public_sys-resources/note_3.0-zh-cn.png)
   迁移工作负载时，若工作负载配置了节点亲和性，则工作负载会一直提示"未就绪"等异常情况。请单击工作负载名称进入到负载详情页，在选择"调度策略"页签，删除原节点的亲和性配置，配置新的节点亲和性和反亲和性策略，详情请参见[设置节点亲和调度（nodeAffinity）](https://support.huaweicloud.com/usermanual-cce/cce_10_0892.html)。
   工作负载迁移成功后，在工作负载详情页的"实例列表"页签，可查看到工作负载已迁移到[1]中所创建的节点上。
   
   

5. 删除原有节点。 
   工作负载迁移成功且运行正常后，即可删除原有节点。
   
   
 
#### 原有节点不在默认节点池
1. 复制节点池并添加节点。具体请参见[复制节点池](https://support.huaweicloud.com/usermanual-cce/cce_10_0655.html)。
2. 单击节点池名称操作列的"节点列表"，在节点列表中可查看到新建节点的IP地址。

3. 迁移工作负载。 
   1. 单击原节点池后的"编辑"配置污点参数。
   
   2. 输入"污点(Taints)"的Key和Value值，Effect选项有NoSchedule、PreferNoSchedule或NoExecute，此处必须选择"NoExecute"，单击"确认添加"。
      - NoSchedule：一定不能被调度。
      
      - PreferNoSchedule：尽量不要调度。
      
      - NoExecute：不仅不会调度，还会驱逐Node上已有的Pod。
      
      
      ![](https://support.huaweicloud.com/usermanual-cce/public_sys-resources/note_3.0-zh-cn.png)
      若需要重新设置污点，需删除已配置污点。
      
   
   3. 单击"确定"。
   
   4. 在左侧导航栏中选择"工作负载 \> 无状态负载 Deployment"。在工作负载列表中，待迁移工作负载的状态由"运行中"变为"未就绪"。工作负载状态再次变为"运行中"，表示迁移成功。
   
   
   ![](https://support.huaweicloud.com/usermanual-cce/public_sys-resources/note_3.0-zh-cn.png)
   迁移工作负载时，若工作负载配置了节点亲和性，则工作负载会一直提示"未就绪"等异常情况。请单击工作负载名称进入到负载详情页，在选择"调度策略"页签，删除原节点的亲和性配置，配置新的节点亲和性和反亲和性策略，详情请参见[设置节点亲和调度（nodeAffinity）](https://support.huaweicloud.com/usermanual-cce/cce_10_0892.html)。
   工作负载迁移成功后，在工作负载详情页的"实例列表"页签，可查看到工作负载已迁移到[1]中所创建的节点上。
   
   

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