背景与意义
在 Kubernetes 集群中,节点是运行 Pod 的关键基础设施。当需要暂时停止节点上的工作负载调度(例如节点维护、升级或问题排查)时,通常会对节点进行封锁(Cordon)。通过将节点设置为不可调度状态,可以有效保护节点上的运行环境,避免新 Pod 被分配到该节点。
云顾问-混沌演练提供了节点封锁的混沌演练功能,帮助用户验证以下能力:
1. 集群调度器是否能正确响应节点封锁事件。
2. 服务是否能在节点封锁情况下保持业务连续性。
3. 提升集群调度策略的可靠性和灵活性。
通过模拟节点封锁操作,用户可以验证集群在特定节点不可用情况下的表现,并优化容灾及调度策略。
演练步骤
步骤一:演练准备
新建容器节点:在容器服务集群中购买一个新的原生节点,并在节点上部署需要测试的服务,确保该节点上有运行中的 Pod。
已有节点:如果集群已有运行的原生节点,可直接使用现有节点进行演练。
步骤二:创建演练
1. 登录 腾讯云云顾问控制台,选择左侧导航中的混沌演练 > 演练管理。
2. 在演练管理页面,单击新建演练。
3. 在新建演练 > 经验选择页面,选择跳过,新建空白演练。
4. 填写演练信息,单击下一步。
5. 进入演练对象配置页面,填写动作组编排信息。其中,资源类型选择容器,资源对象选择标准集群普通节点或标准集群原生节点。

6. 在动作组的实例列表中选择添加实例,单击确定。


7. 在演练动作中,单击立即添加,添加故障动作。
8. 选择 Node 封锁故障动作,单击下一步。

9. 节点封锁无需额外参数配置,单击确定。
10. 动作参数配置完成之后,单击下一步。根据实际情况配置护栏策略和监控指标,单击提交,完成演练创建。
步骤三:执行演练
1. 登录 容器服务控制台,选择左侧导航栏中的集群。
2. 单击集群名称,进入集群详情页。
3. 在节点管理中,查看故障执行前的节点状态。
节点健康检查:在演练开始前,确保目标节点处于正常运行状态。

工作负载检查:查看节点上的 Pod 是否正常运行。

4. 登录 云顾问 > 混沌演练控制台,进入演练详情,单击前往动作组执行。
5. 单击执行,启动 Node 封锁操作,开始演练。

6. 单击动作卡片,查看动作执行详情。
7. 查看执行日志,确认执行成功。确认节点状态是否变为已封锁,验证集群调度器是否停止将新 Pod 分配到该节点。
步骤四:验证演练效果
1. 节点状态:在 容器服务控制台,节点管理页面中应变为已封锁状态。

2. Pod 调度情况:检查是否没有新的 Pod 调度到该节点,确保原有 Pod 仍在节点上正常运行。

3. 服务可用性:验证服务在节点封锁情况下是否仍能正常对外提供服务。
步骤五:恢复操作
1. 登录 云顾问 > 混沌演练控制台,进入演练详情,单击前往动作组执行。
2. 单击执行,启动 Node封锁恢复 操作,解除目标节点的封锁状态。

3. 检查恢复后目标节点是否已恢复为正常状态,确保新 Pod 可以正常调度到该节点。

步骤六:验证恢复结果
1. 节点状态:在 容器服务控制台,节点管理页面中确保节点状态恢复为健康状态,且可以接受新的 Pod 调度。
2. 服务正常性:检查集群内的所有服务是否正常运行。
注意事项
1. 服务影响评估:节点封锁不会影响已运行在该节点上的 Pod,但会阻止新 Pod 调度到该节点。
2. 与调度策略的兼容性:确保调度策略(如 PodDisruptionBudget)允许在封锁节点的情况下正常调度 Pod。
3. 封锁解除:演练完成后,务必解封节点,恢复其可调度状态。