Windows 노드의 리소스 관리

Windows 노드의 리소스 관리 (Resource Management for Windows nodes)

이 페이지에서는 Linux와 Windows 사이에서 리소스가 관리되는 방식의 차이를 설명해요.

리소스 경계 (Resource boundaries)

Linux 노드에서는 cgroups이 파드 경계로 사용되어 리소스를 제어해요. 컨테이너는 네트워크·프로세스·파일시스템 격리를 위해 그 경계 안에서 생성돼요. Linux cgroup API를 사용하면 CPU·I/O·메모리 사용 통계를 수집할 수 있죠.

반면 Windows는 컨테이너당 job object에 시스템 네임스페이스 필터를 붙여 컨테이너 안의 모든 프로세스를 담고, 호스트로부터 논리적 격리를 제공해요.

네임스페이스 필터링 없이 Windows 컨테이너를 실행할 방법은 없어요. 이 말은 호스트의 컨텍스트에서 시스템 권한을 주장할 수 없으므로, Windows에서는 특권(privileged) 컨테이너를 사용할 수 없다는 뜻이에요. Security Account Manager(SAM)가 분리되어 있기 때문에 컨테이너는 호스트의 신원을 가정할 수도 없어요.

메모리 관리

CPU 관리

리소스 예약 (Resource reservation)

운영체제, 컨테이너 런타임, kubelet 같은 Kubernetes 호스트 프로세스가 사용하는 메모리와 CPU를 반영하기 위해, --kube-reserved 및/또는 --system-reserved kubelet 플래그로 메모리와 CPU 리소스를 예약할 수 있어요(그리고 해야 해요).

주의: 워크로드를 배포할 때 컨테이너에 리소스 메모리·CPU 상한을 설정하세요. 이것 역시 NodeAllocatable에서 차감되며, 클러스터 전체 스케줄러가 어떤 파드를 어떤 노드에 배치할지 결정하는 데 도움을 줘요.

더 알아보기