PodGroupの中断と優先度

PodGroupの中断と優先度

FEATURE STATE: Kubernetes v1.36 [alpha](デフォルトで無効)

PodGroupは中断モードを宣言できます。このモードは、より優先度の高いPodGroupを配置する場合などに、スケジューラーが実行中のPodGroupをどのように中断できるかを定めます。また、PodGroupには優先度があり、ワークロードアウェア・プリエンプションの際には、グループ内の各Podの優先度に代わって適用されます。

中断モードの種類

備考:

v1.36以降、PodGroupのpriorityまたはdisruptionModeフィールドは、ワークロードアウェア・プリエンプションでのみ考慮されます。Podのスケジューリングフェーズでは、スケジューラーはPodGroupのprioritydisruptionModeフィールドを考慮しません。

APIはPodPodGroupの2つの中断モードをサポートしています。 デフォルトはPodです。

Pod

Podモードは、グループ内のすべてのPodを独立したエンティティとして扱うようスケジューラーに指示し、PodGroup内の単一のPodを個別に中断できます。

PodGroup

PodGroupモードでは、中断を「全か無か」として扱います。 PodGroup内のすべてのPodをまとめて中断するよう、スケジューラーに指示します。

PodGroupの優先度

PodGroupは、単一のPodと同じPriorityClassの概念を使用します。 1つ以上のPriorityClassを作成すると、その仕様内でいずれかのPriorityClass名を指定したPodGroupを作成できます。 優先度アドミッションコントローラーはpriorityClassNameフィールドを使用し、優先度の整数値を設定します。 PriorityClassが見つからない場合、PodGroupは拒否されます。 PodGroupにpriorityClassNameが設定されていない場合、KubernetesはデフォルトのPriorityClass(globalDefaultがtrueに設定されたPriorityClass)を探します。 globalDefaultがtrueに設定されたPriorityClassがない場合、priorityClassNameが指定されていないPodGroupの優先度は0になります。

個々のPodの優先度が異なる場合でも、ワークロードアウェア・プリエンプションの際には、PodGroupの優先度がグループ内のすべてのPodの優先度として扱われます。

以下のYAMLは、整数の優先度値1000000に対応するhigh-priority PriorityClassを使用する、PodGroup設定の例です。優先度アドミッションコントローラーは仕様を確認し、PodGroupの優先度を1000000に設定します。

apiVersion: scheduling.k8s.io/v1alpha2
kind: PodGroup
metadata:
  namespace: ns-1
  name: job-1
spec:
  priorityClassName: high-priority

次の項目