Kubernetes v1.36 [alpha](デフォルトで無効)PodGroupは中断モードを宣言できます。このモードは、より優先度の高いPodGroupを配置する場合などに、スケジューラーが実行中のPodGroupをどのように中断できるかを定めます。また、PodGroupには優先度があり、ワークロードアウェア・プリエンプションの際には、グループ内の各Podの優先度に代わって適用されます。
priorityまたはdisruptionModeフィールドは、ワークロードアウェア・プリエンプションでのみ考慮されます。Podのスケジューリングフェーズでは、スケジューラーはPodGroupのpriorityやdisruptionModeフィールドを考慮しません。APIはPodとPodGroupの2つの中断モードをサポートしています。
デフォルトはPodです。
Podモードは、グループ内のすべてのPodを独立したエンティティとして扱うようスケジューラーに指示し、PodGroup内の単一のPodを個別に中断できます。
PodGroupモードでは、中断を「全か無か」として扱います。
PodGroup内のすべてのPodをまとめて中断するよう、スケジューラーに指示します。
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