apiVersion
kind
metadataname
spec
containers
- name
resourcesrequests
limits
spec.containers.resources
포드나 디플로이먼트 등을 생성할 때 자원 할당량을 명시적으로 제한하지 않을 경우 해당 오브젝트는 해당 오브젝트가 포함된 노드의 모든 물리 자원을 사용할 수 있게 된다.
ex)
requests:
memory: 1024Mi
cpu: 500m
ephemeral-storage: 1024Mi
nvidia.com/gpu:2
limits:
memory: 2048Mi
cpu: 1
ephemeral-storage: 2048Mi
nvidia.com/gpu:2
1) Quranteed 클래스
limits만 설정하거나, limits와 request를 동일하게 설정한 경우 부여받는 등급이다. 해당 클래스는 오버커밋되는 경우가 없으므로 자원의 사용을 안정적으로 보장받는다.
2) BestEffort 클래스
request와 limits 모두 설정되지 않은 경우 부여받는 등급이다. 즉, 남은 자원에 대해서는 자유롭게 사용할 수 있지만 최소 사용 가능 자원을 보장받지도 못한다.
3) Burstable 클래스
limits값이 request보다 더 큰 경우 부여받는 등급이다. request와 limits의 본분을 다하는 경우.
위 3가지 등급 중 메모리가 부족한 경우 포드가 evict(퇴거)되는 순서는 BestEffort, Burstable, Quranteed 순입니다. 하지만 이 순서는 절대적이지 않고 포드가 현재 사용 중인 실제 메모리량에 따라 우선순위가 바뀔 수도 있습니다.