Kubelet과 OpenShift 기본 스케줄러(Default Scheduler)의 관점에서 노드에서 사용 가능한 메모리
Environment
- Red Hat OpenShift Container Platform (RHOCP)
- 4
Issue
- 기본 오픈시프트 스케쥴러가 pod가 호스팅될 노드를 선택할 때, 노드가 사용되는 메모리는 어떻게 계산이 되나요? pod의
요청그리고제한혹은 단순 메모리 사용이 고려되나요? - 만약 노드가 메모리가 부족할 때, Kubelet이 pod들을 제거하기 시작합니다. Kubelet들은 사용가능한 메모리와 사용되어지는 메모리를 어떻게 파악하고 있나요?
Resolution
면책 조항: 문서에 있는 링크된 외부 웹사이트들의 제공되는 정보는 편의를 위하여 제공됩니다. 레드햇은 링크들의 정보에 대하여 검토하지 않았으며 해당 컨텐츠에 대한 이용이나 관련하여 책임을 지지 않습니다. 어떠한 링크들도 외부 웹사이트 링크를 포함한다고 해서 레드햇이 해당 웹사이트 또는 그 소속 기업, 제품 또는 서비스를 보증하는 것은 아닙니다. 귀하는 레드햇은 외부의 링크나 컨텐츠에 대하여 사용으로 인하여 발생한 손실이나 비용 지불에 대한 결과에 대하여 어떠한 책임도 지지 않는 점에 동의합니다.
이러한 질문에 대답하기 위하여 오픈시프트의 allocatable memory 컨셉에 대하여 생각해야 합니다.
[Allocatable memory] = [Node Capacity] - [system-reserved] - [Hard-Eviction-Thresholds]
다음 링크들의 좀 더 자세한 정보들에 대해 참고하세요:
- Allocating resources for nodes in an OpenShift Container Platform cluster.
- Default values for the garbage collection related parameters on OCP4.
기본 스케쥴러(Default Scheduler)
오픈시프트의 기본 스케쥴러(Default Scheduler)는 다음과 같은 조건이 충족할 때 새로운 파드가 호스트 되기 위한 노드가 충분히 이용가능한 메모리가 있다고 생각합니다:
[Memory request of the new pod] < [Allocatable memory] - [Total memory requested by all the pods currently running in the node]
limits와 메모리 사용량 두가지 모두 스케쥴링 시에는 고려되지 않는다는 점을 명심하세요. 오직requests들만 고려됩니다.- 그러나 파드 할당을 좀 더 쉽게하기 위한 목적으로 파드에 필요한 메모리 양 보다
requests메모리의 양을 적게 하는 것은 추천되지 않습니다. 그렇게 될 경우 pod의 밀도가 비정상적인 상태로 증가할 수 있습니다.
Kubelet
그럼에도 불구하고, Kubelet은 노드에서 실행 중인 모든 파드가 사용되어지는 메모리양이 할당 가능한 메모리양보다 더 커질 경우 Pod를 제거하기 시작합니다.
주의 하세요:
active_file메모리 즉 buffer/cache 메모리는 memory의 Kubelet에서의 사용되어진다라고 판단되는 부분이나 kernel 관점에서는 사용가능한 메모리로 판단된다는 점입니다. 추가적인 정보는 다음 링크에서 확인해주세요: active_file memory is not considered as available memory.
This solution is part of Red Hat’s fast-track publication program, providing a huge library of solutions that Red Hat engineers have created while supporting our customers. To give you the knowledge you need the instant it becomes available, these articles may be presented in a raw and unedited form.
Comments