11.3. 최적의 노드 리소스 사용량을 나타내는 메트릭 확인
노드 지표 대시보드는 심각,아웃 리더,평균 기간 및 작업 수의 네 가지 범주로 구성됩니다. Critical 범주의 메트릭은 최적의 노드 리소스 사용량을 표시하는 데 도움이 됩니다. 이러한 메트릭에는 다음이 포함됩니다.
- 마지막 날에 OOM이 가장 많은 상위 3개 컨테이너가 종료됩니다.
- 지난 1시간 동안 이미지 풀의 실패 비율
- 시스템 예약된 메모리 사용률이 있는 노드 > 80%
- Kubelet 시스템 예약 메모리 사용률이 있는 노드 > 50%
- CRI-O 시스템 예약 메모리 사용률이 있는 노드 > 50%
- 시스템 CPU 사용률이 있는 노드 > 80%
- Kubelet 시스템 예약된 CPU 사용률이 있는 노드 > 50%
- CRI-O 시스템 예약 CPU 사용률이 있는 노드 > 50%
11.3.1. 마지막 날에 OOM이 가장 많은 상위 3개 컨테이너가 종료됩니다.
마지막 날 쿼리에서 가장 많은 OOM이 종료되는 상위 3 개의 컨테이너는 이전 날짜에 가장 많은 OOM(Out-Of-Memory) 종료를 경험한 상위 3개의 컨테이너에 대한 세부 정보를 가져옵니다.
기본 쿼리의 예
topk(3, sum(increase(container_runtime_crio_containers_oom_count_total[1d])) by (name))
OOM은 메모리 부족으로 인해 시스템에서 일부 프로세스를 강제 종료합니다. OOM 종료는 노드 기능과 전체 Kubernetes 에코시스템의 기능을 방해할 수 있습니다. OOM이 자주 종료되는 컨테이너는 예상보다 많은 메모리를 소비하여 시스템 불안정성을 초래할 수 있습니다.
이 메트릭을 사용하여 OOM이 종료되는 컨테이너를 식별하고 이러한 컨테이너가 과도한 양의 메모리를 소비하는 이유를 조사합니다. 필요한 경우 리소스 할당을 조정하고 메모리 사용량에 따라 컨테이너 크기 조정을 고려하십시오. 또한 Outliers,평균 기간 및 작업 범주 수에서 메트릭을 검토하여 노드의 상태 및 안정성에 대한 추가 정보를 얻을 수 있습니다.
11.3.2. 지난 1시간 동안 이미지 풀의 실패 비율
마지막 시간 쿼리의 이미지 가져오기 실패율 은 실패한 이미지 풀의 총 수를 성공 및 실패한 이미지 풀 합계로 분할하여 실패 비율을 제공합니다.
기본 쿼리의 예
rate(container_runtime_crio_image_pulls_failure_total[1h]) / (rate(container_runtime_crio_image_pulls_success_total[1h]) + rate(container_runtime_crio_image_pulls_failure_total[1h]))
이미지 풀의 실패 속도를 이해하는 것은 노드의 상태를 유지하는 데 중요합니다. 실패율이 높으면 pod 밀도 및 새 컨테이너 배포를 방해할 수 있는 네트워킹 문제, 스토리지 문제, 잘못된 구성 또는 기타 문제가 발생할 수 있습니다.
이 쿼리의 결과가 높으면 네트워크 연결, 원격 리포지토리의 가용성, 노드 스토리지 및 이미지 참조의 정확성과 같은 원인이 발생할 수 있습니다. Outliers,평균 기간 및 작업 범주 수에서 메트릭을 검토하여 추가 정보를 얻을 수도 있습니다.
11.3.3. 시스템 예약된 메모리 사용률이 있는 노드 > 80%
시스템 예약된 메모리 사용률이 있는 노드 > 80% 쿼리는 각 노드에 사용되는 시스템 예약 메모리의 백분율을 계산합니다. 계산은 할당 가능한 메모리에서 제거된 노드의 총 메모리 용량으로 SDS(total resident set size)를 나눕니다. RSS는 메인 메모리(RAM)에 보관되는 프로세스에 의해 차지되는 시스템의 메모리의 일부입니다. 결과 값이 80% 임계값을 초과하면 노드에 플래그가 지정됩니다.
기본 쿼리의 예
sum by (node) (container_memory_rss{id="/system.slice"}) / sum by (node) (kube_node_status_capacity{resource="memory"} - kube_node_status_allocatable{resource="memory"}) * 100 >= 80
시스템 예약된 메모리는 시스템 데몬 및 Kubernetes 시스템 데몬을 실행하는 데 사용되므로 Kubernetes 노드에 중요합니다. 80%를 초과하는 시스템 예약된 메모리 사용률은 시스템 및 Kubernetes 데몬이 너무 많은 메모리를 사용하고 있으며 실행 중인 Pod의 성능에 영향을 미칠 수 있는 노드 불안정성을 나타낼 수 있음을 나타냅니다. 과도한 메모리 사용으로 인해 중요한 시스템 프로세스를 종료할 수 있는 OOM(Out-of-Memory) 종료가 발생할 수 있습니다.
이 메트릭에 의해 노드에 플래그를 지정하는 경우 과도한 메모리를 사용하는 시스템 또는 Kubernetes 프로세스를 식별하고 상황을 완화하기 위해 적절한 조치를 취합니다. 이러한 작업에는 중요하지 않은 프로세스 확장, 메모리 사용을 줄이기 위해 프로그램 구성을 최적화하거나 메모리 용량이 큰 하드웨어로 노드 시스템을 업그레이드하는 작업이 포함될 수 있습니다. 또한 Outliers,평균 기간 및 작업 범주 수에서 메트릭을 검토하여 노드 성능에 대한 추가 정보를 얻을 수 있습니다.
11.3.4. Kubelet 시스템 예약 메모리 사용률이 있는 노드 > 50%
Kubelet 시스템 예약된 메모리 사용률 > 50% 쿼리가 있는 노드는 Kubelet의 시스템 예약된 메모리 사용률이 50%를 초과하는 노드를 나타냅니다. 쿼리는 Kubelet 프로세스 자체에서 노드에서 사용하는 메모리를 검사합니다.
기본 쿼리의 예
sum by (node) (container_memory_rss{id="/system.slice/kubelet.service"}) / sum by (node) (kube_node_status_capacity{resource="memory"} - kube_node_status_allocatable{resource="memory"}) * 100 >= 50
이 쿼리를 사용하면 노드 작업의 안정성과 효율성에 영향을 줄 수 있는 노드에서 가능한 메모리 부족 상황을 식별할 수 있습니다. 시스템 예약 메모리의 50%를 일관되게 초과하는 kubelet 메모리 사용률은 시스템 예약된 설정이 제대로 구성되지 않았으며 노드가 불안정해질 위험이 높습니다.
이 메트릭이 강조 표시되면 구성 정책을 검토하고 Kubelet에 대한 시스템 예약된 설정 또는 리소스 제한 설정을 조정하는 것이 좋습니다. 또한 Kubelet 메모리 사용률이 총 예약된 시스템 메모리의 절반을 일관되게 초과하는 경우 Outliers,평균 기간 및 작업 수에 따라 메트릭을 검사하여 보다 정확한 진단을 위해 더 많은 정보를 얻을 수 있습니다.
11.3.5. CRI-O 시스템 예약 메모리 사용률이 있는 노드 > 50%
CRI-O 시스템 예약된 메모리 사용률 > 50% 쿼리가 있는 노드는 CRI-O 시스템에 예약된 사용된 메모리의 백분율이 50%보다 크거나 같은 모든 노드를 계산합니다. 이 경우 메모리 사용량은 상주 세트 크기(RSS)에 의해 정의되며, RAM에 보관된 CRI-O 메모리의 일부입니다.
기본 쿼리의 예
sum by (node) (container_memory_rss{id="/system.slice/crio.service"}) / sum by (node) (kube_node_status_capacity{resource="memory"} - kube_node_status_allocatable{resource="memory"}) * 100 >= 50
이 쿼리를 사용하면 각 노드에서 CRI-O 시스템에 예약된 메모리의 상태를 모니터링할 수 있습니다. 사용률이 높으면 사용 가능한 리소스와 잠재적인 성능 문제가 발생할 수 있습니다. CRI-O 시스템에 예약된 메모리가 권장 제한 50%를 초과하면 노드에서 CRI-O에서 시스템 예약 메모리의 절반이 사용 중임을 나타냅니다.
메모리 할당 및 사용량을 확인하고 가능한 노드 불안정성을 방지하기 위해 메모리 리소스를 이동 또는 늘려야 하는지 여부를 평가합니다. Outliers,평균 기간 및 작업 범주 수에서 메트릭을 검사하여 추가 정보를 얻을 수도 있습니다.
11.3.6. 시스템 예약 CPU 사용률이 있는 노드 > 80%
시스템 예약 CPU 사용률 > 80% 쿼리가 있는 노드는 system-reserved CPU 사용률이 80%를 초과하는 노드를 식별합니다. 쿼리는 지난 5분 동안 CPU 사용량 속도를 계산하고 노드에서 사용 가능한 CPU 리소스와 비교하는 system-reserved 용량에 중점을 둡니다. 비율이 80%를 초과하면 노드의 결과가 메트릭에 표시됩니다.
기본 쿼리의 예
sum by (node) (rate(container_cpu_usage_seconds_total{id="/system.slice"}[5m]) * 100) / sum by (node) (kube_node_status_capacity{resource="cpu"} - kube_node_status_allocatable{resource="cpu"}) >= 80
이 쿼리는 system-reserved CPU 사용량의 중요 수준을 나타내며 이로 인해 리소스가 소모될 수 있습니다. system-reserved CPU 사용량이 높은 경우 노드의 리소스를 적절하게 관리하기 위해 시스템 프로세스( Kubelet 및 CRI-O 포함)가 부족해질 수 있습니다. 이 쿼리는 과도한 시스템 프로세스 또는 잘못 구성된 CPU 할당을 나타낼 수 있습니다.
잠재적인 수정 조치에는 워크로드를 다른 노드에 재조정하거나 노드에 할당된 CPU 리소스를 늘리는 작업이 포함됩니다. 시스템 CPU 사용률이 높은 원인을 조사하고 노드 동작에 대한 추가 인사이트를 위해 Outliers, 평균 기간 및 작업 수의 해당 메트릭을 검토합니다.
11.3.7. Kubelet 시스템 예약된 CPU 사용률이 있는 노드 > 50%
Kubelet 시스템 예약된 CPU 사용률 > 50% 쿼리가 있는 노드 는 Kubelet 시스템이 예약된 시스템에서 현재 사용 중인 CPU의 백분율을 계산합니다.
기본 쿼리의 예
sum by (node) (rate(container_cpu_usage_seconds_total{id="/system.slice/kubelet.service"}[5m]) * 100) / sum by (node) (kube_node_status_capacity{resource="cpu"} - kube_node_status_allocatable{resource="cpu"}) >= 50
Kubelet은 자체 작업을 위해 시스템 예약된 CPU를 사용하고 중요한 시스템 서비스를 실행합니다. 노드 상태의 경우 시스템 CPU 사용량이 50% 임계값을 초과하지 않도록 하는 것이 중요합니다. 이 제한을 초과하면 Kubelet의 사용량이 길기 때문에 노드 안정성에 영향을 미치고 전체 Kubernetes 클러스터의 성능이 저하될 수 있습니다.
이 메트릭에 노드가 표시되면 Kubelet 및 시스템 전체 부하가 많은 것입니다. 클러스터의 다른 노드에 부하를 분산하여 특정 노드의 과부하를 줄일 수 있습니다. 추가 통찰력을 얻고 필요한 수정 조치를 취하려면 Outliers (Outliers ), 평균 기간 및 작업 카테고리 수에서 다른 쿼리 메트릭을 확인하십시오.
11.3.8. CRI-O 시스템 예약 CPU 사용률이 있는 노드 > 50%
CRI-O 시스템 예약된 CPU 사용률 > 50% 쿼리가 있는 노드는 마지막 5분 동안 CRI-O 시스템 예약 CPU 사용률이 50%를 초과하는 노드를 식별합니다. 쿼리는 노드별로 CRI-O, 컨테이너 런타임을 통해 CPU 리소스 사용을 모니터링합니다.
기본 쿼리의 예
sum by (node) (rate(container_cpu_usage_seconds_total{id="/system.slice/crio.service"}[5m]) * 100) / sum by (node) (kube_node_status_capacity{resource="cpu"} - kube_node_status_allocatable{resource="cpu"}) >= 50
이 쿼리를 사용하면 Pod 성능에 부정적인 영향을 미칠 수 있는 비정상적인 시작 시간을 신속하게 식별할 수 있습니다. 이 쿼리에서 높은 값을 반환하는 경우 Pod 시작 시간이 일반적인 것보다 느립니다. 이는 kubelet, Pod 구성 또는 리소스에 대한 잠재적인 문제를 나타냅니다.
Pod 구성 및 할당된 리소스를 확인하여 추가로 조사합니다. 시스템 기능에 맞는지 확인하십시오. 여전히 높은 시작 시간이 표시되면 대시보드의 다른 카테고리에서 메트릭 패널을 탐색하여 시스템 구성 요소의 상태를 확인합니다.