【Linux】kubernetes - chaosblade

本文详细介绍了如何在Kubernetes环境中使用ChaosBlade进行故障注入测试,包括安装部署、常见问题及解决方案等内容。

k8s安装chaosblade

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配置方式)

chaosblade官网实例

查看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。
可能是设置方式不对,目前我对这个没要求,保留未解决.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值