spec.containers.resources
from spec.containers
spec.containersに指定する
例
code:yaml
spec:
containers:
- name: app
image: nginx:1.25
resources:
requests:
cpu: 200m
memory: 256Mi
limits:
cpu: 500m
memory: 512Mi
resources.requests
Podをスケジュールする際に、ノード上にこれだけの空きがあるかをチェックする値
最低保証
resources.limits
コンテナが使えるリソースの上限
memory
limitsを超えるとOOMKillされる(強制終了)
cpu
limitsを超えるとスロットリング(処理が遅くなるだけで殺されない)
requestsとlimitsは基本的にセットで指定する
requestsだけ指定した場合
limitsが無制限になり、コンテナが暴走するとノード全体に影響する
limitsだけ指定した場合
requestsがlimitsと同じ値に自動設定される
意図せず多くのリソースを予約してしまう可能性がある
QoS class
requests と limits の組み合わせで決まる
table:QoS class
class 条件 特徴
Guaranteed requests = limits evictionされにくい。リソース固定
Burstable requests < limits 余裕があればlimitsまで使える
BestEffort 未設定 余ったリソースを使う。最初に追い出される
実運用ではBurstable(requests < limits)の方がよく見る
requestsを低めに抑えてスケジュールしやすくしつつ、limitsで上限を守る
短命で確実に完了させたい処理(例: DBマイグレーション)はGuaranteedが安全な場合もある