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