Kubernetes 상태 측정항목 수집 및 보기


이 페이지에서는 Google Cloud Managed Service for Prometheus를 사용하여 포드, 배포 등을 위해 선별된 Kubernetes 상태 측정항목을 전송하도록 Google Kubernetes Engine(GKE) 클러스터를 구성하는 방법을 설명합니다. 이 페이지에서는 이러한 측정항목을 Monitoring에 기록할 때 형식을 지정하는 방법과 측정항목을 쿼리하는 방법도 설명합니다.

시작하기 전에

시작하기 전에 다음 태스크를 수행했는지 확인합니다.

  • Google Kubernetes Engine API를 사용 설정합니다.
  • Google Kubernetes Engine API 사용 설정
  • 이 태스크에 Google Cloud CLI를 사용하려면 gcloud CLI를 설치한 후 initialize합니다. 이전에 gcloud CLI를 설치한 경우 gcloud components update를 실행하여 최신 버전을 가져옵니다.

요구사항

Kubernetes 상태 측정항목을 수집하려면 GKE 클러스터가 다음 요구사항을 충족해야 합니다.

  • GKE 1.27.2-gke.1200 이상의 클러스터가 실행 중이어야 합니다. 버전 1.29.2-gke.2000으로 시작하는 GKE Standard 클러스터와 버전 1.27.4-gke.900으로 시작하는 GKE Autopilot 클러스터의 경우 Kubernetes 상태 측정항목 패키지가 기본적으로 사용 설정됩니다.
  • 클러스터에 시스템 측정항목이 사용 설정되어 있어야 합니다.
  • 클러스터에 Google Cloud Managed Service for Prometheus 관리형 수집이 사용 설정되어 있어야 합니다. Google Cloud Managed Service for Prometheus 관리형 수집은 새 클러스터에서 기본적으로 사용 설정됩니다.

Kubernetes 상태 측정항목 수집 구성

Google Cloud 콘솔, gcloud CLI 또는 Terraform을 사용하여 Kubernetes 상태 측정항목을 사용 설정할 수 있습니다.

Console

클러스터 또는 클러스터 내의 배포에 대한 관측 가능성 탭에서 Kubernetes 상태 측정항목을 사용 설정할 수 있습니다. 또한 측정항목 패키지를 사용 설정하기 전에 사용 가능한 차트와 측정항목을 미리 볼 수도 있습니다.

클러스터의 관측 가능성 탭에서 다음 두 가지 항목으로 Kubernetes 상태 측정항목의 차트 집합을 필터링할 수 있습니다.

  • 워크로드 상태: 포드, 배포, StatefulSets, DaemonSets, HorizontalPodAutoscaler 리소스의 측정항목을 포함합니다.
  • 스토리지 > 영구: 영구 볼륨 및 영구 볼륨 클레임의 측정항목이 포함됩니다.

측정항목 집합 중 하나 또는 둘 모두를 사용 설정할 수 있습니다.

클러스터의 관측 가능성 탭에서 Kubernetes 상태 측정항목을 사용 설정하려면 다음을 수행합니다.

  1. Google Cloud 콘솔에서 Kubernetes 클러스터 페이지로 이동합니다.

    Kubernetes 클러스터로 이동

    검색창을 사용하여 이 페이지를 찾은 경우 부제목이 Kubernetes Engine인 결과를 선택합니다.

  2. 클러스터 이름을 클릭한 후 관측 가능성 탭을 선택합니다.

  3. 특성 목록에서 워크로드 상태 또는 스토리지 > 영구를 선택합니다.

  4. 패키지 사용 설정을 클릭합니다.

    Kube 상태 측정항목 패키지가 이미 사용 설정된 경우 Kubernetes 상태 측정항목의 차트 집합이 대신 표시됩니다.

배포의 관측 가능성 탭에서 Kubernetes 상태 측정항목을 사용 설정하려면 다음을 수행합니다.

  1. Google Cloud 콘솔에서 워크로드 페이지로 이동합니다.

    워크로드로 이동

    검색창을 사용하여 이 페이지를 찾은 경우 부제목이 Kubernetes Engine인 결과를 선택합니다.

  2. 배포 이름을 클릭한 후 관측 가능성 탭을 선택합니다.

  3. 특성 목록에서 Kubernetes 상태를 선택합니다.

  4. 패키지 사용 설정을 클릭합니다. 이 패키지가 전체 클러스터에 사용 설정됩니다.

    Kubernetes 상태 측정항목 패키지가 이미 사용 설정된 경우 포드, 배포, 수평형 포드 자동 확장 처리의 측정항목에 대한 차트 집합이 표시됩니다.

클러스터의 세부정보 탭에서 Kubernetes 상태 측정항목을 구성하려면 다음을 수행합니다.

  1. Google Cloud 콘솔에서 Kubernetes 클러스터 페이지로 이동합니다.

    Kubernetes 클러스터로 이동

    검색창을 사용하여 이 페이지를 찾은 경우 부제목이 Kubernetes Engine인 결과를 선택합니다.

  2. 클러스터 이름을 클릭합니다.

  3. Cloud Monitoring이라는 라벨이 지정된 특성 행에서 수정 아이콘을 클릭합니다.

  4. Cloud Monitoring 수정 대화상자가 나타나면 Cloud Monitoring 사용 설정이 선택되어 있는지 확인합니다.

  5. 구성요소 드롭다운 메뉴에서 측정항목을 수집할 Kubernetes 상태 구성요소를 선택합니다.

  6. OK(확인)를 클릭합니다.

  7. 변경사항 저장을 클릭합니다.

gcloud

측정항목을 수집하려면 클러스터를 업데이트합니다.

gcloud container clusters update CLUSTER_NAME \
    --location=COMPUTE_LOCATION \
    --enable-managed-prometheus \
    --monitoring=METRICS_LIST

다음을 바꿉니다.

  • CLUSTER_NAME: 기존 클러스터의 이름입니다.
  • COMPUTE_LOCATION: 클러스터의 Compute Engine 위치입니다.
  • METRICS_LIST: 측정항목을 쉼표로 구분한 목록으로, 다음 중 하나가 포함될 수 있습니다.
    • DAEMONSET
    • DEPLOYMENT
    • HPA
    • POD
    • STATEFULSET
    • STORAGE: 영구 볼륨 및 영구 볼륨 클레임의 측정항목입니다.

monitoring 플래그에 제공된 값 집합은 이전 설정을 재정의합니다.

Terraform

Terraform을 사용하여 kube 상태 측정항목 수집을 구성하려면 google_container_cluster용 Terraform 레지스트리에서 monitoring_config 블록을 참조하세요. Terraform과 함께 Google Cloud를 사용하는 방법에 대한 일반적인 내용은 Google Cloud에서 Terraform을 참조하세요.

할당량

Kubernetes 상태 측정항목은 Cloud Monitoring API의 분당 시계열 수집 요청 할당량을 사용합니다. Kubernetes 상태 측정항목을 사용 설정하기 전에 해당 할당량의 최근 최고 사용량을 확인하세요. 동일한 프로젝트에 클러스터가 많거나 이미 할당량 한도에 도달한 경우 관측 가능성 패키지를 사용 설정하기 전에 할당량 한도 상향 조정을 요청할 수 있습니다.

가격 책정

Kubernetes 상태 측정항목은 Google Cloud Managed Service for Prometheus를 사용하여 메트릭을 Cloud Monitoring에 로드합니다. Cloud Monitoring은 수집된 샘플의 수를 기준으로 이러한 측정항목의 수집에 대한 요금을 청구합니다. 하지만 이러한 측정항목은 GKE Enterprise 버전이 사용 설정된 프로젝트에 속한 등록된 클러스터에 대해 무료로 제공됩니다.

자세한 내용은 Cloud Monitoring 가격 책정을 참조하세요.

측정항목 형식

Cloud Monitoring에 기록되는 모든 Kubernetes 상태 측정항목은 리소스 유형 prometheus_target을 사용합니다. 각 측정항목 이름에는 prometheus.googleapis.com/ 프리픽스가 있고 /gauge, /histogram, /counter와 같은 Prometheus 측정항목 유형을 나타내는 서픽스가 있습니다. 그렇지 않으면 각 측정항목 이름은 오픈소스 Kubernetes에 의해 노출된 측정항목 이름과 동일합니다.

Cloud Monitoring에서 내보내기

Kubernetes 상태 측정항목은 Cloud Monitoring에서 Cloud Monitoring API를 사용하여 내보낼 수 있습니다. 모든 Kubernetes 상태 측정항목은 Google Cloud Managed Service for Prometheus를 사용하여 수집되므로 Kubernetes 상태 측정항목은 Prometheus 쿼리 언어(PromQL)를 사용하여 쿼리할 수 있습니다. 모니터링 쿼리 언어(MQL)를 사용하여 쿼리할 수도 있습니다.

측정항목 쿼리

Kubernetes 상태 측정항목을 쿼리할 때 사용하는 이름은 PromQL을 사용하는지 또는 MQL과 같은 Cloud Monitoring 기반 기능을 사용하는지 또는 측정항목 탐색기 메뉴 기반 인터페이스를 사용하는지에 따라 다릅니다.

다음 Kubernetes 상태 측정항목 테이블은 각 측정항목 이름의 두 가지 버전을 보여줍니다.

  • PromQL 측정항목 이름: Google Cloud 콘솔의 Cloud Monitoring 페이지 또는 Cloud Monitoring API의 PromQL 필드에서 PromQL을 사용하는 경우 PromQL 측정항목 이름을 사용합니다.
  • Cloud Monitoring 측정항목 이름: 다른 Cloud Monitoring 기능을 사용하는 경우 아래 테이블에서 Cloud Monitoring 측정항목 이름을 사용합니다. 이 이름에는 테이블의 항목에서 생략된 prometheus.googleapis.com/ 프리픽스를 붙여야 합니다.

스토리지 측정항목

이 테이블의 Cloud Monitoring 측정항목 이름에는 prometheus.googleapis.com/ 프리픽스를 붙여야 합니다. 테이블의 항목에서는 이 프리픽스가 생략되었습니다.

PromQL 측정항목 이름
Cloud Monitoring 측정항목 이름
종류, 유형, 단위
모니터링 리소스
필수 GKE 버전
설명
라벨
kube_persistentvolume_capacity_bytes
kube_persistentvolume_capacity_bytes/gauge
GAUGEDOUBLEBy
prometheus_target
1.27.2-gke.1200
Persistentvolume 용량(바이트)입니다. 30초마다 샘플링됩니다.

persistentvolume: persistentvolume
kube_persistentvolume_claim_ref
kube_persistentvolume_claim_ref/gauge
GAUGEDOUBLE1
prometheus_target
1.27.2-gke.1200
영구 볼륨 신청 참조에 대한 정보입니다. 30초마다 샘플링됩니다.

claim_name: claim_name
name: name
persistentvolume: persistentvolume
kube_persistentvolume_info
kube_persistentvolume_info/gauge
GAUGEDOUBLE1
prometheus_target
1.27.2-gke.1200
persistentvolume에 대한 정보입니다. 30초마다 샘플링됩니다.

csi_driver: csi_driver
csi_volume_handle: csi_volume_handle
local_fs: local_fs
local_path: local_path
persistentvolume: persistentvolume
storageclass: storageclass
kube_persistentvolume_status_phase
kube_persistentvolume_status_phase/gauge
GAUGEDOUBLE1
prometheus_target
1.27.2-gke.1200
단계는 볼륨이 사용 가능하거나, 클레임에 바인딩되거나, 클레임에 의해 해제되는지를 나타냅니다. 30초마다 샘플링됩니다.

persistentvolume: persistentvolume
phase: 단계
kube_persistentvolumeclaim_info
kube_persistentvolumeclaim_info/gauge
GAUGEDOUBLE1
prometheus_target
1.27.2-gke.1200
영구 볼륨 신청 관련 정보입니다. 30초마다 샘플링됩니다.

persistentvolumeclaim: persistentvolumeclaim
storageclass: storageclass
volumename: volumename
kube_persistentvolumeclaim_resource_requests_storage_bytes
kube_persistentvolumeclaim_resource_requests_storage_bytes/gauge
GAUGEDOUBLEBy
prometheus_target
1.27.2-gke.1200
영구 볼륨 신청에서 요청한 스토리지 용량입니다. 30초마다 샘플링됩니다.

persistentvolumeclaim: persistentvolumeclaim
kube_persistentvolumeclaim_status_phase
kube_persistentvolumeclaim_status_phase/gauge
GAUGEDOUBLE1
prometheus_target
1.27.2-gke.1200
영구 볼륨 신청이 현재 있는 단계입니다. 30초마다 샘플링됩니다.

persistentvolumeclaim: persistentvolumeclaim
phase: 단계

자세한 내용은 PersistentVolume 측정항목PersistentVolumeClaim 측정항목을 참조하세요.

포드 측정항목

포드는 스토리지와 네트워크 리소스를 공유하는 컨테이너 실행 방법에 대한 사양이 포함된 하나 이상의 컨테이너 그룹입니다.

포드 측정항목 표

포드 측정항목을 사용하면 포드 동작을 모니터링하고 알림을 표시할 수 있습니다. 다음 표는 Kubernetes 상태 측정항목 패키지에서 사용할 수 있는 측정항목을 보여줍니다.

이 테이블의 Cloud Monitoring 측정항목 이름에는 prometheus.googleapis.com/ 프리픽스를 붙여야 합니다. 테이블의 항목에서는 이 프리픽스가 생략되었습니다.

PromQL 측정항목 이름
Cloud Monitoring 측정항목 이름
종류, 유형, 단위
모니터링 리소스
필수 GKE 버전
설명
라벨
kube_pod_container_status_ready
kube_pod_container_status_ready/gauge
GAUGEDOUBLE1
prometheus_target
1.27.2-gke.1200
컨테이너 준비 점검이 성공했는지 여부를 설명합니다. 30초마다 샘플링됩니다.

container: 컨테이너
pod: 포드
uid: uid
kube_pod_container_status_waiting_reason
kube_pod_status_container_status_waiting_reason/gauge
GAUGEDOUBLE1
prometheus_target
1.27.2-gke.1200
컨테이너가 현재 대기 상태인 이유를 설명합니다. 30초마다 샘플링됩니다.

container: 컨테이너
pod: 포드
reason: 이유
uid: uid
kube_pod_status_phase
kube_pod_status_phase/gauge
GAUGEDOUBLE1
prometheus_target
1.27.2-gke.1200
포드의 현재 단계입니다. 30초마다 샘플링됩니다.

phase: 단계
pod: 포드
uid: uid
kube_pod_status_unschedulable
kube_pod_status_unschedulable/gauge
GAUGEDOUBLE1
prometheus_target
1.27.2-gke.1200
포드의 예약할 수 없는 상태를 설명합니다. 30초마다 샘플링됩니다.

pod: 포드
uid: uid

자세한 내용은 포드 측정항목을 참조하세요.

포드 측정항목 샘플 쿼리

예약할 수 없는 포드가 있는지 확인하려면 다음 PromQL 표현식을 사용합니다.

sum(kube_pod_status_unschedulable{cluster="CLUSTER", namespace="NAMESPACE"})

네임스페이스에서 예약할 수 없는 여러 포드에 대한 알림을 받으려면 다음 PromQL 표현식을 사용할 수 있습니다.

sum(kube_pod_status_unschedulable{cluster="CLUSTER", namespace="NAMESPACE"}) > LIMIT

kube_pod_container_status_waiting_reason 측정항목을 사용하면 다음과 같이 PromQL 표현식을 사용해서 특정 대기 상태에 묶인 컨테이너에 대해 알림을 만들 수 있습니다.

max_over_time(kube_pod_container_status_waiting_reason{reason="REASON", cluster="CLUSTER", namespace="NAMESPACE"}[5m]) >= 1

REASON 값은 컨테이너의 대기 상태를 지정합니다. 예를 들면 다음과 같습니다.

  • CrashLoopBackOff
  • ImagePullBackOff
  • ContainerCreating

대기 상태에 묶인 컨테이너에 대해 알림을 만들려면 다음 PromQL 표현식을 사용합니다.

max_over_time(kube_pod_container_status_waiting_reason{cluster="CLUSTER", namespace="NAMESPACE"}[5m]) >= 1

준비 검사에 실패하는 컨테이너 수를 확인하려면 다음 PromQL 표현식을 사용합니다.

sum(kube_pod_container_status_ready) by (pod, container) == 0

이 섹션의 쿼리 및 알림 표현식 중 일부는 GitHub Prometheus 커뮤니티 Kubernetes Helm 차트 저장소의 kubernetes-apps.yaml 파일에서 조정되었습니다.

대화형 플레이북

Kubernetes 상태 측정항목은 포드를 예약할 수 없거나 포드가 비정상으로 종료되는 문제를 해결하기 위해 GKE 대화형 플레이북에서도 사용됩니다. 이러한 장애 모드에 대한 자세한 내용은 다음 문제 해결 문서를 참조하세요.

Kubernetes 상태 측정항목 패키지를 사용 설정하지 않은 경우 포드 예약 문제를 감지하는 기본 방법은 '예약 실패' 로그 이벤트를 쿼리하는 것입니다. Kubernetes 상태 측정항목 패키지를 사용 설정한 후에는 동일한 용도로 사용되지만 집계 및 차트 작성이 더 쉬운 kube_pod_status_unschedulable 측정항목을 사용할 수 있습니다. 이 측정항목을 사용하면 예약할 수 없는 포드 수와 문제가 시작된 시점을 확인할 수 있습니다.

마찬가지로 GKE 시스템 측정항목 kubernetes.io/container/restart_count도 비정상 종료 루프 포드를 감지하는 데 도움이 됩니다. kube_pod_container_status_waiting_reason 측정항목 또한 비정상 종료 루프 포드를 열거하고 포드가 ImagePullBackOff, ContainerCreating와 같이 CrashLookBackOff가 아닌 대기 상태에서 멈춰 있는지 확인할 수도 있습니다.

대화형 플레이북을 살펴보려면 다음을 수행합니다.

  1. Google Cloud 콘솔에서  대시보드 페이지로 이동합니다.

    대시보드로 이동

    검색창을 사용하여 이 페이지를 찾은 경우 부제목이 Trace인 결과를 선택합니다.

  2. GCP 카테고리를 클릭하여 대시보드 목록을 필터링합니다.
  3. 목록에서 "GKE 대화형 플레이북" 대시보드 이름을 클릭합니다.

배포 측정항목

배포는 출시 및 서비스 종료 등의 이벤트를 관리하기 위해 포드와 같은 리소스 상태를 업데이트하는 컨트롤러입니다.

배포 측정항목 표

배포 측정항목을 사용하면 컨트롤러의 동작을 모니터링하고 알릴 수 있습니다. 다음 표는 Kubernetes 상태 측정항목 패키지에서 사용할 수 있는 측정항목을 보여줍니다.

이 테이블의 Cloud Monitoring 측정항목 이름에는 prometheus.googleapis.com/ 프리픽스를 붙여야 합니다. 테이블의 항목에서는 이 프리픽스가 생략되었습니다.

PromQL 측정항목 이름
Cloud Monitoring 측정항목 이름
종류, 유형, 단위
모니터링 리소스
필수 GKE 버전
설명
라벨
kube_deployment_spec_replicas
kube_deployment_spec_replicas/gauge
GAUGEDOUBLE1
prometheus_target
1.27.2-gke.1200
배포에 필요한 포드 수입니다. 30초마다 샘플링됩니다.

deployment: 배포
kube_deployment_status_replicas_available
kube_deployment_status_replicas_available/gauge
GAUGEDOUBLE1
prometheus_target
1.27.2-gke.1200
배포당 사용 가능한 복제본 수입니다. 30초마다 샘플링됩니다.

deployment: 배포
kube_deployment_status_replicas_updated
kube_deployment_status_replicas_updated/gauge
GAUGEDOUBLE1
prometheus_target
1.27.2-gke.1200
배포당 오래된 복제본 수입니다. 30초마다 샘플링됩니다.

deployment: 배포

자세한 내용은 배포 측정항목을 참조하세요.

배포 측정항목 샘플 쿼리

클러스터, 네임스페이스, 배포 이름에 따라 배포 측정항목을 필터링하여 개별 배포에 대해 차트 및 알림 정책을 만들 수 있습니다.

예를 들어 사용 가능한 복제본 수를 단일 배포에 있는 예상 복제본 수와 비교하려면 다음 PromQL 쿼리를 사용해서 단일 차트에 두 측정항목을 모두 구성할 수 있습니다.

kube_deployment_spec_replicas{cluster="CLUSTER", namespace="NAMESPACE", deployment=DEPLOYMENT"}
kube_deployment_status_replicas_available{cluster="CLUSTER", namespace="NAMESPACE", deployment=DEPLOYMENT"}

실패 또는 중단된 배포에 대해 알림을 표시하려면 다음 PromQL 표현식을 사용하면 됩니다.

(
  kube_deployment_spec_replicas{cluster="CLUSTER", namespace="NAMESPACE", deployment="DEPLOYMENT"}
    >
  kube_deployment_status_replicas_available{cluster="CLUSTER", namespace="NAMESPACE", deployment="DEPLOYMENT"}
) and (
  changes(kube_deployment_status_replicas_updated{cluster="CLUSTER", namespace="NAMESPACE", deployment="DEPLOYMENT"}[10m])
    ==
  0
)

이 섹션의 쿼리 및 알림 표현식 중 일부는 GitHub Prometheus 커뮤니티 Kubernetes Helm 차트 저장소의 kubernetes-apps.yaml 파일에서 조정되었습니다.

StatefulSet 측정항목

StatefulSet는 스테이트풀(Stateful) 애플리케이션의 포트 집합 배포 및 확장을 관리하는 컨트롤러입니다. 이 컨트롤러는 포드의 순서 및 고유성을 관리합니다.

StatefulSet 측정항목 표

StatefulSet 측정항목을 사용하면 컨트롤러의 동작을 모니터링하고 알릴 수 있습니다. 다음 표는 Kubernetes 상태 측정항목 패키지에서 사용할 수 있는 측정항목을 보여줍니다.

이 테이블의 Cloud Monitoring 측정항목 이름에는 prometheus.googleapis.com/ 프리픽스를 붙여야 합니다. 테이블의 항목에서는 이 프리픽스가 생략되었습니다.

PromQL 측정항목 이름
Cloud Monitoring 측정항목 이름
종류, 유형, 단위
모니터링 리소스
필수 GKE 버전
설명
라벨
kube_statefulset_replicas
kube_statefulset_replicas/gauge
GAUGEDOUBLE1
prometheus_target
1.27.2-gke.1200
StatefulSet에 필요한 포드 수입니다. 30초마다 샘플링됩니다.

statefulset: statefulset
kube_statefulset_status_replicas_ready
kube_statefulset_status_replicas_ready/gauge
GAUGEDOUBLE1
prometheus_target
1.27.2-gke.1200
StatefulSet당 준비된 복제본 수입니다. 30초마다 샘플링됩니다.

statefulset: statefulset
kube_statefulset_status_replicas_updated
kube_statefulset_status_replicas_updated/gauge
GAUGEDOUBLE1
prometheus_target
1.27.2-gke.1200
StatefulSet당 업데이트된 복제본 수입니다. 30초마다 샘플링됩니다.

statefulset: statefulset

자세한 내용은 StatefulSet 측정항목을 참조하세요.

StatefulSet 측정항목 샘플 쿼리

클러스터, 네임스페이스, StatefulSet 이름을 기준으로 statefulset 측정항목을 필터링하여 개별 StatefulSet에 대한 차트 및 알림 정책을 만들 수 있습니다.

예를 들어 사용 가능한 복제본 수를 단일 StatefulSet에 있는 예상 복제본 수와 비교하려면 다음 PromQL 쿼리를 사용해서 단일 차트에 두 측정항목을 모두 구성할 수 있습니다.

kube_statefulset_replicas{cluster="CLUSTER", namespace="NAMESPACE", statefulset="STATEFULSET"}
kube_statefulset_status_replicas_ready{cluster="CLUSTER", namespace="NAMESPACE", statefulset="STATEFULSET"}

실패 또는 중단된 StatefulSet 출시에 대해 알림을 표시하려면 다음 PromQL 표현식을 사용하면 됩니다.

(
  kube_statefulset_replicas{cluster="CLUSTER", namespace="NAMESPACE", statefulset="STATEFULSET"}
    >
  kube_statefulset_status_replicas_ready{cluster="CLUSTER", namespace="NAMESPACE", statefulset="STATEFULSET"}
) and (
  changes(kube_statefulset_status_replicas_updated{cluster="CLUSTER", namespace="NAMESPACE", statefulset="STATEFULSET"}[10m])
    ==
  0
)

이 섹션의 쿼리 및 알림 표현식 중 일부는 GitHub Prometheus 커뮤니티 Kubernetes Helm 차트 저장소의 kubernetes-apps.yaml 파일에서 조정되었습니다.

DaemonSet 측정항목

DaemonSet는 일부 노드 집합이 포드 사본을 실행하도록 보장하는 컨트롤러입니다. 예를 들어 노드가 클러스터에 추가될 때 DaemonSet는 노드에 포드를 추가합니다. 이 컨트롤러는 특정 프로세스가 모든 노드에서 실행되도록 보장하는 데 유용합니다.

DaemonSet 측정항목 표

DaemonSet 측정항목을 사용하면 컨트롤러의 동작을 모니터링하고 알릴 수 있습니다. 다음 표는 Kubernetes 상태 측정항목 패키지에서 사용할 수 있는 측정항목을 보여줍니다.

이 테이블의 Cloud Monitoring 측정항목 이름에는 prometheus.googleapis.com/ 프리픽스를 붙여야 합니다. 테이블의 항목에서는 이 프리픽스가 생략되었습니다.

PromQL 측정항목 이름
Cloud Monitoring 측정항목 이름
종류, 유형, 단위
모니터링 리소스
필수 GKE 버전
설명
라벨
kube_daemonset_status_desired_number_scheduled
kube_daemonset_status_desired_number_scheduled/gauge
GAUGEDOUBLE1
prometheus_target
1.27.2-gke.1200
데몬 포드를 실행해야 하는 노드 수입니다. 30초마다 샘플링됩니다.

daemonset: daemonset
kube_daemonset_status_number_misscheduled
kube_daemonset_status_number_misscheduled/gauge
GAUGEDOUBLE1
prometheus_target
1.27.2-gke.1200
데몬 포드를 실행해서는 안 되지만 실행 중인 노드 수입니다. 30초마다 샘플링됩니다.

daemonset: daemonset
kube_daemonset_status_number_ready
kube_daemonset_status_number_ready/gauge
GAUGEDOUBLE1
prometheus_target
1.27.2-gke.1200
데몬 포드를 실행하고 하나 이상의 데몬 포드가 실행 중이거나 준비되어야 하는 노드 수입니다. 30초마다 샘플링됩니다.

daemonset: daemonset
kube_daemonset_status_updated_number_scheduled
kube_daemonset_status_updated_number_scheduled/gauge
GAUGEDOUBLE1
prometheus_target
1.27.2-gke.1200
업데이트된 데몬 포드를 실행 중인 노드 수입니다. 30초마다 샘플링됩니다.

daemonset: daemonset

자세한 내용은 DaemonSet 측정항목을 참조하세요.

DaemonSet 측정항목 샘플 쿼리

클러스터, 네임스페이스, DaemonSet 이름을 기준으로 daemonset 측정항목을 필터링하여 개별 DaemonSet의 차트와 알림 정책을 만들 수 있습니다.

예를 들어 사용 가능한 복제본 수를 단일 DaemonSet에 있는 예상 복제본 수와 비교하려면 다음 PromQL 쿼리를 사용해서 단일 차트에 두 측정항목을 모두 구성할 수 있습니다.

kube_daemonset_status_updated_number_scheduled{cluster="CLUSTER", namespace="NAMESPACE", daemonsetset=DAEMONSET"}
kube_daemonset_status_desired_number_scheduled{cluster="CLUSTER", namespace="NAMESPACE", daemonset=DAEMONSET"}

실패 또는 중단된 DaemonSet 출시를 알리려면 다음 PromQL 표현식을 사용합니다.

(
  (
    kube_daemonset_status_number_misscheduled{cluster="CLUSTER", namespace="NAMESPACE", daemonset="DAEMONSET"}
      !=
    0
  ) or (
    kube_daemonset_status_updated_number_scheduled{cluster="CLUSTER", namespace="NAMESPACE", daemonset="DAEMONSET"}
      !=
    kube_daemonset_status_desired_number_scheduled{cluster="CLUSTER", namespace="NAMESPACE", daemonset="DAEMONSET"}
  )
) and (
  changes(kube_daemonset_status_updated_number_scheduled{cluster="CLUSTER", namespace="NAMESPACE", daemonset="DAEMONSET"}[5m])
    ==
  0
)

이 섹션의 쿼리 및 알림 표현식 중 일부는 GitHub Prometheus 커뮤니티 Kubernetes Helm 차트 저장소의 kubernetes-apps.yaml 파일에서 조정되었습니다.

HorizontalPodAutoscaler 측정항목

HorizontalPodAutoscaler(수평형 포드 자동 확장 처리)는 CPU 또는 메모리 사용률과 같은 일부 측정항목에 따라 배포 또는 StatefulSet와 같은 워크로드의 포드 수를 주기적으로 변경하는 컨트롤러입니다. 워크로드에 사용할 수 있는 포드 수를 변경하면 워크로드 반응성이 유지되지만 효율적입니다.

수평형 포드 자동 확장 처리에 대한 자세한 내용은 수평형 포드 자동 확장 처리에 대한 세부정보 보기를 참조하세요.

수평형 포드 자동 확장 처리 측정항목 표

HorizontalPodAutoscaler 측정항목을 사용하면 컨트롤러의 동작을 모니터링하고 알릴 수 있습니다. 다음 표는 Kubernetes 상태 측정항목 패키지에서 사용할 수 있는 측정항목을 보여줍니다.

이 테이블의 Cloud Monitoring 측정항목 이름에는 prometheus.googleapis.com/ 프리픽스를 붙여야 합니다. 테이블의 항목에서는 이 프리픽스가 생략되었습니다.

PromQL 측정항목 이름
Cloud Monitoring 측정항목 이름
종류, 유형, 단위
모니터링 리소스
필수 GKE 버전
설명
라벨
kube_horizontalpodautoscaler_spec_max_replicas
kube_horizontalpodautoscaler_spec_max_replicas/gauge
GAUGEDOUBLE1
prometheus_target
1.27.2-gke.1200
자동 확장 처리에서 설정할 수 있는 포드 수의 상한값은 MinReplicas보다 작을 수 없습니다. 30초마다 샘플링됩니다.

horizontalpodautoscaler: horizontalpodautoscaler
kube_horizontalpodautoscaler_spec_min_replicas
kube_horizontalpodautoscaler_spec_min_replicas/gauge
GAUGEDOUBLE1
prometheus_target
1.27.2-gke.1200
자동 확장 처리에서 설정할 수 있는 포드 수의 하한값이며, 기본값은 1입니다. 30초마다 샘플링됩니다.

horizontalpodautoscaler: horizontalpodautoscaler
kube_horizontalpodautoscaler_spec_target_metric
kube_horizontalpodautoscaler_spec_target_metric/gauge
GAUGEDOUBLE1
prometheus_target
1.27.2-gke.1200
원하는 복제본 수를 계산할 때 이 자동 확장 처리에서 사용하는 측정항목 사양입니다. 30초마다 샘플링됩니다.

horizontalpodautoscaler: horizontalpodautoscaler
metric_name: metric_name
metric_target_type: metric_target_type
kube_horizontalpodautoscaler_status_condition
kube_horizontalpodautoscaler_status_condition/gauge
GAUGEDOUBLE1
prometheus_target
1.27.2-gke.1200
이 자동 확장 처리의 조건입니다. 30초마다 샘플링됩니다.

condition: 조건
horizontalpodautoscaler: horizontalpodautoscaler
namespace: 네임스페이스
status: 상태
kube_horizontalpodautoscaler_status_current_replicas
kube_horizontalpodautoscaler_status_status_current_replicas/gauge
GAUGEDOUBLE1
prometheus_target
1.27.2-gke.1200
이 자동 확장 처리에서 관리하는 현재 포드의 복제본 수입니다. 30초마다 샘플링됩니다.

horizontalpodautoscaler: horizontalpodautoscaler
kube_horizontalpodautoscaler_status_desired_replicas
kube_horizontalpodautoscaler_status_desired_replicas/gauge
GAUGEDOUBLE1
prometheus_target
1.27.2-gke.1200
이 자동 확장 처리에서 관리하는 포드의 원하는 복제본 수입니다. 30초마다 샘플링됩니다.

horizontalpodautoscaler: horizontalpodautoscaler

자세한 내용은 수평형 포드 자동 확장 처리 측정항목을 참조하세요.

수평형 포드 자동 확장 처리 측정항목 샘플 쿼리

예를 들어 수평형 포드 자동 확장 처리가 최대 복제본 수에 근접하고 있는지 확인하기 위해 다음 비율을 표시할 수 있습니다.

kube_horizontalpodautoscaler_status_current_replicas{cluster="CLUSTER", namespace="NAMESPACE", horizontalpodautoscaler="HPA"} /
kube_horizontalpodautoscaler_spec_max_replicas{cluster="CLUSTER", namespace="NAMESPACE", horizontalpodautoscaler="HPA"}

수평형 포드 자동 확장 처리가 최대 복제본 수로 실행되는 경우 최대 포드 수의 사양을 늘리는 것이 좋습니다. 다음 PromQL 표현식을 사용해서 이 사례를 알리는 알림을 만들 수 있습니다.

kube_horizontalpodautoscaler_status_current_replicas{cluster="CLUSTER", namespace="NAMESPACE", horizontalpodautoscaler="HPA"}
  ==
kube_horizontalpodautoscaler_spec_max_replicas{cluster="CLUSTER", namespace="NAMESPACE", horizontalpodautoscaler="HPA"}

또한 kube_horizontalpodautoscaler_status_current_replicaskube_horizontalpodautoscaler_status_desired_replicas 측정항목의 값을 비교해서 현재 복제본 수와 필요한 복제본 수 사이에 차이가 있는지 확인할 수 있습니다. 차이가 있으면 클러스터에 리소스 제약조건이 있음을 나타낼 수 있습니다. 다음 PromQL 표현식은 현재 복제본 수와 필요, 최소, 최대 복제본 수 간의 차이와 현재 복제본 수의 변경사항을 확인합니다.

(kube_horizontalpodautoscaler_status_desired_replicas{job="kube-state-metrics", namespace=~"NAMESPACE"}
  !=
kube_horizontalpodautoscaler_status_current_replicas{job="kube-state-metrics", namespace=~"NAMESPACE"})
  and
(kube_horizontalpodautoscaler_status_current_replicas{job="kube-state-metrics", namespace=~"NAMESPACE"}
  >
kube_horizontalpodautoscaler_spec_min_replicas{job="kube-state-metrics", namespace=~"NAMESPACE"})
  and
(kube_horizontalpodautoscaler_status_current_replicas{job="kube-state-metrics", namespace=~"NAMESPACE"}
  <
kube_horizontalpodautoscaler_spec_max_replicas{job="kube-state-metrics", namespace=~"NAMESPACE"})
  and
changes(kube_horizontalpodautoscaler_status_current_replicas{job="kube-state-metrics", namespace=~"NAMESPACE"}[15m]) == 0

kube_horizontalpodautoscaler_status_condition 측정항목의 conditionstatus 라벨은 수평형 포드 자동 확장 처리가 다양한 장애 모드로 실행되는 경우를 감지하는 데 도움이 됩니다. 예를 들면 다음과 같습니다.

  • ScalingLimited 조건과 true 상태는 수평형 포드 자동 확장 처리가 최소 또는 최대 복제본 수로 바인딩됨을 나타냅니다.
    kube_horizontalpodautoscaler_status_condition{status="true", condition="ScalingLimited"} == 1
  • AbleToScale 조건과 false 상태는 수평형 포드 자동 확장 처리에서 확장 가져오기 또는 업데이트 문제가 발생하고 있음을 나타냅니다.

    kube_horizontalpodautoscaler_status_condition{status="false", condition="AbleToScale"} == 1

  • ScalingActive 조건과 false 상태는 수평형 포드 자동 확장 처리가 사용 중지되었거나 새 배율을 계산할 수 없음을 나타냅니다.

    kube_horizontalpodautoscaler_status_condition{status="false", condition="ScalingActive"} == 1

이 섹션의 쿼리 및 알림 표현식 중 일부는 GitHub Prometheus 커뮤니티 Kubernetes Helm 차트 저장소의 kubernetes-apps.yaml 파일에서 조정되었습니다.