2.13. Pod スケジューリングの決定に Pod の優先度を含める


Pod 優先度は、Pod を重要度順にランク付けしてスケジューリング順序に影響を与え、リソース不足のエビクションを並べ替え、プリエンプションを有効にします。これにより、リソースが制約されている場合に、優先度の高い Pod が優先度の低い Pod をエビクトできます。

優先度およびプリエンプションを使用するには、Pod の相対的な重みを定義する優先度クラスを作成します。次に Pod 仕様で優先度クラスを参照し、スケジューリングの重みを適用します。

2.13.1. Pod の優先度について

Pod の優先度は、整数値を持つ優先度クラスを使用してスケジューリング順序を決定します。要件を満たしている場合、優先度の高い Pod がキューの前方に配置され、優先度の低い Pod よりも先にスケジューリングされます。

2.13.1.1. Pod の優先度クラス

Pod には優先度クラスを割り当てることができます。これは、名前から優先度の整数値へのマッピングを定義する namespace を使用していないオブジェクトです。値が高いと優先度が高くなります。

優先度およびプリエンプションは、1000000000 (10 億) 以下の 32 ビットの整数値を取ることができます。プリエンプションや退避を実行すべきでない Critical Pod 用に 10 億以上の数値を予約する必要があります。デフォルトで、OpenShift Container Platform には 2 つの予約された優先度クラスがあり、これらは重要なシステム Pod で保証されたスケジューリングが適用されるために使用されます。

$ oc get priorityclasses

出力例

NAME                      VALUE        GLOBAL-DEFAULT   AGE
system-node-critical      2000001000   false            72m
system-cluster-critical   2000000000   false            72m
openshift-user-critical   1000000000   false            3d13h
cluster-logging           1000000      false            29s

  • system-node-critical: この優先度クラスには 2000001000 の値があり、ノードから退避すべきでないすべての Pod に使用されます。この優先度クラスを持つ Pod の例としては、ovnkube-node などがあります。数多くの重要なコンポーネントには、デフォルトで system-node-critical の優先度クラスが含まれます。以下は例になります。

    • master-api
    • master-controller
    • master-etcd
    • ovn-kubernetes
    • sync
  • system-cluster-critical: この優先度クラスには 2000000000 (20 億) の値があり、クラスターに重要な Pod に使用されます。この優先度クラスの Pod は特定の状況でノードから退避される可能性があります。たとえば、system-node-critical 優先度クラスで設定される Pod が優先される可能性があります。この場合でも、この優先度クラスではスケジューリングが保証されます。この優先度クラスを持つ可能性のある Pod の例として、fluentd、descheduler などのアドオンコンポーネントなどがあります。数多くの重要なコンポーネントには、デフォルトで system-cluster-critical 優先度クラスが含まれます。以下はその一例です。

    • fluentd
    • metrics-server
    • descheduler
  • openshift-user-critical: priorityClassName フィールドを、リソース消費をバインドできず、予測可能なリソース消費動作がない重要な Pod で使用できます。openshift-monitoring および openshift-user-workload-monitoring namespace 下にある Prometheus Pod は、openshift-user-critical priorityClassName を使用します。モニタリングのワークロードは system-critical を最初の priorityClass として使用しますが、これにより、モニタリング時にメモリーが過剰に使用され、ノードが退避できない問題が発生します。その結果、モニタリングの優先度が下がり、スケジューラーに柔軟性が与えられ、重要なノードの動作を維持するために重いワークロード発生します。
  • cluster-logging: この優先度は、Fluentd Pod が他のアプリケーションより優先してノードにスケジュールされるようにするために Fluentd で使用されます。

2.13.1.2. Pod の優先度名

1 つ以上の優先度クラスを準備した後に、Pod 仕様に優先度クラス名を指定する Pod を作成できます。優先度のアドミッションコントローラーは、優先度クラス名フィールドを使用して優先度の整数値を設定します。名前付きの優先度クラスが見つからない場合、Pod は拒否されます。

Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

会社概要

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

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

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

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

Legal Notice

Theme

© 2026 Red Hat
トップに戻る