모니터링 도구에서 GKE kill pod에 여전히 메모리가 있다고 표시됨

모니터링 도구에서 GKE kill pod에 여전히 메모리가 있다고 표시됨

기본 모니터링 차트로 GKE를 테스트하고 있습니다.
클러스터 요약에 따르면 각 노드(n2-custom-4-8192)에는 6.36GB의 메모리를 할당할 수 있습니다.
노드 세부정보 페이지에서 포드가 종료될 때 "사용됨" 피크가 4.19인 것을 볼 수 있습니다.

뭔가 빠졌나요? 아니면 차트의 문제인가요? 6.36GB 메모리 할당 가능

4.19GB를 사용할 때 Pod가 종료됩니다.

답변1

이 경우 모든 것이 의도한 대로 작동합니다. 에 대한 정보를 놓친 것 같습니다 Eviction threshold.

AllocatableCapacity는 마이너스 Reserved및 의 값입니다 Eviction Threshold.

GKE문서 에서노드 할당 가능 리소스자원 할당에 대한 정보를 찾을 수 있습니다.

노드의 리소스 중 일부는 GKE해당 노드가 cluster. 따라서 노드의 총 리소스(머신 유형 문서에 지정된 대로)와 의 노드 allocatable리소스 간에 차이가 있을 수 있습니다 GKE. 더 큰 머신 유형이 더 많이 containers(더 나아가 더 많은 Pod를) 실행하는 경향이 있으므로 더 큰 머신에 대해 GKE예약되는 리소스의 양도 Kubernetes components늘어납니다. Windows Server nodes또한 more resources일반적인 Linux node. 노드에는 Windows OS 실행과 컨테이너에서 실행할 수 없는 Windows Server 구성 요소를 설명하기 위한 추가 리소스가 필요합니다.

클러스터에서 사용 가능한 노드 할당 가능 리소스를 검사하려면 다음 명령을 실행합니다.

$ kubectl describe node ${NodeName} | grep Allocatable -B 7 -A 6

반환된 출력에는 임시 스토리지, 메모리 및 CPU에 대한 측정값이 포함된 용량 및 할당 가능 필드가 포함됩니다.

스크롤을 조금 더 아래로 내리시면할당 가능한 메모리 및 CPU 리소스할당 가능한 리소스는 다음과 같은 방식으로 계산된다는 내용을 읽게 됩니다.

Allocatable = Capacity - Reserved - Eviction Threshold

메모리 리소스의 경우 GKE는 다음을 예약합니다.

  • 메모리가 1GB 미만인 머신의 경우 255MiB 메모리
  • 처음 4GB 메모리의 25%
  • 다음 4GB 메모리의 20%(최대 8GB)
  • 다음 8GB 메모리의 10%(최대 16GB)
  • 다음 112GB 메모리의 6%(최대 128GB)
  • 128GB 이상의 메모리 중 2%

관련 정보