1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

TL;DR

  • Litmus Chaosとはなんぞや
  • 自前のRKE2クラスタにLitmus Chaosをインストールしたよ
  • Podを削除するカオス実験をしたよ

Litmus Chaosとは

オープンソースのカオスエンジニアリングツールです.
カオスエンジニアリングといえばNetflixのChaos Monkeyが有名ですが,特にKubernetesに特化したカオスエンジニアリングツールとしてChaos MeshやLitmus Chaosが挙げられます.
個人的にLitmus ChaosはChaos Meshよりも安定して動作する印象があります.
ちなみにクラウドネイティブを推進する財団 CNCF (Cloud Native Computing Foundation) のincubating projectsでもあります.
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

リポジトリを追加

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がPendingになっている

永続ボリュームが怪しい🤨

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
pvc.yaml
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: chaos-mongodb
  namespace: litmus
spec:
  accessModes:
  - ReadWriteOnce
  resources:
    requests:
      storage: 8Gi
  volumeMode: Filesystem
  #下記を追記
  storageClassName: local-path

PVCを消して新しくapplyしてみます.

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

新しいPVCを使用するためにpodを削除

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 &

ブラウザからアクセスすると次のような画面が出てきます.(デフォルトではユーザ名:admin,パスワード:litmus)
スクリーンショット 2023-07-01 180029.png

カオス実験

メニューのChaos Scenariosを選択し,右上のSchedule a Chaos Scenarioからカオス実験をスケジュールすることができます.
スクリーンショット 2023-07-01 180422.png
今回はChaosHubsからKubernetesクラスタ内の任意のPodを削除するpod-deleteを試してみたいと思います.
下記のgeneric/pod-deleteを選択
スクリーンショット 2023-07-01 181239.png
設定が終わると先ほどのchaos Scenariosに実行中のカオス実験が表示されます.
スクリーンショット 2023-07-01 182101.png
実験が終了すると結果の詳細を確認することができます.
スクリーンショット 2023-07-01 182547.png

終わりに

Litmus Chaosのインストールから簡単なカオス実験までをまとめてみました.
個人的にはカオス実験のシナリオをGUIを使って直感的に操作できるのがとっても良いと思いました!
それでは良いカオス体験を!

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?