QoSクラス(K8s)
リソースのrequestsとlimitsの設定に基づき、Kubernetesがポッドに割り当てる品質クラス。ノードのメモリが尽きたとき、どのポッドから落とされるかを決める。
クラスは3つある。Guaranteed(CPUとメモリの両方でrequests=limits)は優先度が最も高く、メモリ逼迫時も最後に落とされる。Burstable(requestsがlimitsより低い、またはrequestsのみ)は中間で、余裕があれば追加で使える。BestEffort(requests/limitsなし)は最も低く、ノードが逼迫すると真っ先に退避される。
仕組みとしては、ノードのメモリが不足すると、カーネルやkubeletがポッドを順に調べ、BestEffort、次にrequestsを超えて使っているBurstable、最後にGuaranteedの順に手を付ける。重要なサービスはGuaranteedにしておけば生き残り、重要でないバッチが犠牲になる。QoSクラスは直接指定するものではなく、requests/limitsの設定から自動的に決まる。見落とされがちだが、リソース設定の中心的な帰結である。