背景介绍
当云容器引擎(CCE)节点的内存被异常占用(例如,由应用内存泄漏、缓存数据无限制膨胀或资源限制配置不当引起),其内存使用率会飙升。一旦可用内存耗尽,系统可能会频繁进行内存交换,甚至触发 OOM Killer(Out-Of-Memory Killer)强制终止 Pod,导致服务中断。本演练模拟节点内存资源被持续占用的高负载场景,帮助您检验 Pod 的资源限制和服务质量配置、评估 kubelet 的驱逐策略,验证 HPA(水平Pod自动伸缩)的有效性。
基本原理
启动自定义程序不断申请内存,模拟主机内存负载升高。
注意
设置高负载的内存故障注入后,可能会使得机器无法登入与控制,请谨慎使用。
故障注入
1、纳管实例资源
导航至 故障演练 > 目标应用 > 应用资源 页面。
在资源类型页签中选择云容器引擎,然后单击添加资源。
在弹出的对话框中,勾选目标云容器引擎实例,单击确定。
在应用资源页面的云容器引擎列表中,找到您的目标集群,单击其操作列的节点列表。
在弹出的对话框中,单击添加节点。
勾选您希望进行故障演练的一个或多个节点,然后单击确定。
注意
当您首次对 CCE 集群执行演练时,系统会自动在该集群中安装演练探针(以 Deployment 和 DaemonSet 形式部署)。
您也可以提前在 故障演练 > 目标应用 > 探针管理 > 云容器引擎 界面查看探针的基本信息,并手动执行安装或更新操作。
2、编排演练任务
导航至 故障演练 > 目标应用 > 演练管理页面,单击新建演练。
在基本信息页面,按提示填写演练名称和描述,然后单击下一步。
在演练对象配置页面:
配置动作组:为动作组命名,资源类型选择云容器引擎节点。
添加实例:单击添加实例,勾选上一步中添加的云容器引擎节点实例。
添加故障动作:单击立即添加,在列表中选择内存高负载动作。
在弹出的参数配置框中,配置所需参数,然后单击确定。
持续时间:故障动作持续时间。
内存占用率:目标占用率(取值 0-100)。
注意
建议您将目标内存占用率设置在 95% 以下,为操作系统内核和 kubelet 等关键系统进程预留足够的内存。若内存被完全耗尽,可能导致节点无响应、探针失联甚至节点进入 NotReady 状态,从而需要强制重启节点才能恢复。
3、配置全局策略
在全局配置页面,按需添加保护策略和监控指标。
配置完成后,单击完成按钮,创建演练任务。
4、发起故障注入
发起演练:在演练管理列表找到对应演练任务,单击操作列的执行演练,在新页面中点击发起新演练。
进入实验:系统将自动跳转到本次演练的运行详情页,或在演练执行记录列表点击对应执行实例的详情进入。
注入故障:在动作组中,找到内存高负载动作卡片,单击执行。
查看日志:单击动作卡片本身,在右侧弹出的侧边栏中查看执行详情。
效果验证
在故障注入期间,您可以通过以下方式验证演练效果:
1、观测实例指标:
登录云容器引擎控制台,进入目标实例节点的监控指标页,观测内存使用率指标。
2、业务应用验证:
观察运行在目标节点上的业务 Pod 是否出现响应变慢、处理失败率升高等现象。
执行 kubectl get pod -o wide 查看 Pod 状态,确认是否有 Pod 因 OOMKilled 而被重启。
如果为相关 Pod 配置了基于内存的 HPA 策略,观察是否触发了自动扩容。
验证您的业务监控告警系统是否成功捕获到节点资源异常或应用性能劣化,并触发了相应告警。