Photo by Marta Sher from Shutterstock
最新のアプリケーション運用において、Kubernetesはコンテナオーケストレーションの基盤となっています。ソフトウェアのデプロイ、スケーリング、運用を自動化し、デリバリーのあり方を一変させました。一方で、複雑さと規模が増すにつれ、動的なエコシステムのトラブルシューティングと維持管理には新たな難しさが伴います。
Kubernetesのトラブルシューティングが難しい理由はいくつもあります。Kubernetesクラスターのアーキテクチャは、Pod、Service、構成、ネットワーキングといった複数のコンポーネントが連携して成り立っています。これらは予測しづらい形で相互に作用するため、問題の根本原因を突き止めるのは容易ではありません。
さらに、Kubernetesのworkloadsは需要の変化に応じて常に進化するため、リアルタイムでの診断が難しい一過性の問題も発生します。従来のトラブルシューティングでは、複数のコンポーネントにまたがってログ、メトリクス、構成情報を手作業で調べる必要があり、時間を要するうえにミスも起こりがちでした。
そこで登場するのが、Google Kubernetes Engine(GKE)のインタラクティブプレイブックです。インタラクティブプレイブックの導入により、GKEは一般的な問題に対して構造化されたステップバイステップのトラブルシューティングガイドを提供し、迅速な問題解決と平均復旧時間(MTTR)の短縮を後押しします。
プレイブックはGCPのモニタリングダッシュボードから利用でき、最初のworkloadがクラスターにデプロイされた時点で自動的に追加されます。利用可能なインタラクティブプレイブックの一覧は以下のとおりです。新しいプレイブックの追加情報はGKEリリースノートでご確認ください。

GCP Monitoring -> Dashboardsのスクリーンショット
インタラクティブプレイブックはCloud MonitoringとCloud Loggingのデータを利用するため、GKE Standardクラスターでworkloadsのログ収集を無効化していないかをご確認ください(Autopilotクラスターではデフォルトで有効です)。
インタラクティブプレイブックを実際に動かしてみる
- 構成エラーで起動に失敗するworkloadをクラスターにデプロイします。
kubectl run sample-app --image simbu1290/gke-faulty-app:latest
- コンソールでworkloadのステータスを確認します。

workloadのステータス
- サンプルアプリのステータス
CrashLoopBackOffをクリックすると、詳細情報を表示する画面が開きます。Recommendationsセクションに、エラーに関連したインタラクティブプレイブックが表示されます。

View Interactive Playbookをクリックすると、GCPモニタリング内のプレイブックダッシュボードに移動します。ダッシュボードでは、エラーの詳細や、考えられる根本原因を特定するための次のステップを確認できます。

インタラクティブプレイブックの概要

コンテナの起動プロセスに影響を与えているサンプルアプリケーションのエラー
ダッシュボードに用意されているOOM(out-of-memory)やLiveness Probeの項目を使えば、その他の障害要因もすばやく特定できます。Correlate Change Eventsでは、直近のデプロイ変更がworkloadに影響していないかをひと目で確認可能です。現行バージョンと旧バージョンの差分を比較すれば、問題の原因にたどり着けます。
このダッシュボードはカスタマイズに対応しており、必要に応じてコンポーネントを追加・削除できます。GCPアラートを利用している場合は、Future Mitigation Tipsセクションからアラートを作成できます。

メールアラートポリシーの設定例
アラート通知には、影響を受けたworkloadとインタラクティブダッシュボードへのリンクが含まれており、すぐにトラブルシューティングに着手できます。

メールアラート通知の例
推奨されるインタラクティブプレイブックの提供により、GKEチームは一般的な問題のトラブルシューティングを簡素化し、生産性の最大化を目指しています。GKEのインタラクティブプレイブックはトラブルシューティングに役立つ構造化されたガイドを提供してくれますが、専門知識を持つ担当者に直接相談することが欠かせない場面もあります。