検索

11.3. 最適なノードリソースの使用状況を示すメトリクスを特定する

download PDF

ノードメトリクスダッシュボードは、CriticalOutliersAverage durationsNumber of Operations の 4 つのカテゴリーに編成されています。Critical カテゴリーのメトリクスは、最適なノードリソースの使用状況を示すのに役立ちます。これらのメトリクスには以下が含まれます。

  • 過去 1 日間で最多の OOM キルが発生した上位 3 つのコンテナー
  • 過去 1 時間のイメージプル失敗率
  • システム予約メモリー使用率が 80% を超えるノード
  • Kubelet システム予約メモリー使用率が 50% を超えるノード
  • CRI-O システム予約メモリー使用率が 50% を超えるノード
  • システム予約 CPU 使用率が 80% を超えるノード
  • Kubelet システム予約 CPU 使用率が 50% を超えるノード
  • CRI-O システム予約 CPU 使用率が 50% を超えるノード

11.3.1. 過去 1 日間で最多の OOM キルが発生した上位 3 つのコンテナー

過去 1 日間で最多の OOM キルが発生した上位 3 つのコンテナー のクエリーでは、前日に最も多くの Out-Of-Memory (OOM) キルが発生した上位 3 つのコンテナーに関する詳細を取得します。

デフォルトクエリーの例

topk(3, sum(increase(container_runtime_crio_containers_oom_count_total[1d])) by (name))

OOM キルが発生すると、システムはメモリー不足により一部のプロセスを強制的に終了します。OOM キルが頻繁に発生すると、ノードの機能だけでなく、Kubernetes エコシステム全体の機能も阻害される可能性があります。OOM キルが頻繁に発生するコンテナーは、必要以上に多くのメモリーを消費している可能性があり、これによりシステムが不安定になります。

このメトリックを使用して、OOM キルが頻繁に発生しているコンテナーを特定し、これらのコンテナーがメモリーを過剰に消費している原因を調査します。必要に応じてリソース割り当てを調整し、メモリー使用量に基づきコンテナーサイズを変更することを検討してください。OutliersAverage durationsNumber of operations カテゴリーのメトリクスを確認して、ノードの正常性と安定性に関する詳細情報を得ることもできます。

11.3.2. 過去 1 時間のイメージプル失敗率

過去 1 時間のイメージプル失敗率 のクエリーでは、失敗したイメージプルの合計数を、成功したイメージプルと失敗したイメージプルの合計数で割って失敗率を算出します。

デフォルトクエリーの例

rate(container_runtime_crio_image_pulls_failure_total[1h]) / (rate(container_runtime_crio_image_pulls_success_total[1h]) + rate(container_runtime_crio_image_pulls_failure_total[1h]))

イメージプルの失敗率を理解することは、ノードの正常性を維持するために重要です。失敗率が高い場合は、ネットワークの問題、ストレージの問題、設定ミス、または Pod 密度や新しいコンテナーのデプロイメントを阻害する可能性があるその他の問題を示唆している場合があります。

このクエリーの結果が高い場合は、ネットワーク接続、リモートリポジトリーの可用性、ノードストレージ、イメージ参照の正確性などの考えられる原因を調査します。また、OutliersAverage durationsNumber of operations カテゴリーのメトリクスを確認して、さらに詳細な情報を得ることができます。

11.3.3. システム予約メモリー使用率が 80% を超えるノード

システム予約メモリー使用率が 80% を超えるノード のクエリーでは、各ノードで使用されているシステム予約メモリーの割合が計算されます。この計算では、Resident Set Size (RSS) の合計を、割り当て可能なメモリーから差し引かれたノードの合計メモリー容量で割ります。RSS は、メインメモリー (RAM) に保持される、プロセスが占有するシステムメモリーの部分です。結果の値がしきい値である 80% 以上の場合、ノードにフラグが追加されます。

デフォルトクエリーの例

sum by (node) (container_memory_rss{id="/system.slice"}) / sum by (node) (kube_node_status_capacity{resource="memory"} - kube_node_status_allocatable{resource="memory"}) * 100 >= 80

システム予約メモリーは、システムデーモンおよび Kubernetes システムデーモンの実行に利用されるため、Kubernetes ノードにとって非常に重要です。システム予約メモリー使用率が 80% を超える場合は、システムと Kubernetes デーモンがメモリーを過剰に消費していることを示し、ノードが不安定になって実行中の Pod のパフォーマンスが影響を受ける可能性があることを示唆しています。過剰なメモリー消費は、メモリーを解放するために重要なシステムプロセスを終了させる Out-of-Memory (OOM) キラーを引き起こす可能性があります。

このメトリックによりノードにフラグが追加された場合は、メモリーを過剰に消費しているシステムまたは Kubernetes プロセスを特定し、状況を緩和するための適切なアクションを実行します。これらのアクションには、重要ではないプロセスのスケールバック、メモリー使用量を削減するためのプログラム設定の最適化、メモリー容量がより大きいハードウェアへのノードシステムのアップグレードなどが含まれる場合があります。また、OutliersAverage durationsNumber of operations カテゴリーのメトリクスを確認して、ノードのパフォーマンスに関する詳細情報を得ることもできます。

11.3.4. Kubelet システム予約メモリー使用率が 50% を超えるノード

Kubelet システム予約メモリー使用率が 50% を超えるノード のクエリーでは、Kubelet のシステム予約メモリー使用率が 50% を超えているノードが示されます。このクエリーでは、Kubelet プロセス自体がノード上で消費しているメモリーを調べます。

デフォルトクエリーの例

sum by (node) (container_memory_rss{id="/system.slice/kubelet.service"}) / sum by (node) (kube_node_status_capacity{resource="memory"} - kube_node_status_allocatable{resource="memory"}) * 100 >= 50

このクエリーは、ノード操作の安定性と効率性に影響を与える可能性のある、ノード内のメモリー逼迫状況を特定するのに役立ちます。Kubelet のメモリー使用率がシステム予約メモリーの 50% を常に超えている場合は、システム予約設定が適切に設定されておらず、ノードが不安定になるリスクが高いことを示しています。

このメトリックが強調表示されている場合は、設定ポリシーを確認し、システム予約設定または Kubelet のリソース制限設定を調整することを検討してください。さらに、Kubelet のメモリー使用率が予約システムメモリー合計の 50% を常に超える場合は、OutliersAverage durationsNumber of operations カテゴリーのメトリクスを調べて、正確な診断のために詳細情報を得ることもできます。

11.3.5. CRI-O システム予約メモリー使用率が 50% を超えるノード

CRI-O システム予約メモリー使用率が 50% を超えるノード のクエリーでは、CRI-O システム用に予約されたメモリーの使用率が 50% 以上のノードをすべて計算します。この場合、メモリー使用率は、RAM に保持される CRI-O システムのメモリーに含まれる Resident Set Size (RSS) によって定義されます。

デフォルトクエリーの例

sum by (node) (container_memory_rss{id="/system.slice/crio.service"}) / sum by (node) (kube_node_status_capacity{resource="memory"} - kube_node_status_allocatable{resource="memory"}) * 100 >= 50

このクエリーは、各ノード上の CRI-O システム用に予約されているメモリーのステータスを監視するのに役立ちます。使用率が高い場合は、利用可能なリソースが不足しており、パフォーマンス上の問題が発生する可能性があることを示唆していることもあります。CRI-O システム用に予約されているメモリーが推奨された制限である 50% を超える場合は、システム予約メモリーの半分がノード上の CRI-O によって使用されていることを示しています。

メモリーの割り当てと使用状況を確認し、ノードが不安定になる可能性を回避するためにメモリーリソースを移動または増やす必要があるかどうかを評価します。また、OutliersAverage durationsNumber of operations カテゴリーのメトリクスを調べて、さらに詳細な情報を得ることもできます。

11.3.6. システム予約 CPU 使用率が 80% を超えるノード

システム予約 CPU 使用率が 80% を超えるノード のクエリーは、システム予約 CPU の使用率が 80% を超えているノードを特定します。このクエリーは、システムで予約された容量に焦点を当てて、過去 5 分間の CPU 使用率を計算し、それをノードで利用可能な CPU リソースと比較します。比率が 80% を超える場合、ノードの結果がメトリックに表示されます。

デフォルトクエリーの例

sum by (node) (rate(container_cpu_usage_seconds_total{id="/system.slice"}[5m]) * 100) / sum by (node) (kube_node_status_capacity{resource="cpu"} - kube_node_status_allocatable{resource="cpu"}) >= 80

このクエリーは、リソースの枯渇につながる可能性のある、システム予約 CPU 使用率の重大なレベルを示します。システム予約 CPU 使用率が高いと、システムプロセス (Kubelet や CRI-O を含む) がノード上のリソースを適切に管理できなくなる可能性があります。このクエリーは、過剰なシステムプロセスや CPU 割り当ての設定ミスを示唆している可能性があります。

考えられる是正措置には、他のノードとのワークロードバランスの再調整や、ノードに割り当てられる CPU リソースの増加が含まれます。システムの CPU 使用率が高くなる原因を調査し、OutliersAverage durationsNumber of operations カテゴリーの該当メトリクスでノードの動作に関する詳細情報を確認します。

11.3.7. Kubelet システム予約 CPU 使用率が 50% を超えるノード

Kubelet システム予約 CPU 使用率が 50% を超えるノード のクエリーでは、Kubelet システムが現在使用しているシステム予約 CPU の割合を計算します。

デフォルトクエリーの例

sum by (node) (rate(container_cpu_usage_seconds_total{id="/system.slice/kubelet.service"}[5m]) * 100) / sum by (node) (kube_node_status_capacity{resource="cpu"} - kube_node_status_allocatable{resource="cpu"}) >= 50

Kubelet は、システムで予約された CPU を独自の操作と重要なシステムサービスの実行に使用します。ノードの正常性を確保するには、システムの予約 CPU 使用率がしきい値である 50% を超えないようにすることが重要です。この制限を超えると、Kubelet の使用率または負荷が高くなっている可能性があり、その場合はノードの安定性だけでなく、Kubernetes クラスター全体のパフォーマンスに影響を与える可能性があります。

このメトリックにノードが表示されている場合、Kubelet とシステム全体に高い負荷がかかっています。クラスター内の他のノード間で負荷を分散することにより、特定のノードのオーバーロードを軽減できます。OutliersAverage durationsNumber of operations カテゴリーの他のクエリーメトリクスを確認して詳細を把握し、必要な是正措置を講じます。

11.3.8. CRI-O システム予約 CPU 使用率が 50% を超えるノード

CRI-O システム予約 CPU 使用率が 50% を超えるノード のクエリーは、過去 5 分間で CRI-O システム予約 CPU の使用率が 50% を超えたノードを特定します。このクエリーは、使用しているコンテナーランタイムである CRI-O による CPU リソースの消費をノードごとに監視します。

デフォルトクエリーの例

sum by (node) (rate(container_cpu_usage_seconds_total{id="/system.slice/crio.service"}[5m]) * 100) / sum by (node) (kube_node_status_capacity{resource="cpu"} - kube_node_status_allocatable{resource="cpu"}) >= 50

このクエリーにより、Pod のパフォーマンスに悪影響を与える可能性がある異常な開始時間を迅速に特定できます。このクエリーで高い値が返された場合、Pod の開始時間が通常より遅く、kubelet、Pod 設定、またはリソースに潜在的な問題があることが示唆されます。

Pod 設定と割り当てられたリソースを確認して、詳細を調査します。それらがシステムの機能と一致していることを確認してください。引き続き開始時間として高い値が示される場合は、ダッシュボード上で他のカテゴリーのメトリクスパネルを調査して、システムコンポーネントの状態を確認してください。

Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

© 2024 Red Hat, Inc.