Azure Chaos Studio を AKS で試す
目的
- Azure Chaos Studio で AKS がどのような動作を行うのか
- Azure Monitor で監視してアラートの動きも見てみる
参考記事
AKS ポッドを停止する Chaos Mesh 障害を利用するカオス実験を Azure portal で作成する
やること
- AKS構築
- Podの作成
- 監視の導入
- Chaos Mesh を AKS に準備
- AKS クラスターで Chaos Studio を有効にする
- Azure Chaos Studio の実施
- Monitoring 周りの確認
(AKS で) Pod の作成
一気に作成できた
Front/Backend それぞれ Pod の数は 10
% kubectl get pods -n azure-vote
NAME READY STATUS RESTARTS AGE
azure-vote-back-797b558855-6mlb4 1/1 Running 0 7m18s
azure-vote-back-797b558855-8lpfr 1/1 Running 0 7m18s
azure-vote-back-797b558855-bp4qf 1/1 Running 0 7m18s
azure-vote-back-797b558855-g9vpw 1/1 Running 0 7m18s
azure-vote-back-797b558855-mv6fn 1/1 Running 0 7m18s
azure-vote-back-797b558855-ps5c7 1/1 Running 0 7m18s
azure-vote-back-797b558855-ssdmb 1/1 Running 0 7m18s
azure-vote-back-797b558855-wcm4s 1/1 Running 0 7m18s
azure-vote-back-797b558855-wz8kw 1/1 Running 0 7m18s
azure-vote-back-797b558855-xc8hw 1/1 Running 0 7m18s
azure-vote-front-5bdf9bdbd8-2hr5z 1/1 Running 0 7m18s
azure-vote-front-5bdf9bdbd8-5zm9p 1/1 Running 0 7m18s
azure-vote-front-5bdf9bdbd8-jptp4 1/1 Running 0 7m18s
azure-vote-front-5bdf9bdbd8-kpq86 1/1 Running 0 7m18s
azure-vote-front-5bdf9bdbd8-lvmxm 1/1 Running 0 7m18s
azure-vote-front-5bdf9bdbd8-pgdg9 1/1 Running 0 7m18s
azure-vote-front-5bdf9bdbd8-qvlnd 1/1 Running 0 7m18s
azure-vote-front-5bdf9bdbd8-rpw8d 1/1 Running 0 7m18s
azure-vote-front-5bdf9bdbd8-sg955 1/1 Running 0 7m18s
azure-vote-front-5bdf9bdbd8-tw82j 1/1 Running 0 7m18s
監視の確認
ここを見ていく
診断設定もしておく
Chaos Mesh を AKS に準備
AKS クラスターで Chaos Mesh を設定していく
% helm repo add chaos-mesh https://charts.chaos-mesh.org
"chaos-mesh" already exists with the same configuration, skipping
% helm repo update
Hang tight while we grab the latest from your chart repositories...
...Successfully got an update from the "microsoft" chart repository
...Successfully got an update from the "chaos-mesh" chart repository
Update Complete. ⎈Happy Helming!⎈
% kubectl create ns chaos-testing
namespace/chaos-testing created
% helm install chaos-mesh chaos-mesh/chaos-mesh --namespace=chaos-testing --set chaosDaemon.runtime=containerd --set chaosDaemon.socketPath=/run/containerd/containerd.sock
NAME: chaos-mesh
LAST DEPLOYED: Sat Oct 29 11:39:43 2022
NAMESPACE: chaos-testing
STATUS: deployed
REVISION: 1
TEST SUITE: None
NOTES:
1. Make sure chaos-mesh components are running
kubectl get pods --namespace chaos-testing -l app.kubernetes.io/instance=chaos-mesh
Pod ができていることを確認
% kubectl get po -n chaos-testing
NAME READY STATUS RESTARTS AGE
chaos-controller-manager-9ccb587bb-46f85 1/1 Running 0 2m24s
chaos-controller-manager-9ccb587bb-lk9hg 1/1 Running 0 2m24s
chaos-controller-manager-9ccb587bb-ztpt4 1/1 Running 0 2m24s
chaos-daemon-rf4bs 1/1 Running 0 2m25s
chaos-daemon-zv425 1/1 Running 0 2m25s
chaos-dashboard-77b8b5498-gbtnb 1/1 Running 0 2m24s
今時点で引っかかる点はない
AKS クラスターで Chaos Studio を有効にする
Azure Portal から Chaos Studio を見つけてクリック
「対象」に AKS があるので、チェックをつけて、「ターゲットを有効にする」
「サービス直接」が無効→有効になる
Azure Chaos Studio の実施(準備)
「実験」から新しい実験を作成する
基本タブ
実験の名前とリソースの場所を選択する
実験デザイナー
ステップとブランチに題名を入れていく。複数予定している場合は、ここでブランチを追加したりステップを増やしたりすることができる。
今回はとりあえず動くことを目的とするので、1Step/1ブランチとする。
その後、「アクションの追加」から「障害の追加」をクリックすることで実際に何をやるかを作成できる。
実際に設定する画面。障害だったりフォールトだったり表記がぶれているけど、今後は修正されるのかな。
見てみると、AKS 用にすでに用意されている。これ以外にもテストはできるのか(これ以上の種類が Chaos Mesh にあれば)は、試していないので不明。
Pod CHaos を選択すると、パラメーターのところに色々埋め込まれる。1から何も設定しなくてもいいのは超便利。
用意されている JSON ファイルをそのまま使えるけど、アレンジしたい場合は、YAML 構成を作成して微調整できるよ(これは Chaos Mesh の機能)
テストのパターン Pod Faults の場合は この記事を見る
YAML はここではそのまま使えないから、YAML to JSON のコンバータ を使って変換する必要がある。
今回はそのまま設定
ターゲット リソース側では、どの AKS に実施するかを設定する
再び、「実験デザイナー」に戻り、テストの内容が反映される。
確認および作成
そのまま作成しようとしたら、以下のようなメッセージがあるので注意
実験を開始する前に、対象とする各リソースに実験 ID を割り当てる必要があります。
このメッセージが出てきたので、作成後に詳細情報として出てきた URL を参考にしてアクセス許可を割り当てる。
一旦、作成する
AKS の IMA で権限を付与する
AKS 画面の IAM ロールから、適切な権限(今回はクラスター管理者を指定)を設定する。
メンバーは先程作成した Chaos Mesh の テスト名「AKSPodKill」を検索して選択した。複数今後作成する場合は、もっとわかりやすい名前に変えた方がいいかもしれない。
権限の作成はこれで完了。
実験開始!
開始ボタンを押して、意気揚々と開始
あれっ、失敗
詳細から、エラーメッセージを読むと Pod が見つからないと言っている。
実験で設定した設定を見直すと、JSON 部分に対象のネームスペースが default になっていたことに気づく。
今回 default には何もなくて、azure-vote にテスト対象の Pod がいるので(そもそも default に Pod が存在しない)設定を更新して保存&再度実施
修正前;
修正後;
終わりの確認 - Monitoring 周りの確認
しばらく(10分)すると、成功の文字が返ってきた。が、内容をよく見ても実際に進んでいるかがわからなかったので、Azure Monitor で確認する
Azure Monitor の分析情報を確認すると、テストの時間帯に何回か Pod が再起動されていることがわかる。
同じくらいの回数で再起動しているので、偏りがないようにしている?この辺りは Chaos Mesh のドキュメントで確認する必要があるかも。
そういえばここも見てたんだった。
miho@MihonoMacBook-Air ~ % kubectl get pods -n azure-vote
NAME READY STATUS RESTARTS AGE
azure-vote-back-797b558855-6mlb4 1/1 Running 2 (33m ago) 6h10m
azure-vote-back-797b558855-8lpfr 1/1 Running 2 (33m ago) 6h10m
azure-vote-back-797b558855-bp4qf 1/1 Running 2 (33m ago) 6h10m
azure-vote-back-797b558855-g9vpw 1/1 Running 2 (33m ago) 6h10m
azure-vote-back-797b558855-mv6fn 1/1 Running 2 (33m ago) 6h10m
azure-vote-back-797b558855-ps5c7 1/1 Running 2 (33m ago) 6h10m
azure-vote-back-797b558855-ssdmb 1/1 Running 2 (33m ago) 6h10m
azure-vote-back-797b558855-wcm4s 1/1 Running 2 (33m ago) 6h10m
azure-vote-back-797b558855-wz8kw 1/1 Running 2 (33m ago) 6h10m
azure-vote-back-797b558855-xc8hw 1/1 Running 2 (33m ago) 6h10m
azure-vote-front-5bdf9bdbd8-2hr5z 1/1 Running 2 (33m ago) 6h10m
azure-vote-front-5bdf9bdbd8-5zm9p 1/1 Running 2 (33m ago) 6h10m
azure-vote-front-5bdf9bdbd8-jptp4 1/1 Running 2 (33m ago) 6h10m
azure-vote-front-5bdf9bdbd8-kpq86 1/1 Running 2 (33m ago) 6h10m
azure-vote-front-5bdf9bdbd8-lvmxm 1/1 Running 2 (33m ago) 6h10m
azure-vote-front-5bdf9bdbd8-pgdg9 1/1 Running 2 (33m ago) 6h10m
azure-vote-front-5bdf9bdbd8-qvlnd 1/1 Running 2 (33m ago) 6h10m
azure-vote-front-5bdf9bdbd8-rpw8d 1/1 Running 2 (33m ago) 6h10m
azure-vote-front-5bdf9bdbd8-sg955 1/1 Running 2 (33m ago) 6h10m
azure-vote-front-5bdf9bdbd8-tw82j 1/1 Running 2 (33m ago) 6h10m
もう一度実施すると 2回均等に実施されていた。(2 + 2=4回表示)
miho@MihonoMacBook-Air ~ % kubectl get pods -n azure-vote
NAME READY STATUS RESTARTS AGE
azure-vote-back-797b558855-6mlb4 1/1 Running 4 (52s ago) 6h23m
azure-vote-back-797b558855-8lpfr 1/1 Running 4 (52s ago) 6h23m
azure-vote-back-797b558855-bp4qf 1/1 Running 4 (52s ago) 6h23m
azure-vote-back-797b558855-g9vpw 1/1 Running 4 (52s ago) 6h23m
azure-vote-back-797b558855-mv6fn 1/1 Running 4 (52s ago) 6h23m
azure-vote-back-797b558855-ps5c7 1/1 Running 4 (52s ago) 6h23m
azure-vote-back-797b558855-ssdmb 1/1 Running 4 (52s ago) 6h23m
azure-vote-back-797b558855-wcm4s 1/1 Running 4 (52s ago) 6h23m
azure-vote-back-797b558855-wz8kw 1/1 Running 4 (52s ago) 6h23m
azure-vote-back-797b558855-xc8hw 1/1 Running 4 (52s ago) 6h23m
azure-vote-front-5bdf9bdbd8-2hr5z 1/1 Running 4 (52s ago) 6h23m
azure-vote-front-5bdf9bdbd8-5zm9p 1/1 Running 4 (52s ago) 6h23m
azure-vote-front-5bdf9bdbd8-jptp4 1/1 Running 4 (52s ago) 6h23m
azure-vote-front-5bdf9bdbd8-kpq86 1/1 Running 4 (52s ago) 6h23m
azure-vote-front-5bdf9bdbd8-lvmxm 1/1 Running 4 (52s ago) 6h23m
azure-vote-front-5bdf9bdbd8-pgdg9 1/1 Running 4 (52s ago) 6h23m
azure-vote-front-5bdf9bdbd8-qvlnd 1/1 Running 4 (52s ago) 6h23m
azure-vote-front-5bdf9bdbd8-rpw8d 1/1 Running 4 (52s ago) 6h23m
azure-vote-front-5bdf9bdbd8-sg955 1/1 Running 4 (52s ago) 6h23m
azure-vote-front-5bdf9bdbd8-tw82j 1/1 Running 4 (52s ago) 6h23m
動作としては、ゆっくり10分実施するのではなくて、最初の3分くらいで1回起動して、9分目くらいでもう1度再起動を実施していた。回数が設定できたらもう少し結果は変わるのかも。