Cluster Monitoring

Prev Next

Cluster Monitoring은 Kubernetes 클러스터내 리소스들에 대한 사용량을 수집하여 Cloud Insight 상품으로 전달합니다. 수집된 데이터는 네이버 클라우드 플랫폼 콘솔의 Ncloud Kubernetes Service 내 Grafana 대시 보드 혹은 Cloud Insight 대시 보드에서 확인할 수 있습니다. 이를 통해 별도의 리소스 모니터링 도구 없이도 사용량을 확인할 수 있습니다.

참고
  • Cluster Monitoring은 Kubernetes 1.23 버전 이상부터 제공합니다.
  • 1.23 이전 버전의 클러스터는 업그레이드 기능을 이용하여 요구되는 버전을 충족 후 사용할 수 있습니다.
  • Sub Account가 Cluster Monitoring을 사용하려면 액션 View/getClusterDetail에 대해 리소스 유형 Cluster/* 권한이 필요합니다.

지원되는 버전

Feature\Kubernetes Version 1.22 1.23+
Kubernetes Cluster Monitoring 미지원 지원

이용 요금

Cloud Insight에서 발생하는 이용 요금을 따릅니다.
Cloud Insight의 이용 요금에 대한 자세한 기준은 네이버 클라우드 플랫폼 포털의 서비스 > Cloud Insight 를 참고해 주십시오.

데이터 보관 기간

Cloud Insight의 데이터 보관 기간을 따릅니다. 데이터 보관 기간에 대한 자세한 내용은 Cloud Insight 사용준비데이터 보관 기간 을 참조해 주십시오.

집계주기 (Interval) 데이터 보관기간 (오늘로부터) 권장 데이터 조회 기간
Min1 8일 이내 1일
Min5 1개월 이내 1주일
Min30 3개월 이내 1개월
Hour2 6개월 이내 1개월
Day1 1년 이내 1개월

수집 대상

참고

kube-system namespace 내 pod들에 대한 모니터링은 지원하지 않습니다.

Kubernetes Cluster Monitoring는 아래 정의된 type에 해당하는 리소스들을 수집합니다.

타입 설명
CpuMem pod의 CPU/MEM 리소스 사용량
Network pod의 Network In/Out rate
Disk pod의 Blockstorage 리소스 사용량
NodeAvailability 클러스터내 노드 가용량
PodStatus pod의 상태

Type: CpuMem

Dimensions

Dimensions Description
type CpuMem으로 정의
clusterUUID cluster UUID
nodeInstanceNo pod가 위치한 node의 instanceNo
namespace pod가 위치한 namespace
controller pod를 생성한 controller
pod pod 이름

Metrics

Metrics Description
real_cpu pod cpu 사용량
real_mem pod mem 사용량

Type: Network

Dimensions

Dimenions Description
type Network로 정의
clusterUUID cluster UUID
nodeInstanceNo pod가 위치한 node의 instance id
namespace pod가 위치한 namespace
controller pod를 생성한 controller
pod pod 이름
interface 네트워크 In/Out 이 발생한 interface

Metrics

Metrics Description
network_rx_bytes 수신한 바이트 수
network_tx_bytes 송신한 바이트 수

Type: Disk

Dimensions

Dimensions Description
type Disk로 정의
clusterUUID cluster UUID
nodeInstanceNo pod가 위치한 node의 instanceNo
namespace pod가 위치한 namespace
controller pod를 생성한 controller
pod pod 이름
pvc pvc 이름

Metrics

Metrics Description
available_bytes 가용한 디스크 바이트 수
capacity_bytes 총 디스크 바이트 수
used_bytes 사용한 디스크 바이트 수
disk_used_ratio 가용한 디스크 비율, 0~1사이의 값

Type: NodeAvailability

Dimensions

Dimensions Description
type NodeAvailability로 정의
clusterUUID cluster UUID

Metrics

Metrics Description
node_total_count 클러스터 내 노드의 총 개수
node_ready_count 클러스터 내 ready인 노드의 수
node_not_ready_count 클러스터 내 not ready인 노드의 수
node_available_ratio node_ready_count / node_total_count, 0~1사이의 값

Type: PodStatus

Dimensions

Dimensions Description
type PodStatus로 정의
clusterUUID cluster UUID
namespace pod가 위치한 namespace
controller pod를 생성한 controller

Metrics

Metrics Description
pod_phase_pending controller에 속한 pod들 중 phase가 pending인 개수
pod_phase_running controller에 속한 pod들 중 phase가 running인 개수
pod_phase_succeeded controller에 속한 pod들 중 phase가 succeeded인 개수
pod_phase_failed controller에 속한 pod들 중 phase가 failed인 개수
pod_available_ratio controller에 속한 pod들 중 이용 가능한 Pod의 비율, 0~1사이의 값, ReplicaSet, DaemonSet, StatefulSet 지원
pod_restart_count controller에 속한 pod들의 restart count 수의 총합

Grafana

Grafana는 시계열 데이터에 대한 시각화를 제공해주는 도구입니다. Cloud Insight로 전송된 데이터를 Grafana 대시보드에서 확인할 수 있습니다.
네이버 클라우드 플랫폼 콘솔의 Ncloud Kubernetes Service 서비스 내 클러스터 하위 목록의 Monitoring 항목에서 Grafana 링크를 확인할 수 있습니다.

참고

Grafana 대시보드 이용에 대한 요금은 발생하지 않습니다.

Overview

보유하고 있는 클러스터의 목록을 확인할 수 있습니다. 다음의 버튼으로 클러스터 내 리소스를 모니터링할 수 있습니다.

  • Nodes: 클러스터 내 워커노드들에 대한 Availability와 CPU/Memory/Disk/Network 리소스 사용량을 조회할 수 있습니다.
  • Pods: 클러스터 내 Pod들에 대한 CPU/Memory/Disk/Network 리소스 사용량을 조회할 수 있습니다.

Alerts

클러스터 내 리소스들에 대한 임계치를 설정하고, 조건이 충족하였을 때 알람을 수신 할 수 있도록 Event Rule을 설정할 수 있습니다. 설정한 값은 Cloud Insight 서비스에 저장되며, Cloud Insight 서비스의 Event Rule에서도 확인할 수 있습니다.
Alerts 탭에서 다음 내용을 확인할 수 있습니다.

  • Cloud Insight Event Rule Group
    • 선택된 Cluster에 대한 Event Rule Group을 생성/삭제/조회할 수 있습니다.
    • Event Rule Group 하위에 Metric에 대한 임계치 조건들을 설정할 수 있습니다.
    • 아래의 Product Type을 지원합니다.
      • Ncloud kubernetes service

생성된 Cloud Insight Event Rule Group을 클릭하면 다음의 세부 그룹들을 확인할 수 있습니다.

  • Monitor Group
    • 모니터링 하기 위한 지표들이 생성되는 리소스 그룹입니다.
  • Metric Group
    • Monitor Group에서 생성된 지표들에 대해 알람 발생을 위한 조건들을 설정한 값들 입니다.
    • New Metric 버튼을 클릭하여, 조건을 등록할 수 있습니다.
  • Notification Group
    • Metric Group에서 설정한 알람이 발생한 경우, 이를 통보할 대상자 그룹입니다.
    • New Recipient 버튼을 클릭하여, 통보 대상자를 등록할 수 있습니다.
참고

Notification Group 내 통보 대상자는 네이버 클라우드 플랫폼 콘솔 내 Notification Recipient 서비스에서 관리할 수 있습니다. Ncloud Kubernetes Service의 Alerts 메뉴에서는 지원하지 않습니다.

Metric Group 내 등록할 수 있는 지표들로 다음 사항을 고려할 수 있습니다.

지표 예시

  • Deployment와 같은 Controller가 특정 개수의 Pod를 스케쥴링을 요청하였으나, admission controller 등의 영향으로 수행되지 않아 기대 비율 이하의 Pod 수가 구동되는 경우
    • pod_available_ratio < 0.7 로 설정하여, desired pod 개수 대비 available pod 개수의 비율이 70%미만이면 알람이 발생하도록 설정
  • Deployment와 같은 Controller가 생성 요청한 Pod들 중 Running 상태가 아닌 것의 개수가 증가하는 경우
    • pod_available_ratio < 0.7 로 설정하여, desired pod 개수 대비 available pod 개수의 비율이 70%미만이면 알람이 발생하도록 설정
    • pod_phase_pending >=1 로 설정하여, phase가 Pending인 pod가 하나 이상 있는 경우 알람을 발생하도록 설정
  • 노드의 상태가 Ready가 아닌 경우
    • node_available_ratio < 0.8 로 설정하여, 전체 노드 중 Ready인 노드의 비율이 80% 미만이면 알람을 발생하도록 설정
    • node_not_ready_count >=1 로 설정하여, 전체 노드 중 Ready가 아닌 노드가 있다면 알람을 발생하도록 설정
  • Crash 상태의 Pod수가 증가하는 경우
    • pod_restart_count >= 10 으로 설정하여, pod가 특정 횟수 이상 kubelet 등에 의해 재시작 되었다면 알람을 발생하도록 설정
  • Cronjob 등의 작업이 실패하여 Pod의 Phase가 Failed인 것이 발생한 경우
    • pod_phase_failed >=1 으로 설정하여, Job 등이 실패한 경우 알람을 발생하도록 설정