使用Litmus Chaos开始混沌工程

太長不讀。

    • Litmus Chaosとはなんぞや

 

    • 自前のRKE2クラスタにLitmus Chaosをインストールしたよ

 

    Podを削除するカオス実験をしたよ

Litmus Chaos是什么意思?

这是一个开源的混沌工程工具。
说到混沌工程,Netflix的Chaos Monkey是非常有名的,但特别针对Kubernetes的混沌工程工具有Chaos Mesh和Litmus Chaos等。
就我个人而言,我觉得Litmus Chaos比Chaos Mesh表现更稳定。
顺便提一下,这也是云原生计算基金会(CNCF)孵化项目之一。
https://litmuschaos.io/

将Litmus Chaos安装

毫不犹豫地,使用Helm进行安装。

実装環境

    • Ubuntu 22.04.1 LTS

 

    • RKE2 v1.24.12(Kubernetes環境)

 

    • Helm v3.12.0

 

    kubectl v1.25.3

驾驶盔

添加存储库

helm repo add litmuschaos https://litmuschaos.github.io/litmus-helm/

搜索图表

helm search repo litmuschaos
NAME                            CHART VERSION   APP VERSION     DESCRIPTION
litmuschaos/kube-aws            2.14.0          2.14.0          A Helm chart to install litmus aws chaos experi...
litmuschaos/kube-azure          2.14.0          2.14.0          A Helm chart to install litmus Azure chaos expe...
litmuschaos/kube-gcp            2.14.0          2.14.0          A Helm chart to install litmus gcp chaos experi...
litmuschaos/kubernetes-chaos    2.28.0          2.14.0          A Helm chart to install litmus chaos experiment...
litmuschaos/litmus              2.15.10         2.14.0          A Helm chart to install ChaosCenter
litmuschaos/litmus-agent        0.1.4           0.1.4           A Helm chart to install litmus agent
litmuschaos/litmus-core         2.14.0          2.14.0          A Helm chart to install litmus infra components...

创建命名空间

kubectl create ns litmus

作成したネームスペースでlitmusをインストール

helm install chaos litmuschaos/litmus -n litmus
NAME: chaos
LAST DEPLOYED: Sat Jul  1 14:36:45 2023
NAMESPACE: litmus
STATUS: deployed
REVISION: 1
TEST SUITE: None
NOTES:
Thank you for installing litmus ?

Your release is named chaos and it's installed to namespace: litmus.

Visit https://docs.litmuschaos.io to find more info.

处理错误

Pod无法站立?

kubectl get pod -n litmus
NAME                                        READY   STATUS     RESTARTS   AGE
chaos-litmus-auth-server-65bbc55ddf-45nqc   0/1     Init:0/1   0          86s
chaos-litmus-frontend-588f4c66cf-6cqn2      1/1     Running    0          86s
chaos-litmus-server-7fb7954696-2m7j2        0/1     Init:0/1   0          86s
chaos-mongodb-79b779578-hvmff               0/1     Pending    0          85s

不知为何,MongoDB数据库的状态变为待处理。

这个持续音量感觉可疑?

kubectl get pvc -n litmus
NAME            STATUS    VOLUME   CAPACITY   ACCESS MODES   STORAGECLASS   AGE
chaos-mongodb   Pending                                                     2m12s

やっぱりPVCがPendingでした.
そこでPVCの詳細をkubectl describeで見てみます.

kubectl describe pvc chaos-mongodb -n litmus
Events:
  Type    Reason         Age                   From                         Message
  ----    ------         ----                  ----                         -------
  Normal  FailedBinding  95s (x26 over 7m37s)  persistentvolume-controller  no persistent volumes available for this claim and no storage class is set

我没有可用的 PV!还没有设置存储类!所以我觉得被责备了。因此,我尝试为 PVC 添加现有的存储类。

NAME         PROVISIONER             RECLAIMPOLICY   VOLUMEBINDINGMODE      ALLOWVOLUMEEXPANSION   AGE
local-path   rancher.io/local-path   Delete          WaitForFirstConsumer   false                  36d
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: chaos-mongodb
  namespace: litmus
spec:
  accessModes:
  - ReadWriteOnce
  resources:
    requests:
      storage: 8Gi
  volumeMode: Filesystem
  #下記を追記
  storageClassName: local-path

我将删除PVC然后重新进行应用。

kubectl delete pvc chaos-mongodb -n litmus
kubectl apply -f pvc.yaml

删除pod以使用新的PVC。

kubectl delete pod --all -n litmus
pod "chaos-litmus-auth-server-65bbc55ddf-45nqc" deleted
pod "chaos-litmus-frontend-588f4c66cf-6cqn2" deleted
pod "chaos-litmus-server-7fb7954696-2m7j2" deleted
pod "chaos-mongodb-79b779578-hvmff" deleted

确认

kubectl get pod -n litmus
NAME                                        READY   STATUS    RESTARTS   AGE
chaos-litmus-auth-server-65bbc55ddf-8zsqd   1/1     Running   0          46s
chaos-litmus-frontend-588f4c66cf-zn2ww      1/1     Running   0          46s
chaos-litmus-server-7fb7954696-dvhs4        1/1     Running   0          46s
chaos-mongodb-79b779578-kxvnt               1/1     Running   0          46s

所有的Pod都已经启动了!

尝试使用Litmus Chaos

访问

kubectl port-forwardを使ってfrontendにアクセスしてみます.

kubectl get svc -n litmus
NAME                               TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)             AGE
chaos-litmus-auth-server-service   ClusterIP   10.43.240.149   <none>        9003/TCP,3030/TCP   18m
chaos-litmus-frontend-service      ClusterIP   10.43.16.75     <none>        9091/TCP            18m
chaos-litmus-server-service        ClusterIP   10.43.158.78    <none>        9002/TCP,8000/TCP   18m
chaos-mongodb                      ClusterIP   10.43.66.109    <none>        27017/TCP           18m

将执行kubectl命令的节点的9091端口转发到frontend服务。

kubectl -n litmus port-forward svc/chaos-litmus-frontend-service 9091:9091 --address 0.0.0.0 &
スクリーンショット 2023-07-01 180029.png

混乱实验

スクリーンショット 2023-07-01 182547.png

最后

我总结了从安装 Litmus Chaos 到进行简单混沌实验的过程。个人认为通过使用图形界面来直观地操作混沌实验的场景非常好!祝您度过一个愉快的混沌体验!

广告
将在 10 秒后关闭
bannerAds