🎼

AKS のノードをカーネルパニックで落として復旧動作をみる

2022/02/09に公開

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