Google Kubernetes Engine(GKE)クラスタとワークロードの健全性をすばやく確認する必要がある場合、どこから始めればよいかわからないことがあります。 Google Cloud コンソールでクラスタとワークロードの健全性を可視化すると、環境の状態をすばやく評価できます。クラスタの健全性は、ノードやネットワーキングなどの基盤となる GKE インフラストラクチャの健全性を参照します。一方、ワークロードの健全性は、クラスタで実行されているアプリのステータスとパフォーマンスを参照します。
このページでは、Kubernetes クラスタとワークロードのページを操作して、概要を把握し、潜在的な問題(リソース不足のノードや失敗した Pod など)を特定し、特定のリソースをドリルダウンして詳細を確認する方法について説明します。
この情報は、クラスタの安定性を維持し、迅速な健全性評価とリソース チェックを行う必要があるプラットフォーム管理者とオペレーターにとって重要です。また、デプロイのランタイム ステータスを把握し、障害を調査する必要があるアプリケーション デベロッパーにとっても不可欠です。 Google Cloud のコンテンツで使用されている一般的なロールとタスクの例の詳細については、一般的な GKE ユーザー ロールとタスクをご覧ください。
アプリの健全性を完全に把握するために、 Google Cloud コンソールでは強力なロギングツールとモニタリング ツールにもアクセスできます。これにより、過去の障害の根本原因を調査し、将来の障害を未然に防ぐことができます。これらのツールの詳細については、Cloud Logging で履歴分析を行うと Cloud Monitoring で事前対応型モニタリングを行うをご覧ください。
クラスタに関する問題を見つける
[Kubernetes クラスタ] ページには、クラスタの健全性の概要が表示されます。クラスタの問題を特定するには、このページから始めます。
まず、 Google Cloud コンソールで [Kubernetes クラスタ] ページに移動します。
このページをトラブルシューティングに活用する方法の例をいくつかご紹介します。
- クラスタの健全性、アップグレード戦略、費用の最適化を改善するためのアドバイスについては、[推奨事項を表示] をクリックします。
- 異常なクラスタを特定するには、[ステータス] 列を確認します。緑色のチェックマークが付いていないクラスタには注意が必要です。
- 潜在的な問題を確認するには、[通知] 列を確認します。通知メッセージをクリックすると、詳細が表示されます。
特定のクラスタを調査する
クラスタで問題が見つかったら、クラスタの [詳細] ページで詳細情報を確認します。この情報は、クラスタのトラブルシューティングや構成の把握に役立ちます。
クラスタの [詳細] ページに移動する手順は次のとおりです。
[Kubernetes クラスタ] ページに移動します。
[名前] 列を確認し、調査するクラスタの名前をクリックします。
クラスタの [詳細] ページを使用してクラスタのトラブルシューティングを行う方法の例を次に示します。
一般的なヘルスチェックの場合は、次のオプションをお試しください。
クラスタレベルのダッシュボードを表示するには、[オブザーバビリティ] タブに移動します。デフォルトでは、クラスタを作成すると、GKE は Cloud Monitoring を有効にします。Cloud Monitoring が有効になっている場合、GKE はこのページのダッシュボードを自動的に設定します。トラブルシューティングに最も役立つビューをいくつかご紹介します。
- 概要: クラスタの健全性、リソース使用率、主要なイベントの概要を表示します。このダッシュボードを使用すると、クラスタの全体的な状態をすばやく評価し、潜在的な問題を特定できます。
- トラフィック指標: ノードベースのネットワーク指標を表示して、Kubernetes ワークロード間のトラフィックに関する分析情報を取得します。
- ワークロードの状態: Deployment、Pod、コンテナの状態を表示します。障害が発生しているインスタンスまたは異常なインスタンスを特定し、リソース制約を検出します。
コントロール プレーン: コントロール プレーンの健全性とパフォーマンスを表示します。このダッシュボードでは、
kube-apiserver
やetcd
などのコンポーネントの主要な指標をモニタリングし、パフォーマンスのボトルネックを特定して、コンポーネントの障害を検出できます。
最近のアプリエラーを表示するには、[アプリのエラー] タブに移動します。このタブの情報は、発生回数、エラーが最初に発生した日時、最後に発生した日時を表示することで、エラーの優先順位付けと解決に役立ちます。
エラーをさらに調査するには、エラー メッセージをクリックして、関連するログへのリンクを含む詳細なエラーレポートを表示します。
最近のアップグレードや変更後に問題のトラブルシューティングを行う場合は、クラスタの [詳細] タブの [クラスタの基本] セクションを確認します。[バージョン] フィールドに表示されているバージョンが想定どおりであることを確認します。詳細を調べるには、[アップグレード] セクションで [アップグレード履歴を表示] をクリックします。
Standard クラスタを使用しているときに、Pod が
Pending
状態のままになった場合や、ノードが過負荷になっている疑いがある場合は、[ノード] タブを確認します。GKE がノードを管理するため、Autopilot クラスタでは [ノード] タブは使用できません。- [ノードプール] セクションで、自動スケーリングが正しく構成され、マシンタイプがワークロードに適していることを確認します。
- [ノード] セクションで、ステータスが
Ready
以外のノードを探します。NotReady
ステータスは、リソースの圧迫や kubelet の問題など、ノード自体に問題があることを示します(kubelet は、各ノードで実行されてコンテナを管理するエージェントです)。
ワークロードの問題を検出する
特定のアプリ(デプロイの失敗など)に問題があると思われる場合は、 Google Cloud コンソールの [ワークロード] ページに移動します。このページには、クラスタ内で実行されているすべてのアプリが一覧表示されます。
まず、 Google Cloud コンソールで [ワークロード] ページに移動します。
このページをトラブルシューティングに活用する方法の例をいくつかご紹介します。
- 異常なワークロードを特定するには、[ステータス] 列を確認します。緑色のチェックマークが付いていないワークロードは、注意が必要です。
- アプリが応答しない場合は、[Pods] 列を確認します。たとえば、ステータスが 1/3 の場合、3 つのアプリレプリカのうち 1 つしか実行されておらず、問題があることを示します。
特定のワークロードを調査する
概要から問題のあるワークロードを特定したら、ワークロードの [詳細] ページを調べて根本原因の切り分けを開始します。
ワークロードの [詳細] ページに移動する手順は次のとおりです。
[ワークロード] ページに移動します。
[名前] 列を表示し、調査するワークロードの名前をクリックします。
ワークロードの [詳細] ページを使用してワークロードのトラブルシューティングを行う方法の例を次に示します。
ワークロードの構成を確認するには、ワークロードの [概要] タブと [詳細] タブを使用します。この情報を使用すると、正しいコンテナ イメージタグがデプロイされたかどうかなどのイベントの確認や、ワークロードのリソース リクエストと上限を確認できます。
クラッシュしている特定の Pod の名前を確認するには、[マネージド Pod] セクションに移動します。この情報は
kubectl
コマンドで必要になることがあります。このセクションには、ワークロードによって制御されるすべての Pod とそのステータスが一覧表示されます。ワークロードの最近の変更履歴を確認するには、[変更履歴] タブに移動します。新しい Deployment の後にパフォーマンスの問題が発生した場合は、このセクションを使用して、アクティブなリビジョンを特定します。これにより、現在のリビジョンの構成と以前のリビジョンの構成を比較して、問題の原因を特定できます。このタブが表示されない場合、ワークロードはリビジョンを使用しないタイプであるか、まだ更新されていないかのいずれかです。
Deployment が失敗したと思われる場合は、[イベント] タブに移動します。このページには Kubernetes レベルのイベントが表示されるため、多くの場合、最も価値のある情報源となります。
アプリのログを確認するには、[ログ] タブをクリックします。このページでは、クラスタ内で何が起こっているかを把握できます。問題の診断に役立つエラー メッセージとスタック トレースについては、こちらをご覧ください。
デプロイされた内容を正確に確認するには、[YAML] タブを表示します。このページには、クラスタに存在するワークロードのライブ YAML マニフェストが表示されます。この情報は、ソース管理されたマニフェストとの不一致を見つけるのに役立ちます。単一の Pod の YAML マニフェストを表示している場合、このタブには Pod のステータスも表示されます。これにより、Pod レベルの障害に関する分析情報を確認できます。
次のステップ
kubectl
を使用してクラスタの状態を調査する(このシリーズの次のページ)を読む。これらのコンセプトが適用されたトラブルシューティングのシナリオ例をご覧ください。
特定の問題の解決に関するアドバイスについては、GKE のトラブルシューティング ガイドをご覧ください。
このドキュメントに問題のソリューションが見当たらない場合は、サポートを受けるで、次のトピックに関するアドバイスなど、詳細なヘルプをご覧ください。
- Cloud カスタマーケアに問い合わせて、サポートケースを登録する。
- StackOverflow で質問する、
google-kubernetes-engine
タグを使用して類似の問題を検索するなどして、コミュニティからサポートを受ける。#kubernetes-engine
Slack チャネルに参加して、コミュニティ サポートを利用することもできます。 - 公開バグトラッカーを使用して、バグの報告や機能リクエストの登録を行う。