🎼
AKS のノードをカーネルパニックで落として復旧動作をみる
AKS のドキュメントを読んでいたら、下記の情報を見つけました。
以前、カオスエンジニアリングで検証していた時はノードを落としても自動で起動されてこなかったのですが…。ちょっと気になったので検証してみました。
ノードを落としてみる
落とす際、普通にシャットダウンすると異常終了と判断してくれなくなってしまうかな? と思ったので、カーネルパニックを起こす方法で落としてみました。
1. ノードの状況を出力させておく
kubectl コマンドでノードの情報を出力させておきます。
> kubectl get nodes -w
NAME STATUS ROLES AGE VERSION
aks-default-29360695-vmss000000 Ready agent 14m v1.21.7
aks-default-29360695-vmss000001 Ready agent 14m v1.21.7
aks-default-29360695-vmss000002 Ready agent 14m v1.21.7
今回は aks-default-29360695-vmss000001
を落としてみます。
2. ノードへ接続する
下記の記事で公開しております。
下記のような kubectl コマンドで接続します。
kubectl debug node/aks-default-29360695-vmss000001 -it --image=busybox
3. カーネルパニックを起こす
ノードに接続できたら、こんな感じでコマンドを実行すれば OK です。プロンプトが返ってこなくなると思います。
chroot /host
echo 1 > /proc/sys/kernel/sysrq
echo c > /proc/sysrq-trigger
4. 状況を見る
「1. ノードの状況を出力させておく」のウィンドウを観察します。
> kubectl get nodes -w
NAME STATUS ROLES AGE VERSION
aks-default-29360695-vmss000000 Ready agent 14m v1.21.7
aks-default-29360695-vmss000001 Ready agent 14m v1.21.7
aks-default-29360695-vmss000002 Ready agent 14m v1.21.7
aks-default-29360695-vmss000001 Ready agent 15m v1.21.7
aks-default-29360695-vmss000002 Ready agent 15m v1.21.7
aks-default-29360695-vmss000001 NotReady agent 15m v1.21.7
aks-default-29360695-vmss000001 NotReady agent 15m v1.21.7
aks-default-29360695-vmss000001 NotReady agent 15m v1.21.7
aks-default-29360695-vmss000001 NotReady agent 16m v1.21.7
aks-default-29360695-vmss000001 NotReady agent 16m v1.21.7
aks-default-29360695-vmss000001 NotReady agent 16m v1.21.7
aks-default-29360695-vmss000001 NotReady agent 16m v1.21.7
aks-default-29360695-vmss000001 NotReady agent 16m v1.21.7
aks-default-29360695-vmss000001 NotReady agent 16m v1.21.7
aks-default-29360695-vmss000001 NotReady agent 16m v1.21.7
aks-default-29360695-vmss000001 NotReady agent 16m v1.21.7
aks-default-29360695-vmss000001 NotReady agent 16m v1.21.7
aks-default-29360695-vmss000001 Ready agent 16m v1.21.7
ということで、カーネルパニックを起こしてから 1分後くらいには NotReady
となった後に再び起動されることが確認できました。
なお、ノードに再接続して uptime
コマンドを実行すると、こんな感じ。
root@aks-default-29360695-vmss000001:/# uptime
13:33:23 up 1 min, 0 users, load average: 0.35, 0.15, 0.05
「up 1 min」ということで、ちゃんと再起動してきているであろうことが分かります。
まとめ
この後も何度か実行してみましたが、試してみた限りは数分で起動してくる感じでした。
#以前の検証では復旧の動作とならなかったのですが、今回は自動復旧してくれることが確かめられたので良かったです🤗
Discussion