クラスターの拡張とクラスターノードの頻繁なスケーリングにより、手動によるトラブルシューティングは、スケーリングの失敗の原因を迅速に特定し、過去の問題を追跡するための要件を満たすことができなくなりました。 長期的なデータ収集と分析に基づいてのみ検出できる異常をユーザーが特定することは困難です。 このトピックでは、ノードスケーリングダッシュボードに表示されるグラフに基づいて問題を迅速にトラブルシューティングする方法について説明します。 これらのグラフは、ポッド、ノード、およびそれらの変更に関する詳細情報を表示できます。
前提条件
- ノードスケーリングダッシュボードを使用するには、チケットを起票します。
- クラスターでKubernetesイベントセンターが有効になっています。 詳細については、「イベントモニタリング」をご参照ください。
- クラスターの監査ログ機能が有効になっています。 詳細については、「クラスター監査の操作」をご参照ください。
ノードスケーリングダッシュボードの詳細
ノードスケーリングダッシュボードは4つの領域で構成されています。 次のセクションでは、各エリアで表示できるデータについて説明します。
概要エリア
概要領域の5つのグラフには、O&Mエンジニアにとって重要なノードスケーリングデータが表示されます。
- ノードの総数: クラスター内のノードの総数。 番号は、クラスターの容量を示します。
- 使用可能なノード数: クラスター内のKubeletReadyノードの数。 数がノードの総数と異なる場合、一部のノードはKubeletNotReady状態ではありません。 ノードがKubeletNotReady状態でない場合、ノードはクラスターに追加されているか、またはノードは失敗しています。 これらのノードに細心の注意を払ってください。
- クラスタースケーラビリティ: クラスターがスケーラブルかどうかを示します。 [いいえ] が表示された場合、
[準備完了]
状態でないノードの数は、指定された上限を超えています。 このシナリオでは、クラスターはスケールアウト活動を実行できません。 - 最新のスケールアウトアクティビティ: 指定された時間範囲内に実行されたノードスケールアウトアクティビティの数。
- 最新のスケールインアクティビティ: 指定された時間範囲内で実行されたノードスケールインアクティビティの数。
ポッドの詳細
ポッドの詳細エリアには、次のグラフが表示されます。
- スケジュール不可能なポッドの傾向: 時間の経過とともに
[保留中]
状態にあるポッドの傾向を表示します。 スケジュール不可能なポッドの数は、通常、ノードをスケールアウトするためのクラスターの必要性を示します。 - 追い出されたポッドの傾向: 時間の経過とともに
追い出され
ているポッドの傾向を表示します。 ノードのポッドが追い出された場合、これはノードのリソース消費量がしきい値に達したことを示します。
ノードの詳細
- ノードステータスの傾向: ノードの総数、KubeletReady状態にあるノードの数、およびKubeletNotReady状態にあるノードの数を表示します。 KubeletNotReadyノードには、過去10分以内にクラスターに追加されたノードは含まれません。
- ノードスケールアウトトレンドとノードスケールイントレンド: 時間の経過とともに実行されるノードスケールアウトアクティビティとノードスケールインアクティビティのトレンドを表示します。 スケールアウトアクティビティの数は、生成されるScaledUpGroupイベントの数と同じです。 ScaledUpGroupイベントは、cluster-autoscalerがスケールアウトアクティビティを実行するたびに生成されます。 スケールインアクティビティの数は、生成されるScaleDownイベントの数と同じです。 ScaleDownイベントは、cluster-autoscalerがスケールインアクティビティを実行するたびに生成されます。
スケーリングアクティビティのリスト
スケーリングアクティビティのリストには、スケーリングアクティビティに関連するすべてのイベントが表示され、スケーリングアクティビティをすばやく見つけて問題をトラブルシューティングするのに役立ちます。
ノードスケーリングダッシュボードの操作
課題の特定
- 異常なノードが存在するかどうか: ノードの総数が使用可能なノードの数と等しいかどうかを確認します。 それらが等しくない場合、クラスタ内のいくつかのノードは異常である。
- クラスターのサイズが適切かどうかを確認します。ほとんどのオンラインワークロードにはピーク時間とオフピーク時間があります。 自動スケーリング機能は、Kubernetesクラスターがワークロードの変動に合わせて自動的にスケーリングできるように設計されています。 [ノードの詳細] セクションを参照して、特定の時間範囲内に収集された統計を分析し、統計をワークロード変動履歴と比較できます。 ピーク時およびオフピーク時にクラスターが想定どおりにスケーリングできない場合は、それに応じてスケーリング設定を最適化します。
問題のトラブルシューティング
保留中
のポッドはクラスターに存在しますが、ノードはスケールアウトされません。 クラスタースケーラビリティのグラフを表示し、クラスターがスケーラブルかどうかを確認します。- クラスターがスケーラブルでない場合、cluster-autoscalerはスケールアウトアクティビティを実行できません。 この場合、問題のトラブルシューティングを行います。
- クラスターがスケーラブルな場合は、前述のスケーリングアクティビティリストで、スケールアウトアクティビティまたはNotTriggerScaleUpイベントをトリガーするポッドの名前を検索します。 次に、
理由
フィールドでスケールアウト失敗の原因を確認します。
- ポッドがスケールアウトアクティビティをトリガーする時刻を確認する: 前述のスケーリングアクティビティリストで、スケールアウトアクティビティまたはNotTriggerScaleUpイベントをトリガーするポッドの名前を検索し、スケールアウトアクティビティがトリガーされる時刻を確認します。
- スケールアウト失敗の原因を確認します。前のscaling activity listでFailedToScaleUpGroupイベントを検索し、cluster-autoscalerがスケールアウトアクティビティの実行に失敗した理由を
reason
フィールドで確認します。 - ノードがスケールインアクティビティをトリガーする時刻を確認する: 前のスケーリングアクティビティリストでスケールインアクティビティまたはScaleDownイベントをトリガーするノードの名前を検索し、スケールインアクティビティがトリガーされた時刻を確認します。
- スケールイン失敗の原因を確認する: 前述のスケーリングアクティビティリストで、スケールインアクティビティまたはScaleDownFailedイベントをトリガーするノードの名前を検索し、スケールイン失敗の原因を確認します。