AKS 클러스터에서 높은 CPU 사용량 문제 해결
높은 CPU 사용량은 컴퓨터의 성능 또는 유용성에 영향을 주는 CPU 시간이 너무 많이 필요한 하나 이상의 애플리케이션 또는 프로세스의 증상입니다. 높은 CPU 사용량은 여러 가지 방법으로 발생할 수 있지만 주로 사용자 구성으로 인해 발생합니다.
AKS(Azure Kubernetes Service) 클러스터의 노드에서 높은 CPU 사용량을 경험하는 경우 노드에서 실행되는 애플리케이션은 성능 및 안정성이 저하됩니다. 애플리케이션 또는 프로세스도 불안정해지며, 이로 인해 응답 속도가 느려질 수 있는 문제가 발생할 수 있습니다.
이 문서는 높은 CPU를 사용하는 노드 및 컨테이너를 식별하는 데 도움이 되며 높은 CPU 사용량을 resolve 모범 사례를 제공합니다.
증상
다음 표에서는 높은 CPU 사용량의 일반적인 증상에 대해 간략하게 설명합니다.
증상 | 설명 |
---|---|
CPU 부족 | CPU 집약적 애플리케이션은 동일한 노드에서 다른 애플리케이션의 속도를 늦추고 있습니다. |
느린 상태 변경 | Pod를 준비하는 데 시간이 더 오래 걸릴 수 있습니다. |
NotReady 노드 상태 | 노드가 NotReady 상태로 전환됩니다. 이 문제는 CPU 사용량이 많은 컨테이너로 인해 Kubectl 명령줄 도구가 응답하지 않으므로 발생합니다. |
문제 해결 검사 목록
높은 CPU 사용량을 resolve 효과적인 모니터링 도구를 사용하고 모범 사례를 적용합니다.
1단계: CPU 사용량이 많은 노드/컨테이너 식별
다음 방법 중 하나를 사용하여 CPU 사용량이 높은 노드 및 컨테이너를 식별합니다.
웹 브라우저에서 Azure Portal AKS의 Container Insights 기능을 사용합니다.
콘솔에서 Kubernetes 명령줄 도구(kubectl)를 사용합니다.
Container Insights 는 AKS 내의 기능입니다. 컨테이너 워크로드의 성능을 모니터링하도록 설계되었습니다. 컨테이너 인사이트를 사용하여 높은 CPU 사용량을 유도하는 노드, 컨테이너 또는 Pod를 식별할 수 있습니다.
높은 CPU 사용량을 구동하는 노드, 컨테이너 또는 Pod를 식별하려면 다음 단계를 수행합니다.
Azure Portal 클러스터로 이동합니다.
모니터링에서 인사이트를 선택합니다.
적절한 시간 범위를 설정합니다.
CPU 사용량이 높은 노드를 찾고 노드 CPU 사용량이 안정적인 경우 검사.
노드를 선택합니다. 메트릭을 CPU 사용량(밀리코어)으로 설정한 다음 샘플을 최대로 설정합니다. Max의 정렬 기능을 사용하여 노드를 Max%로 정렬합니다. CPU 사용량이 가장 높은 노드가 맨 위에 표시됩니다.
다음 스크린샷에서 노드는 최대 CPU의 12%만 사용하고 16일 동안 실행되었습니다.
CPU 사용량이 많은 노드를 찾으면 노드를 선택하여 노드에서 Pod 및 해당 CPU 사용량을 찾습니다.
참고
Pod에 대한 CPU 또는 메모리 사용량의 백분율은 컨테이너에 대해 지정된 CPU 요청을 기반으로 합니다. 노드에 대한 CPU 또는 메모리 사용량의 백분율을 나타내지 않습니다. 따라서 Pod에 대한 CPU 또는 메모리 사용량의 백분율이 아닌 실제 CPU 또는 메모리 사용량을 확인합니다.
CPU 사용량이 많은 Pod 목록을 받으면 CPU 사용량이 급증하는 애플리케이션에 매핑할 수 있습니다.
2단계: 높은 CPU 사용량을 방지하기 위한 모범 사례 검토
높은 CPU 사용량을 방지하기 위한 모범 사례를 구현하는 방법을 알아보려면 다음 표를 검토하세요.
모범 사례 | 설명 |
---|---|
컨테이너에 대한 적절한 제한 설정 | Kubernetes를 사용하면 컨테이너에 대한 리소스에 대한 요청 및 제한을 지정할 수 있습니다. 리소스 요청 및 제한은 컨테이너에서 사용할 수 있는 최소 및 최대 리소스 수를 나타냅니다. 각 Pod에 적절한 QoS(Kubernetes Quality of Service) 클래스를 선택하려면 적절한 요청 및 제한을 설정하는 것이 좋습니다. |
HPA(Horizontal Pod Autoscaler) 사용 | HPA를 사용하도록 설정하는 방법과 함께 적절한 제한을 설정하면 높은 CPU 사용량을 해결하는 데 도움이 될 수 있습니다. |
상위 SKU VM 선택 | 높은 CPU 워크로드를 처리하려면 더 높은 SKU VM을 사용합니다. 이렇게 하려면 새 노드 풀을 만들고 노드를 코드 해제하여 예약할 수 없도록 하고 기존 노드 풀을 드레이닝합니다. |
시스템 및 사용자 워크로드 격리 | 워크로드를 실행하는 별도의 노드 풀(에이전트 풀 이외의)을 만드는 것이 좋습니다. 이렇게 하면 시스템 노드 풀이 오버로드되는 것을 방지하고 더 나은 성능을 제공할 수 있습니다. |
참조
- 컨테이너 인사이트 개요
- Container Insights를 사용하여 Kubernetes 클러스터 성능 모니터링
- Container Insights 에이전트를 관리하는 방법
- 리소스 제한 사항
- 리소스 할당량
- 범위 제한
- 서비스 품질
도움을 요청하십시오.
질문이 있거나 도움이 필요한 경우 지원 요청을 생성하거나Azure 커뮤니티 지원에 문의하세요. Azure 피드백 커뮤니티에 제품 피드백을 제출할 수도 있습니다.