【プライオリティクラス】

PriorityClass(Kubernetes) とは?

最終更新:
💡 Podの配置に使う、優先度の名前と数値

Kubernetesで、Podに付ける優先度の名前と整数値を定義するオブジェクト。スケジューリングの順序や、低優先度Podの退避によって配置先を確保する判断に使われる。

📌 このページのポイント
優先度を使ってPodの配置を判断低優先度Podの退避で配置できる場合の例ノード低優先度Pod優先度 10退避・終了元のPod高優先度Pod:1000退避したPod自身が待機へ戻るわけではないNever:他Podを退避させずに待つ優先度だけで起動は保証されない
優先度はPriorityClassのvalueから決まる。退避で配置条件を満たせる場合の概念図で、瞬時の入替えを表すものではない。管理元が代わりの新しいPodを作る場合がある。
ひよこ ひよこ
リソースが足りないと、誰を止めるか決めるの?
ペンギン先生 ペンギン先生
主にPodを配置するスケジューリングの優先度を定義するよ。待機中の高優先度Podを置くため、低優先度Podを退避させることはあるけれど、あらゆる停止順をこれだけで決めるわけではないんだ。
ひよこ ひよこ
どう設定するの?
ペンギン先生 ペンギン先生
PriorityClassに名前とvalueを設定し、PodのpriorityClassNameでその名前を指定するよ。valueが大きいほど高優先度。PriorityClassは名前空間ごとではなく、クラスタ全体のオブジェクトなんだ。
ひよこ ひよこ
高優先度なら必ず動く?
ペンギン先生 ペンギン先生
配置に必要な条件を満たす必要があるよ。低優先度Podを退避させても置けるノードがなければ待機する。優先度はCPUやメモリを増やしたり、即時の起動を保証したりする設定ではないんだ。
ひよこ ひよこ
退避させられたPodは待機に戻る?
ペンギン先生 ペンギン先生
そのPod自身が待機状態に戻るわけではないよ。Deploymentなどで管理されていれば、コントローラーが代わりの新しいPodを作る。その新しいPodが配置を待つことはあるんだ。
ひよこ ひよこ
他のPodを退避させたくないときは?
ペンギン先生 ペンギン先生
preemptionPolicy: Neverを使うと、高い優先度で待ちながら、他のPodを退避させずに配置可能になるのを待てるよ。ただし、そのPodもさらに高優先度のPodに退避させられることはある。globalDefaultをtrueにしたクラスは未指定Podの既定値になり、クラスタに一つだけ設定できるんだ。
ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「PriorityClass」って出てきたら「Podの配置順や退避の判断に使う、優先度の定義」と思えばだいたいOK!
📖 おまけ:英語の意味
「PriorityClass」 = 優先度クラス
💬 Priorityは優先度、Classは分類を表すよ。クラス名を整数の優先度へ対応付ける、クラスタ全体の定義なんだ。

参考資料

← 用語集にもどる