节点滚动升级
约束与限制
- 现有节点和工作负载待迁移的节点必须在同一集群。
- 当前仅支持在Kubernetes v1.13.10及以后集群版本执行此操作。
- 默认节点池DefaultPool不支持修改配置。
原有节点在默认节点池
- 创建新的节点池。具体请参见创建节点池。
- 单击节点池名称,单击“操作”区域的“节点列表”可查看新建节点的IP地址。
- 安装配置kubectl。具体请参见通过kubectl连接集群。
- 迁移工作负载。
- 给需要迁移工作负载的节点打上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]-命令去除污点。
- 安全驱逐节点上的工作负载。
其中,[node]为待转移工作负载所在节点的IP。
- 在左侧导航栏中选择“工作负载 > 无状态负载 Deployment”。在工作负载列表中,待迁移工作负载的状态由“运行中”变为“未就绪”。工作负载状态再次变为“运行中”,表示迁移成功。
迁移工作负载时,若工作负载配置了节点亲和性,则工作负载会一直提示“未就绪”等异常情况。请单击工作负载名称进入到负载详情页,在选择“调度策略”页签,删除原节点的亲和性配置,配置新的节点亲和性和反亲和性策略,详情请参见调度策略(亲和与反亲和)。
工作负载迁移成功后,在工作负载详情页的“实例列表”页签,可查看到工作负载状已迁移到1中所创建的节点上。
- 给需要迁移工作负载的节点打上Taint(污点)。
- 删除原有节点。
工作负载迁移成功且运行正常后,即可删除原有节点。
原有节点不在默认节点池
- 拷贝节点池并添加节点。具体请参见拷贝节点池。
- 单击节点池名称操作列的“节点列表”,在节点列表中可查看到新建节点的IP地址。
- 迁移工作负载。
- 单击原节点池后的“编辑”配置污点参数。
- 输入“污点(Taints)”的Key和Value值,Effect选项有NoSchedule、PreferNoSchedule或NoExecute,此处必须选择“NoExecute”,单击“确认添加”。
- NoSchedule:一定不能被调度。
- PreferNoSchedule:尽量不要调度。
- NoExecute:不仅不会调度,还会驱逐Node上已有的Pod。
若需要重新设置污点,需删除已配置污点。
- 单击“确定”。
- 在左侧导航栏中选择“工作负载 > 无状态负载 Deployment”。在工作负载列表中,待迁移工作负载的状态由“运行中”变为“未就绪”。工作负载状态再次变为“运行中”,表示迁移成功。
迁移工作负载时,若工作负载配置了节点亲和性,则工作负载会一直提示“未就绪”等异常情况。请单击工作负载名称进入到负载详情页,在选择“调度策略”页签,删除原节点的亲和性配置,配置新的节点亲和性和反亲和性策略,详情请参见调度策略(亲和与反亲和)。
工作负载迁移成功后,在工作负载详情页的“实例列表”页签,可查看到工作负载状已迁移到1中所创建的节点上。
- 删除原有节点。
工作负载迁移成功且运行正常后,即可删除原有节点。