背景与意义
在 Kubernetes 环境中,节点是运行 Pod 的关键基础设施。当节点需要进行维护、升级或出现故障时,通常会使用 Node drain 操作将节点上的 Pod 驱逐到其他节点,以确保服务的连续性和高可用性。云顾问-混沌演练提供了节点 Node drain 的混沌演练功能,帮助用户验证以下能力:
1. 集群调度器是否能自动重新分配 Pod。
2. 服务是否在节点不可用时能够保持业务连续性。
3. 提升系统在极端情况下的容灾和恢复能力。
通过模拟节点 drain 操作,用户可以发现可能的调度问题,并优化容灾策略。
演练步骤
步骤一:演练准备
1. 购买标准集群实例:确保已部署 Kubernetes 标准集群。
2. 部署测试服务:在节点上部署至少一个测试服务,用于观察节点操作的影响。
步骤二:配置演练资源
新建容器节点:创建一个新的节点,并将其加入集群。部署测试服务(如 Nginx 或简单的 Pod 服务)。
已有节点:如果集群已有运行的原生节点,可直接使用现有节点进行演练。
步骤三:创建演练
1. 登录 腾讯云云顾问控制台,选择左侧导航中的混沌演练 > 演练管理。
2. 在演练管理页面,单击新建演练。
3. 在新建演练 > 经验选择页面,选择跳过,新建空白演练。
4. 填写演练信息,单击下一步。
5. 进入演练对象配置页面,填写动作组编排信息。其中,资源类型选择容器,资源对象选择标准集群普通节点或标准集群原生节点。

6. 在动作组的实例列表中选择添加实例。
7. 在演练动作中,单击立即添加,添加故障动作。
8. 选择 Node drain 故障动作,单击下一步。

9. 设置动作参数,完成后单击确定。

Pod 驱逐超时时间(s):指定驱逐 Pod 的超时时间,在指定时间内 Pod 未驱逐完成动作会执行失败。
删除含有本地存储的 Pod:等同于
--delete-local-data
,如果为是,当 pods 使用 emptyDir 时会被驱逐,此时有删除本地数据风险。10. 动作参数配置完成之后,单击下一步。根据实际情况配置护栏策略和监控指标,单击提交,完成演练创建。


步骤四:执行演练
1. 登录 容器服务控制台,选择左侧导航栏中的集群。
2. 单击集群名称,进入集群详情页。
3. 在节点管理中,查看故障执行前的节点状态。
节点健康检查:在演练开始前,确保目标节点处于正常运行状态。

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

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

6. 单击动作卡片,查看动作执行详情。


7. 查看执行日志,确认执行成功。验证节点状态是否变为不可调度,节点上的 Pod 是否被重新调度到其他可用节点。
步骤五:验证演练效果
1. 节点状态:在 容器服务控制台,节点管理页面中是否变为已封锁状态。

2. Pod 调度情况:检查节点上的所有 Pod 是否被成功迁移到其他节点,并保持运行正常。

3. 服务可用性:验证服务在节点不可用时是否仍能正常对外提供服务。
步骤六:恢复操作
1. 登录 云顾问 > 混沌演练控制台,进入演练详情,单击前往动作组执行。
2. 单击执行,启动 Node drain 恢复操作,并确认恢复动作执行成功。

3. 查看恢复后节点状态是否为健康态。
