はじめに
Azure Kubernetes Service(AKS)はKubernetesクラスターのマネージドサービスです。今回は、このKubernetesクラスターのノードに対してカオス挿入を行う方法について説明します。なお、Kubernetes上のPodやServiceなどへのカオス挿入については対象外(次回の解説を予定)であることをご了承ください。
「ノードって?」「Podって?」「Serviceって?」という方は、以下の入門記事などを事前に読んでおきましょう!
Chaos ToolkitによるAKSへのカオス挿入
挿入できるカオス
AKSに対してChaos Toolkitで挿入可能なカオスは、下記の3つのアクションになります。
# | アクション名 | 内容 |
---|---|---|
1 | delete_node | ノードを削除する。 |
2 | restart_node | ノードを再起動する。 |
3 | stop_note | ノードを停止する。 |
……と言いたいところなのですが、本記事執筆時点でのChaos Toolkitでは、上記のアクションが用意されているものの動作しない状態となっています。
ですが、AKSのノードの実体はVMSS(仮想マシンスケールセット)であることから、第3回の仕組みを活用して同様のカオス挿入を行うことができますので、今回はその方法でカオス挿入を行います。
カオスを挿入するシステムの構築
今回は、「AKSノード上のPodのフェイルオーバー」の動作確認を行います。具体的には、AKSのノードの停止を発生させ、対象のノードで起動していたPodが別のノードで起動することを確認する実験です。
AKSクラスターの構築は、以下のクイックスタートを参考にしてください。
1つだけ注意点があります。「AKSクラスターの作成」の手順に記載のノード数(--node-count)は2以上にしておきます。ノードが1台だけだと、そのノードを停止してしまうと新たなPodの起動先が無くなり、実験の確認ができなくなってしまうためです。
az aks create --resource-group chaos-poc-part5 --name chaospocpart5 --node-count 3 --enable-addons monitoring --generate-ssh-keys
Kubernetesクラスター上で動作するアプリについても、同じくクイックスタートを参考にデプロイしてください。
デプロイが完了したら、フロントエンドのPod(azure-vote-front)が1個だけ起動していることを確認しておきましょう。READYの箇所が1/1になっていればOKです。
> kubectl get pods NAME READY STATUS RESTARTS AGE azure-vote-back-6c4dd64bdf-7gh9p 1/1 Running 0 34s azure-vote-front-85b4df594d-fhhzg 1/1 Running 0 34s