You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用kubectl模拟Kubernetes多Pod同时故障与重启测试

Kubernetes Pod故障模拟操作指南

首先明确核心前提:只要管控Pod的ReplicaSet资源本身未被删除,手动执行kubectl delete pod删除下属副本的操作,只会触发Pod的销毁重建流程,ReplicaSet始终会将运行的Pod副本数维持在配置值(你的场景中为2个),不会永久删除对应工作负载。

1. 单Pod故障/重启场景模拟方式

常用测试方式按影响范围从小到大排序:

  • 模拟容器内服务崩溃重启:不需要销毁整个Pod,执行kubectl exec -it <目标Pod名> -n <服务所在命名空间> -- kill 1即可。容器内PID为1的进程是服务主进程,被杀掉后会触发kubelet按照配置的重启策略重启容器,Pod本身的网络标识、所在节点都不会变化,适合模拟服务进程假死、崩溃类的软故障。
  • 模拟Pod彻底销毁重建:先执行kubectl get pods -n <服务所在命名空间>拿到目标Pod名称,执行kubectl delete pod <目标Pod名> -n <服务所在命名空间>即可,ReplicaSet会立刻调度创建一个全新的同配置Pod替代被删除的实例,适合模拟Pod被驱逐、节点故障导致的Pod漂移类硬故障。

2. 双Pod同时故障/重启的实现方式

你推测的删除两个Pod的方案是可行的,不需要逐个删除Pod,有更简便的批量操作方式:

  • 按标签批量删除服务关联的所有Pod:先执行kubectl describe rs <对应ReplicaSet名称> -n <服务所在命名空间>,查看Selector字段拿到服务关联的Pod标签,再执行kubectl delete pod -n <服务所在命名空间> -l <匹配到的标签键=标签值>,命令执行后该ReplicaSet下的2个Pod会被同时删除,立刻触发两个新Pod的重建,中间会出现短暂的服务全量不可用窗口,完全匹配双副本同时故障的测试需求。
  • 注意不要直接用kubectl rollout restart rs <ReplicaSet名称> -n <服务所在命名空间>模拟同时故障:该命令默认触发滚动更新,会先创建新Pod、等待新Pod就绪后再删除旧Pod,全程至少有1个可用副本,不会出现双副本同时不可用的情况,不符合你的测试场景。

操作提示:执行删除操作前可以先执行kubectl get rs <ReplicaSet名称> -n <服务所在命名空间>确认ReplicaSet状态正常,DESIRED和CURRENT字段值均为2,避免因控制器本身异常导致Pod无法正常拉起。

内容的提问来源于stack exchange,提问作者oikonomiyaki

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 13:06:23