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