k8s部署使用chaosblade
k8s安装chaosblade
安装helm
curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/master/scripts/get-helm-3
chmod 700 get_helm.sh
./get_helm.sh
执行安装命令
helm install --namespace kube-system --name chaosblade-operator chaosblade-operator-<VERSION>.tgz
1. chaosblade-operator-<VERSION>.tgz
替换成https://github.com/chaosblade-io/chaosblade-operator/releases
页面里的安装包链接 https://github.com/chaosblade-io/chaosblade-operator/releases/download/v1.6.0/chaosblade-operator-1.6.0.tgz
2. 提示--name有问题, 删掉--name .

查看安装结果
kubectl get pod -n kube-system -o wide | grep chaosblade
安装chaosblade cli
- 下载amd64.tar.gz版 https://github.com/chaosblade-io/chaosblade/releases
tar -zxvf chaosblade-1.6.1-linux-amd64.tar.gz
cd chaosblade-1.6.1/
./blade # 这样能调出来blade命令,具体怎么用没试过
使用的相关命令如下:
blade create k8s container-cpu fullload --cpu-percent 100 --container-names carts --names carts-76dd6bf8f9-nnb2z --namespace sock-shop --waiting-time 30s --kubeconfig config
blade query k8s create 092e8b4d88d4f449 --kubeconfig config
blade destroy 092e8b4d88d4f449s
chaosblade使用(yaml配置方式)
查看pod信息
kubectl get pods -n sock-shop
建立yaml文件
chaos_node_cpu_load.yaml
apiVersion: chaosblade.io/v1alpha1
kind: ChaosBlade
metadata:
name: delete-pod-by-name
spec:
experiments:
- scope: pod
target: pod
action: delete
desc: "delete pod by name"
matchers:
- name: names # 注意加s
value:
- "carts-76dd6bf8f9-g6dmf"
- name: namespace
value:
- "sock-shop"
- name: waiting-time
value:
- "30s"
kubectl命令
执行
kubectl apply -f chaos_node_cpu_load.yaml
# 返回chaosblade.chaosblade.io/delete-pod-by-name created
查看实验状态
kubectl get blade delay-pod-network-by-names -o json
结束
kubectl delete -f chaos_node_cpu_load.yaml
chaosblade-operator使用问题
cgroups load failed, cgroups: cgroup deleted
安装1.6.1
执行pod里的container进行cpu负载,报错cgroups load failed, cgroups: cgroup deleted,是operator1.6.0版本的原因。
在 https://github.com/chaosblade-io/chaosblade-operator/pull/156 里改了,需要拆卸1.6.0版本,安装1.6.1版本。
找了半天不知道1.6.1在哪,多亏建树,在这找着了https://github.com/chaosblade-io/chaosblade/releases/tag/v1.6.1,感觉有点懵,k8s需要部署operator,但蓝色里只有大版本下载,小版本1.6.1在红色里。

按照这里重装
https://github.com/chaosblade-io/chaosblade/releases/tag/v1.6.1 安装的命令与上面有不同,如下:
安装(需要先创建chaosblade命名空间)
helm install chaosblade-operator chaosblade-operator-1.6.1.tgz --namespace chaosblade
删除
helm uninstall chaosblade-operator --namespace chaosblade
但是我测他的码,还是报错。
更改1.6.0设置
顺着github加了开源交流钉钉群,群里不少人有这错。官方人员在群里解释安装了1.6.1还报错是没装好……
加了群里一个人,仔细按照他的方法来了,这个方法上述官方人员也说在1.6.0改了就可。那好人发的图如下;

改这个文件需要kubectl edit daemonset,命令如下:
不同edit对象打开的文件类型不一样,可以注意一下
kubectl edit pod pdName -n ns
kubectl edit daemonset podName -n ns
kubectl edit deploy prometheus-deployment(不是name) -n monitoring
打开发现这里就是改完后的内容,但那位好人发截图确实他这里原本是改前的内容,就很迷……

最终改了这里,因为发现这里是唯一一个有host-sys的,改完后不报错。

cpu故障注入,yaml持续时间设置
想拉满cpu占比,写yaml时参考例子和下面官网的参数标准,waiting-time在这里写的默认20s
https://chaosblade.io/docs/experiment-types/k8s/blade%20create%20k8s%20container-cpu#%E5%8F%82%E6%95%B0
在此前进行pod删除故障注入时,通过yaml设置waiting-time来设置时间,但在cpu负载故障注入时报错,表示不认识waiting-time。
最后发现,不设置这项,什么时候kubectl delete -f ***.yaml 什么时候注入算完,很无语。
cpu故障注入,cpu-percent
通过Prometheus发现,不管设置80还是100,都给拉满。上面那位好人也是发现这个,最后他换用的chaosmesh。
可能是设置方式不对,目前我对这个没要求,保留未解决.
本文详细介绍了如何在Kubernetes环境中使用ChaosBlade进行故障注入测试,包括安装部署、常见问题及解决方案等内容。
8181

被折叠的 条评论
为什么被折叠?



