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 使用率が高くなるノード、コンテナー、ポッドを特定するには、次の手順に従います。
Azure portalからクラスターに移動します。
[ 監視] で、[分析情報] を選択します。
適切な 時間範囲を設定します。
CPU 使用率が高いノードを見つけ、ノードの CPU 使用率が安定している場合はチェックします。
[ ノード] を選択します。 [メトリック] を [CPU 使用率 (ミリコア)] に設定し、サンプルを [最大] に設定します。 最大の並べ替え機能を使用して、ノードを Max% で並べ替えます。 CPU 使用率が最も高いノードが上部に表示されます。
次のスクリーンショットでは、ノードは最大 CPU の 12% のみを使用し、16 日間実行されています。
CPU 使用率が高いノードを見つけたら、ノードを選択してポッドとその CPU 使用率を検索します。
注:
ポッドの CPU またはメモリ使用量の割合は、コンテナーに対して指定された CPU 要求に基づいています。 これは、ノードの CPU またはメモリ使用量の割合を表しません。 そのため、ポッドの CPU またはメモリ使用量の割合ではなく、実際の CPU またはメモリ使用量を確認します。
CPU 使用率が高いポッドの一覧を取得したら、CPU 使用率の急増を引き起こすアプリケーションにマップできます。
手順 2: CPU 使用率が高くないようにベスト プラクティスを確認する
CPU 使用率が高くならないようにするためのベスト プラクティスを実装する方法については、次の表を参照してください。
ベスト プラクティス | 説明 |
---|---|
コンテナーの適切な制限を設定する | Kubernetes では、コンテナーのリソースに対する要求と制限を指定できます。 リソースの要求と制限は、コンテナーで使用できるリソースの最小数と最大数を表します。 適切な要求と制限を設定して、ポッドごとに適切な Kubernetes Quality of Service (QoS) クラスを選択することをお勧めします。 |
ポッドの水平オートスケーラー (HPA) を有効にする | HPA を有効にして適切な制限を設定すると、CPU 使用率の高い解決に役立ちます。 |
上位の SKU VM を選択する | 高い CPU ワークロードを処理するには、より高い SKU VM を使用します。 これを行うには、新しいノード プールを作成し、ノードを切断してスケジュールを解除し、既存のノード プールをドレインします。 |
システムとユーザーのワークロードを分離する | ワークロードを実行するには、(エージェント プール以外の) 別のノード プールを作成することをお勧めします。 これにより、システム ノード プールのオーバーロードを防ぎ、パフォーマンスを向上させることができます。 |
関連情報
- コンテナー分析情報の概要
- Container Insights を使用して Kubernetes クラスターのパフォーマンスを監視する
- Container Insights エージェントを管理する方法
- リソースの制限
- リソース クォータ
- 範囲の制限
- サービス品質
お問い合わせはこちらから
質問がある場合やヘルプが必要な場合は、サポート要求を作成するか、Azure コミュニティ サポートにお問い合わせください。 Azure フィードバック コミュニティに製品フィードバックを送信することもできます。