Windows AKS 노드의 "kubectl top node"에서 MEMORY(바이트) 값은 무엇을 의미하나요?

Windows AKS 노드의 "kubectl top node"에서 MEMORY(바이트) 값은 무엇을 의미하나요?

Windows 노드가 포함된 Azure Kubernetes Services 클러스터에서 실행하면 다음 kubectl top nodes에 대한 값이 반환됩니다 MEMORY(bytes).

PS >kubectl top nodes
NAME                                CPU(cores)   CPU%   MEMORY(bytes)   MEMORY%
...
akswinxxxxxxxxx                     163m         8%     2407Mi          55%
...

이 숫자(2407Mi)는 그렇지 않다할당됨에서 반환된 값 kubectl describe node(동일한 단위로 변환 시)은 다음과 같습니다.2084Mi:

PS > kubectl describe node akswinxxxxxxxxx
...
Allocated resources:
  (Total limits may be over 100 percent, i.e., overcommitted.)
  Resource           Requests         Limits
  --------           --------         ------
  cpu                1070m (56%)      500m (26%)
  memory             2134435Ki (48%)  2412Mi (56%)
  ephemeral-storage  0 (0%)           0 (0%)

(다른 상황에서는 훨씬 더 큰 차이를 보았습니다.)

또한 작업 세트의 합계와도 동일하지 않습니다(6398Mi) 또는 개인 메모리(3822Mi) 노드에서 실행 중인 프로세스 중:

PS C:\C\6428530b2b53f975bb582acc2f12458ca138075069d33d663f3b9e2ec70edbaf> (get-process |Measure-Object WorkingSet64 -Sum).Sum / 1024 / 1024
6397.7109375
PS C:\C\6428530b2b53f975bb582acc2f12458ca138075069d33d663f3b9e2ec70edbaf> (get-process |Measure-Object PrivateMemorySize64 -Sum).Sum / 1024 / 1024
3822.328125

crictl stats( 에서 보고한 바와 같이 이는 Pod 메모리의 합계도 아닙니다.1531Mi):

PS >crictl stats
CONTAINER           CPU %               MEM                 DISK                INODES
2bdfd79f404af       0.00                33.39MB             71.3MB              0
32ea5bc86bacf       0.00                34.36MB             37.75MB             0
511eb449bc0ae       0.00                37.55MB             71.3MB              0
52a1bd98c3558       3.09                222MB               147.8MB             0
6428530b2b53f       0.00                73.54MB             37.75MB             0
6bd5050e8bb4c       0.00                37.68MB             37.75MB             0
78a51582874ec       0.00                241.5MB             104.9MB             0
bb1224de3c87e       0.00                34.14MB             71.3MB              0
e19566f08ca1e       0.00                38.27MB             37.75MB             0
e633436686347       0.00                329.5MB             172MB               0
f82c4306b4692       0.00                34.79MB             37.75MB             0
fa36b455d852f       0.00                235.8MB             104.9MB             0
fe7d9f0193f17       0.00                178MB               306.2MB             0

또한 노드의 "총 메모리에서 여유 물리적 메모리를 뺀 값"과도 일치하지 않습니다(5101Mi):

PS >$OS =  Get-WmiObject -Class WIN32_OperatingSystem
PS> ($OS.TotalVisibleMemorySize - $OS.FreePhysicalMemory)/1024
5101.25390625

에 표시된대로쿠버네티스 문서, 값은 노드의작업 세트. 그렇다면 이는 무엇을 의미하며 어떻게 측정됩니까? 이를 사용하여 노드의 상태나 사용 가능한 리소스를 모니터링하려면 어떻게 해야 합니까?

(참고: 인터넷에서 Kubernetes의메트릭 서버. 그러나 내 AKS Windows 노드에서는 실행되지 않는 것 같습니다.)

2022년 12월 5일 업데이트:나는 이 숫자가 일반적으로 현재 사용되고 있는 노드의 메모리 양을 나타내기 위한 것이라는 것을 알고 있습니다. 그러나 나는 그것에 대해 더 자세히 알고 싶습니다. Pod 메모리 수치와 일치하지 않아서 시스템 프로세스도 포함되어 있는 것 같죠? 그렇다면 어떻게 비교될 수 ​​있는가?할당 가능( MEMORY%백분율), Pod에 사용할 수 있는 것은 무엇입니까? 그리고 노드에 직접 보고된 숫자(위 참조)와 일치하지 않는 이유는 무엇입니까? 간단히 말해서 Windows에서 숫자가 실제로 어떻게 계산되는지 알고 싶습니다.

답변1

"메모리(바이트)"에 표시된 값이 kubectl top nodes"와 동일하지 않습니다.할당됨" 값은 로 표시됩니다 kubectl describe <node>. "할당된" 값은 노드에서 실행 중인 Pod에 대해 설정된 메모리 요청 및 제한을 기반으로 Kubernetes 스케줄러가 노드에 할당한 메모리 양을 나타냅니다. "메모리(바이트)kubectl top nodes" 값은 명령이 실행될 때 노드에서 실행 중인 프로세스에서 사용 중인 실제 메모리 양을 나타냅니다 .

"를 사용할 수 있습니다.메모리(바이트)" 값을 사용하여 kubectl top nodes노드의 상태를 모니터링하고 워크로드를 실행하는 데 사용할 수 있는 충분한 메모리가 있는지 확인합니다. 값이 지속적으로 "할당됨" 값은 노드의 메모리가 부족하여 크기를 조정하거나 리소스를 재할당해야 함을 나타낼 수 있습니다.

관련 정보