模拟 Pod 故障
本文档介绍如何使用 Chaos Mesh 为 Kubernetes Pod 注入故障,模拟 Pod 或容器故障,并提供 Chaos Dashboard 和 YAML 文件两种方式用于创建 PodChaos 实验。
PodChaos 介绍
PodChaos 是 Chaos Mesh 中的一种故障类型,通过创建 PodChaos 类型的混沌实验,你可以模拟指定 Pod 或者容器发生故障的情景。目前,PodChaos 支持模拟以下故障类型:
使用限制
Chaos Mesh 可以向任一 Pod 注入 PodChaos,无论其 Pod 是否绑定至 Deployment,StatefulSet,DaemonSet 或其他控制器。然而,当向独立的 Pod 注入 PodChaos 时,可能会引起不同的情况。比如,向独立的 Pod 注入 "pod-kill" 混沌时,无法保证应用程序在故障发生后能够恢复正常。
注意事项
创建 PodChaos 实验前,请确保以下事项:
使用 Chaos Dashboard 方式创建实验
在使用 Chaos Dashboard 创建实验前:
确保已经安装了 Chaos Dashboard。
如果已安装 Chaos Dashboard,你可以通过运行
kubectl port-forward
命令的方式访问 Dashboard:
kubectl port-forward -n chaos-mesh svc/chaos-dashboard 2333:2333
然后可以在浏览器中输入
http://localhost:2333
访问 Chaos Dashboard。
将实验配置写入到文件中
pod-failure.yaml
,内容示例如下:
apiVersion: chaos-mesh.org/v1alpha1
kind: PodChaos
metadata:
name: pod-failure-example
namespace: chaos-mesh
spec:
action: pod-failure
mode: one
duration: '30s'
selector:
labelSelectors:
'app.kubernetes.io/component': 'tikv'
依据此配置示例,Chaos Mesh 将向指定的 Pod 中注入
pod-failure
故障,将使该 Pod 在 30 秒内处于不可用的状态。
使用
kubectl
创建实验,命令如下:
kubectl apply -f ./pod-failure.yaml
pod-kill 示例
将实验配置写入到文件中
pod-kill.yaml
,内容示例如下:
apiVersion: chaos-mesh.org/v1alpha1
kind: PodChaos
metadata:
name: pod-kill-example
namespace: chaos-mesh
spec:
action: pod-kill
mode: one
selector:
namespaces:
- tidb-cluster-demo
labelSelectors:
'app.kubernetes.io/component': 'tikv'
依据此配置示例,Chaos Mesh 将向指定的 Pod 中注入
pod-kill
故障,将使该 Pod 被杀死一次。
使用
kubectl
创建实验,命令如下:
kubectl apply -f ./pod-kill.yaml
container-kill 示例
将实验配置写入到文件中
container-kill.yaml
,内容示例如下:
apiVersion: chaos-mesh.org/v1alpha1
kind: PodChaos
metadata:
name: container-kill-example
namespace: chaos-mesh
spec:
action: container-kill
mode: one
containerNames: ['prometheus']
selector:
labelSelectors:
'app.kubernetes.io/component': 'monitor'
依据此配置示例,Chaos Mesh 将向指定的 Container 中注入
container-kill
故障,将使该 Container 被杀死一次。
使用
kubectl
创建实验,命令如下: