blade create k8s pod-IO
blade create k8s pod-IO
给kubernetes的pod注入文件系统I/O故障
介绍
k8s pod文件系统I/O异常场景,可以模拟对指定路径上的文件读写异常,包括延迟,错误等.
注意!!!此场景需要激活--webhook-enable参数,如需使用此功能,请在 chaosblade-operator 参数中添加 --webhook-enable,或者在安装时指定,例如 helm 安装时: --set webhook.enable=true 指定。
前提条件
集群中部署了chaosblade-admission-webhook
需要注入故障的volume设置mountPropagation为HostToContainer
pod上面添加了如下annotations:
chaosblade/inject-volume: "data" //需要注入故障的volume name
chaosblade/inject-volume-subpath: "conf" //volume挂载的子目录命令
blade create k8s pod-pod IO
参数
除了上述基础场景各自所需的参数外,在 kubernetes 环境下,还支持的参数如下:
案例
首先,通过deployment部署测试pod,并在pod的annotation里面指定需要注入I/O异常的volume以及子目录。
chaosblade webhook会根据pod的annotation,注入fuse的sidecar容器:
chaosblade/inject-volume指明需要注入故障的volume name,比如例子中的datachaosblade/inject-volume-subpath指明volume挂载路径的子目录。上面的例子中,volume的挂载路径是/data,子目录是conf,则在pod内,注入I/O异常的目录是/data/conf。指定需要注入故障的volume需要指定
mountPropagation:HostToContainer,这个字段的含义可以参考官方文档Volumes
通过上面的yaml文件创建deployment后,chaosblade webhook会自动插入sidecar容器:
这时虽然插入了sidecar容器,但是还没有注入I/O异常,可以通过下面的yaml注入相关的I/O异常:
在这里例子中,我们对read操作注入两种异常,异常率为百分之60:
对
read操作增加1s的延迟,支持的操作类型包括:
对
read操作返回错误28,支持的错误码包括:
当用上面的yaml文件注入I/O异常后,在pod内读取指定目录中的文件,发现返回了No space left on device,因为有重试,显示有3s的延迟。
Last updated
Was this helpful?