本文介绍如何使用混沌工程进行Pod OOM(Out of Memory)故障演练。
前提条件
警告 开启混沌工程前请充分评估影响范围,避免使用混沌工程对您的业务造成影响,建议在测试环境上验证后,再应用到生产环境上。
演练目的
- 熟悉Pod异常场景下的报警、诊断方法和SOP处理流程。
- 熟悉应用接入AHAS及AHAS产品的基本操作流程。
步骤一:配置集群报警信息
选择状态为运行中的集群为演练对象,以ACK专有版集群为例说明。
- 登录容器服务管理控制台。
- 在控制台左侧导航栏中,单击集群。
- 在集群列表页面中,单击目标集群名称或者目标集群右侧操作列下的详情。
- 在集群管理页左侧导航栏中,选择。
说明 首次登录需根据页面提示进行安装,若显示组件未升级,需单击开始升级完成升级后,进入报警配置页面。
- 在报警配置页面,按照以下步骤完成联系人创建和联系人分组创建。
- 单击联系人管理页签,然后单击创建。
- 在创建联系人页面,输入姓名、电话和邮箱。然后单击确定。
联系人创建完成后,您将会收到验证激活短信或验证激活邮件,请按相应提示进行激活操作。
- 单击联系人分组管理页签,然后单击创建。
- 在创建分组页面,输入分组名称,然后选择分组联系人,最后单击确定。
选择分组联系人时,将可选联系人添加到已选联系人列表,也可移除已选联系人。

- 在报警配置页面,单击报警规则管理页签。
- 将集群容器副本异常报警规则集的启动状态设置为开启。
报警规则集合容器场景的监控报警能力,提供报警的统一配置管理。此处以
集群容器副本异常报警规则集为例,更多报警配置,请参考
容器服务报警管理。
- 单击编辑通知对象,添加需要接收此报警规则集的联系人分组。
步骤二:为演练集群接入应用
您需要执行以下步骤为目标演练集群部署所需的应用。
创建应用
- 登录容器服务管理控制台。
- 在控制台左侧导航栏中,单击集群。
- 在集群列表页面中,单击目标集群名称或者目标集群右侧操作列下的详情。
- 在集群管理页左侧导航栏中,选择。
- 在无状态页面顶部,选择命名空间为default,然后单击使用镜像创建。
- 在应用基本信息配置向导中,设置应用的基本信息。然后单击下一步。
本例应用名称设置为nginx。
- 在容器配置配置向导中,输入镜像名称、镜像Tag和资源限制。然后单击下一步。
本次使用的nginx应用配置的CPU限额为1 Core,内存限制额为1024 MiB。
- 在高级配置配置向导中,找到标签和注解区域,单击Pod标签后的添加。标签添加完成后,单击下方创建。
- 输入第一个Pod标签的名称为ahas.aliyun/app-instance、值为nginx-app。
- 输入第二个Pod标签的名称为ahas.aliyun/app-group、值为nginx-group。

- 在创建完成页面,单击查看应用详情。
- 在nginx页面的容器组页签下可看到nginx应用正常运行。

- 在nginx页面右上角,单击查看Yaml,可看到无状态应用nginx的YAML配置中看到相应标签。

部署探针
在执行演练前,需要为目标集群安装AHAS的探针,对应组件ack-ahas-pilot安装操作如下:
- 在控制台左侧导航栏中选择。
- 在应用市场页面单击应用目录页签,然后搜索并单击ack-ahas-pilot。
- 在ack-ahas-pilot页面,单击一键部署。
- 在弹出页面中,选择集群和命名空间,然后单击下一步。
- 在参数配置页面,单击确定。
查看部署结果
- 在集群管理页左侧导航栏中,选择。
- 在无状态页面顶部,选择命名空间为ahas,可看到如下应用正常运行。
步骤三:实施演练
配置演练
- 登录AHAS控制台。
- 在顶部菜单栏,选择与演练集群相同的地域。
- 在控制台左侧导航栏中选择。
- 在我的空间页面,选择进入演练配置页面。
- 在演练配置页面,输入演练基本信息完成演练基本配置。
界面配置如下图所示。

- 在演练配置页面,单击配置页签配置演练分组信息,然后单击添加演练内容。
界面配置如下图所示。

说明
- 演练应用:在下拉框中搜索并选中nginx-app。此处为步骤8中创建的ahas.aliyun/app-instance的值,本文的值为nginx-app。
- 应用分组:在下拉框中搜索并选中nginx-group。此处为步骤8中创建的ahas.aliyun/app-group的值,本文的值为nginx-group。
- 机器列表:nginx应用创建成功后,会有对应的机器列表项供选择。
- 在弹出的选择演练故障页面,选择,然后单击确定。
- 在配置页面的演练内容区域,单击容器内内存负载,选择目标容器名称为nginx,单击保存,然后单击下一步。
说明 保存操作完成后,下一步才能变成激活可单击状态。

- 根据页面提示,继续单击下一步,弹出演练成功页面,然后单击演练详情进入刚创建的演练详情页面。
您可以在演练详情页面执行演练操作。
执行演练
- 在演练详情页面,单击配置页签,然后单击演练。
说明 若未购买资源包或资源包不足,请根据提示完成资源包的购买,才能继续执行演练操作。
- 在弹出框中单击确认进入如下演练执行页面。

说明 演练开始后,可通过监控查看目标容器的内存资源耗尽,出现OOM事件和报警;停止演练后,目标容器会自动恢复。
查看演练状态
演练开始后,可通过以下方式监控查看目标容器的内存资源已被耗尽,出现OOM事件和报警;停止演练后,目标容器会自动恢复。
- 查看Pod内存使用情况。
- 登录容器服务管理控制台。
- 在控制台左侧导航栏中,单击集群。
- 在集群列表页面中,单击目标集群名称或者目标集群右侧操作列下的详情。
- 在集群管理页左侧导航栏中,选择。
- 在Prometheus监控页面,单击集群监控概览页签,然后单击Pods memory usage查看对应监控大盘。
在监控大盘右侧,选中正在演练的Pod,可以查看Pod的内存监控曲线,观察Pod的内存资源是否耗尽。

- 查看容器组事件。
- 在集群管理页左侧导航栏中,选择。
- 在容器组页面中,在顶部选择对应命名空间,单击目标Pod名称或者目标Pod右侧操作列下的详情。
- 在Pod详情页面中,单击下方事件页签可查看Pod的事件信息。
出现OOM异常时,可在事件页签中看到包含pod was OOM killed信息的OOM事件。
- 查看报警信息。
- 在集群管理页左侧导航栏中,选择,然后单击报警历史。
在报警历史页签中可看到包含OOM killed关键字的报警记录。
- 查看报警短信或邮件。
若您配置了报警联系人的电话及邮箱,可收到相应的报警短信和邮件;如您能成功接收报警信息,说明此次演练验证成功。
- 查看SOP处理手册处理对应的报警问题。