AKS クラスターでの高い CPU 使用率のトラブルシューティング
CPU 使用率が高いとは、コンピューターのパフォーマンスや使いやすさに影響を与えるほど多くの CPU 時間を必要とする 1 つ以上のアプリケーションまたはプロセスの症状です。 高い CPU 使用率はさまざまな方法で発生する可能性がありますが、主にユーザーの構成が原因です。
Azure Kubernetes Service (AKS) クラスター内のノードで CPU 使用率が高くなる場合、そのノードで実行されているアプリケーションのパフォーマンスと信頼性が低下する可能性があります。 アプリケーションやプロセスも不安定になり、応答が遅くなる以上の問題が発生する可能性があります。
この記事では、CPU 使用率が高いノードとコンテナーを特定し、高い CPU 使用率を解決するためのベスト プラクティスを提供します。
現象
次の表は、CPU 使用率が高い一般的な現象の概要を示しています。
現象 | 説明 |
---|---|
CPU の不足 | CPU 負荷の高いアプリケーションでは、同じノード上の他のアプリケーションの速度が低下します。 |
状態の変化が遅い | ポッドの準備には時間がかかる場合があります。 |
NotReady ノードの状態 | ノードが NotReady 状態になります。 この問題は、CPU 使用率が高いコンテナーによって Kubectl コマンド ライン ツールが応答しなくなるために発生します。 |
トラブルシューティングのチェックリスト
CPU 使用率の高い問題を解決するには、効果的な監視ツールを使用し、ベスト プラクティスを適用します。
手順 1: CPU 使用率が高いノード/コンテナーを特定する
CPU 使用率が高いノードとコンテナーを識別するには、次のいずれかの方法を使用します。
Web ブラウザーで、Azure portal で AKS の Container Insights 機能を使用します。
コンソールで、Kubernetes コマンド ライン ツール (kubectl) を使用します。
Container Insights は AKS 内の機能です。 コンテナー ワークロードのパフォーマンスを監視するように設計されています。 Container Insights を使用して、CPU 使用率の高いノード、コンテナー、またはポッドを特定できます。
CPU 使用率が高いノード、コンテナー、またはポッドを特定するには、次の手順に従います。
[監視] で [分析情報] を選択します。
適切な Time 範囲を設定します。
CPU 使用率が高いノードを見つけ、ノードの CPU 使用率が安定しているかどうかを確認します。
[ノード] を選択します。 Metric を CPU Usage (millicores)に設定し、サンプルを Max に設定します。 Max の並べ替え機能を使用して、ノードを Max% 順に並べ替えます。 CPU 使用率が最も高いノードが上部に表示されます。
次のスクリーンショットでは、ノードは最大 CPU の 12% のみを使用し、16 日間実行されています。
CPU 使用率が高いノードを見つけたら、ノードを選択してポッドとその CPU 使用率を検索します。
Note
ポッドの CPU またはメモリ使用量の割合は、コンテナーに指定された CPU 要求に基づいています。 ノードの CPU またはメモリ使用量の割合は表しません。 そのため、ポッドの CPU またはメモリ使用量の割合ではなく、実際の CPU またはメモリ使用量を確認します。
CPU 使用率が高いポッドの一覧を取得したら、CPU 使用率の急増の原因となるアプリケーションにマップできます。
手順 2: 高い CPU 使用率を回避するためのベスト プラクティスを確認する
高い CPU 使用率を回避するためのベスト プラクティスを実装する方法については、次の表を参照してください。
ベスト プラクティス | 説明 |
---|---|
コンテナーに適切な制限を設定する | Kubernetes では、コンテナーのリソースに対する要求と制限を指定できます。 リソースの要求と制限は、コンテナーで使用できるリソースの最小数と最大数を表します。 適切な要求と制限を設定して、ポッドごとに適切な Kubernetes サービスの品質 (QoS) クラスを選択することをお勧めします。 |
ポッドの水平オートスケーラー (HPA) を有効にする | 適切な制限を設定すると共に HPA を有効にすると、高 CPU 使用率の解決に役立ちます。 |
上位の SKU VM を選択する | 高い CPU ワークロードを処理するには、より上位の SKU VM を使用しましょう。 これを行うには、新しいノード プールを作成し、ノードを遮断してそれらをスケジュール不可にし、既存のノード プールをドレインします。 |
システム ワークロードとユーザー ワークロードを分離する | ワークロードを実行するために、(エージェント プール以外の) 別のノード プールを作成することをお勧めします。 これにより、システム ノード プールの過負荷を防ぎ、パフォーマンスを向上させることができます。 |
関連情報
- Container insights の概要
- Container insights を使用して Kubernetes クラスターのパフォーマンスを監視する
- Container insights エージェントを管理する方法
- リソースの制限
- リソース クォータ
- 範囲の制限
- サービスの品質
お問い合わせはこちらから
質問がある場合やヘルプが必要な場合は、サポート要求を作成するか、Azure コミュニティ サポートにお問い合わせください。 Azure フィードバック コミュニティに製品フィードバックを送信することもできます。