背景
容器服务的超级节点,相较普通节点,支持快速弹性伸缩,将以往多个节点转为一个节点进行管理,使得管理承载的容器资源更为简单。然而,容器节点可能会遇到硬件故障、资源不足、网络故障等问题,导致容器实例无法正常运行。
为了提高容器服务的可靠性和稳定性,需进行超级节点故障演练。通过演练,可以验证系统在容器节点出现故障时能否正常运行,提前暴露此故障场景下的一系列问题,以便优化系统架构并做好应急预案。
演练实施
步骤一:演练准备
购买标准集群容器实例,购买超级节点,部署测试服务。
购买 Serverless 集群容器实例,自带超级节点,部署测试服务。
步骤二:创建演练
1. 登录 云顾问 > 混沌演练控制台,进入演练管理页面,点击新建演练。
2. 创建空白演练,点击跳过,新建空白演练。
3. 填写演练基本信息,根据需要填写关联资源标签,然后点击下一步。
4. 创建两个动作组,选择资源类型为容器,分别添加标准集群超级节点和 Serverless 集群超级节点资源对象。
5. 查找演练实例并添加到动作组。
6. 添加演练动作,点击立即添加,然后选择故障动作:Node封锁、Node drain(Node驱逐)。
7. 全局配置,确认演练动作组,选择演练执行方式,及配置护栏策略。
8. 点击提交,完成创建演练。
步骤三:执行演练
1. 进入演练详情,单击前往动作组执行。
2. 按照已编排完成的动作顺序执行。
3. 执行 Node 封锁和 Node 封锁恢复。
3.1 执行 Node 封锁故障动作,查看动作卡片中的执行日志,并观察节点状态,发现已经被封锁,无法被调度。
3.2 执行 Node 封锁的故障恢复动作,解除节点封锁,观察节点状态。
4. 执行 Node drain 和 Node drain 恢复。
4.1 查看节点当前 Pod 列表,检查服务的高可用策略,保证服务所在 Pod 在被节点驱逐后其他节点有足够重启 Pod 的资源容量。
4.2 执行 Node drain 故障动作,造成节点内资源驱逐,动作卡片中会提示出被驱逐的 Pod,方便观察被影响到的服务,并对超级节点进行封锁,不可再被调度。同时经由集群调度,被驱逐的 Pod 在其他 Node 重建恢复服务。
4.3 执行故障恢复。节点解除封锁,恢复可调度状态。