GKE 리소스 할당 및 클러스터 비용에 대한 주요 지출 통계 확인


이 페이지에서는 Google Kubernetes Engine(GKE) 비용 할당을 사용하여 리소스 할당 및 비용 최적화 결정에 필요한 주요 지출 통계를 확인하는 방법을 설명합니다. GKE 비용 할당과 클러스터 사용량 측정의 차이, GKE 비용 할당의 제한사항, 신규 및 기존 클러스터 모두에서 GKE 비용 할당을 활성화하는 방법, Cloud Billing BigQuery 내보내기를 필터링하고 쿼리하는 방법을 알아봅니다.

이 페이지는 GKE에서 클러스터를 만들고 구성하며 워크로드를 배포할 때 비용을 관리해야 하는 운영자, 클라우드 설계자, 개발자, 데이터 관리자를 위해 작성되었습니다. 일반적인 역할에 대해 자세히 알아보려면 일반 GKE Enterprise 사용자 역할 및 작업을 참고하세요.

이 페이지를 읽기 전에 GKE에서 비용에 최적화된 Kubernetes 애플리케이션을 실행하기 위한 권장사항을 숙지해야 합니다.

잠재적인 데이터 볼륨 증가

GKE 비용 할당을 사용 설정하면 BigQuery에서 스토리지 및 쿼리 비용이 늘어날 수 있습니다. 정확한 증가 규모는 포드 및 클러스터에서 사용하는 고유 라벨 및 네임스페이스 조합 수에 따라 달라집니다.

GKE 비용 할당을 사용 설정해도 총 GKE 사용 비용은 변경되지 않습니다. 내보내기에서 비용 항목의 합계가 동일하고 결제 내보내기에서 작성한 기존 쿼리 및 보고서가 동일한 값을 반환합니다.

GKE 비용 할당 및 클러스터 사용량 측정

GKE 비용 할당은 다음 방식에서 클러스터 사용량 측정과 다릅니다.

  • GKE 비용 할당은 클러스터 정보를 얻기 위한 클러스터 사용량 측정의 대안을 제공합니다.
  • GKE 비용 할당은 Looker Studio 템플릿에서 데이터를 수집하는 대신 Cloud Billing 계정에서 클러스터 비용을 계산합니다.
  • GKE 비용 할당을 사용하면 Cloud Billing Google Cloud 콘솔 및 Cloud Billing 세부 내보내기에서 클러스터 비용 데이터를 볼 수 있습니다.

시작하기 전에

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

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

제한 및 제약사항

  • Cloud Billing BigQuery 세부 사용 비용 데이터 내보내기에서는 GKE 비용 할당 데이터만 볼 수 있습니다.
  • Google Cloud CLI 버전 392.0.0 이상이 필요합니다.
  • GKE 비용 할당을 사용 설정하면 결제 내보내기에 해당 날짜로부터 GKE 리소스에 대한 추가 항목이 포함됩니다. 결제 내보내기는 데이터를 백필하지 않습니다.
  • GKE 비용 할당을 사용 중지하면 결제 내보내기에 추가 항목이 포함되지 않지만 기능이 사용 설정된 동안 생성된 이전 항목이 수정되거나 삭제되지 않습니다.
  • GKE 비용 할당 데이터는 사용된 리소스가 아닌 리소스 요청을 기반으로 합니다. 리소스 요청, 리소스 한도, 리소스 소비 간의 차이점을 자세히 알아보려면 Kubernetes 권장사항: 리소스 요청 및 한도를 참조하세요.
  • GKE 비용 할당은 다음과 같은 리소스 SKU 유형을 지원합니다.
    • Compute Engine VM 인스턴스 vCPU SKU
    • Compute Engine VM 인스턴스 RAM SKU
    • Compute Engine VM 커스텀 확장 인스턴스 RAM SKU
    • Compute Engine VM 인스턴스 GPU SKU
    • Compute Engine PD 용량 SKU
    • Cloud TPU 인스턴스 SKU
  • 포드에 Kubernetes 라벨이 50개 이상 있으면 Google Cloud 콘솔의 Cloud Billing 섹션 또는 Cloud Billing 세부 내보내기에서 이러한 라벨을 사용할 수 없습니다.
  • GKE 비용 할당을 사용 설정한 다음에는 데이터가 Cloud Billing에 표시될 때까지 최대 3일이 걸릴 수 있습니다.
  • GKE 비용 할당에는 Persistent Disk의 데이터가 포함되지만 다음과 같은 예외가 있습니다.
    • PersistentVolumeClaims 또는 일반 임시 볼륨을 통해 동적으로 프로비저닝된 PersistentVolume 리소스만 지원합니다.
    • Compute Engine 영구 디스크 CSI 드라이버에서 프로비저닝하거나 ReadWriteOnce 또는 ReadWriteOncePod 액세스 모드에서 지원 중단된 kubernetes.io/gce-pd 스토리지 플러그인을 사용하는 PersistentVolume 리소스만 지원됩니다.
    • 업타임이 30분 미만인 Persistent Disk는 추적되지 않을 수 있습니다. 업타임이 최소 30분 이상인 Persistent Disk는 항상 추적됩니다.
  • Cloud TPU 버전은 Cloud TPU v4 이상이어야 합니다.

GKE 클러스터 비용 보기

GKE 비용 할당을 사용 설정하면 GKE 워크로드의 클러스터 이름 및 네임스페이스가 BigQuery에 대한 결제 내보내기의 labels 필드에 표시됩니다.

리소스 라벨 키(labels.key) 리소스 라벨 값(labels.value)
설명 Kubernetes 라벨k8s-label/${k8s-label-key} 형식입니다. 여기서 ${k8s-label-key}는 포드의 Kubernetes 라벨의 키입니다. 결제 라벨 k8s-label/${k8s-label-key}에는 해당 Kubernetes 포드 라벨과 동일한 값이 포함됩니다. Kubernetes 라벨 키가 VM 라벨 키와 충돌하면 Kubernetes 라벨 값에서 VM 라벨 값을 재정의합니다. 클러스터 및 노드 풀 리소스 라벨은 다음과 같이 최고 우선순위부터 최저 우선순위를 통해 리소스에 적용됩니다.
  • 개별 리소스(예: 인스턴스 또는 스토리지)
  • 노드 풀
  • 클러스터
클러스터 이름 goog-k8s-cluster-name [클러스터-이름]
네임스페이스 k8s-namespace [네임스페이스]
워크로드 유형 k8s-workload-type [워크로드-유형]
(예: apps/v1-Deployment, apps/v1-StatefulSet, apps/v1-DaemonSet, apps/v1-ReplicaSet, batch/v1-Job, batch/v1-CronJob, core/v1-Pod)
워크로드 이름 k8s-workload-name [워크로드-이름]

자세한 내용은 세부 사용 비용 데이터 스키마를 참조하세요.

또한 다음 네임스페이스는 오버헤드 및 할당되지 않은 리소스를 추적하는 데 사용됩니다.

  • kube:system-overhead: 포드에서 사용할 수 없는 노드 리소스를 고려합니다. 이러한 리소스는 Kubernetes 프레임워크(kubelet, kube-proxy, containerd를 포함하되 이에 국한되지 않음) 실행을 위해 시스템에서 별도로 설정됩니다. 노드의 용량과 할당 가능한 리소스의 차이입니다.
  • kube:unallocated: 리소스는 워크로드에서 요청되지도 시스템 오버헤드에서 요청되지도 않습니다.

GKE가 리소스의 비용 할당을 확인할 수 없으면 내보내기에 다음 값 중 하나가 포함됩니다.

  • goog-k8s-unknown: Cloud Billing이 SKU를 처리할 수 없습니다. 이 문제는 새 Compute Engine 인스턴스가 프로비저닝되었을 때 발생합니다. GKE가 클러스터를 자동 확장할 때와 같이 노드 시작 및 종료 중 일부 goog-k8s-unknown 값을 예상할 수 있습니다.
  • goog-k8s-unsupported-sku: GKE 비용 할당에서 이 SKU를 지원하지 않습니다. <blank>/NULL과 동일하게 처리합니다. SKU에 항상 이 값으로 라벨이 지정된다는 보장은 없습니다.
  • <blank>/NULL: GKE 비용 할당에서 이 리소스를 추적하지 않습니다. GKE 비용 할당이 사용 설정되지 않았거나 리소스가 GKE 관리형 클러스터에 속해 있지 않은 경우에 이러한 상황이 발생할 수 있습니다.

Persistent Disk의 비용은 Persistent Disk의 지원 PersistentVolumeClaims이 포드에서 클레임될 때 추적됩니다. Persistent Disk 비용은 PersistentVolumeClaims가 삭제될 때까지 클레임 포드의 모든 메타데이터(예: 포드 라벨 및 네임스페이스)를 상속합니다. 삭제되었지만 회수 정책에 따라 PersistentVolumes를 유지하는 PersistentVolumeClaims의 경우 Persistent Disk의 비용은 할당되지 않은 것으로 추적됩니다.

PersistentVolumeClaims에 직접 적용된 라벨은 Google Cloud 콘솔의 Cloud Billing 섹션 또는 Cloud Billing 세부 내보내기에 표시되지 않습니다.

확장 RAM의 경우 요청된 리소스에 따라 일반 RAM SKU와 확장 RAM SKU 모두에 동일한 비율의 총 비용이 워크로드에 할당됩니다.

GKE 비용 할당 사용 설정

gcloud CLI 또는 Google Cloud 콘솔을 사용하여 새 클러스터 또는 기존 클러스터에서 GKE 비용 할당을 사용 설정할 수 있습니다.

새 클러스터 만들기

gcloud

--enable-cost-allocation 플래그를 사용하여 클러스터를 만듭니다.

gcloud container clusters create CLUSTER_NAME \
    --enable-cost-allocation \
    --location=CONTROL_PLANE_LOCATION

다음을 바꿉니다.

  • CLUSTER_NAME: 새 클러스터의 이름
  • CONTROL_PLANE_LOCATION: 클러스터의 컨트롤 플레인에 대한 Compute Engine 위치입니다. 리전 클러스터의 경우 리전 또는 영역 클러스터의 경우 영역을 제공합니다.

콘솔

새 클러스터를 만들 때 GKE 비용 할당을 사용 설정하려면 다음을 수행합니다.

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

    Kubernetes 클러스터 만들기로 이동

  2. 클러스터를 구성하세요.

  3. 탐색창의 클러스터에서 기능을 클릭합니다.

  4. 기타 섹션에서 비용 할당 사용 설정 체크박스를 선택합니다.

  5. 필요에 따라 클러스터를 구성한 후 만들기를 클릭합니다.

클러스터 업데이트

gcloud

--enable-cost-allocation 플래그를 사용하여 클러스터를 업데이트합니다.

gcloud container clusters update CLUSTER_NAME \
    --enable-cost-allocation

CLUSTER_NAME을 클러스터 이름으로 바꿉니다.

콘솔

기존 클러스터에서 GKE 비용 할당을 사용 설정하려면 다음을 수행합니다.

  1. Google Cloud 콘솔에서 Google Kubernetes Engine 페이지로 이동합니다. Google Kubernetes Engine으로 이동
  2. 수정할 클러스터의 이름을 클릭합니다.
  3. 클러스터 페이지의 기능 섹션에서 비용 할당 옆에 있는 을 클릭합니다.
  4. 비용 할당 수정 대화상자에서 비용 할당 사용 설정 체크박스를 선택합니다.
  5. 변경사항 저장을 클릭합니다.

GKE 비용 할당이 사용 설정되어 있는지 확인

gcloud

클러스터를 설명합니다.

gcloud container clusters describe CLUSTER_NAME

출력은 다음과 비슷합니다.

...
costManagementConfig:
  enabled: true
...

이 출력에서 costManagementConfig는 GKE 비용 할당이 사용 설정되었음을 나타냅니다.

콘솔

GKE 비용 할당이 기존 클러스터에 사용 설정되었는지 확인하려면 다음을 수행합니다.

  1. Google Cloud 콘솔에서 Google Kubernetes Engine 페이지로 이동합니다. Google Kubernetes Engine으로 이동
  2. 수정할 클러스터의 이름을 클릭합니다.
  3. 클러스터 페이지의 기능 섹션에서 비용 할당 옆에 GKE 비용 할당의 사용 설정 여부가 표시됩니다.

GKE 비용 데이터 필터링

다음 쿼리 예시는 지원되는 리소스 유형에 대해 클러스터 이름, 네임스페이스, 라벨별로 GKE 비용을 필터링하고 그룹화하는 방법을 보여줍니다.

BILLING_DATASET_TABLEBigQuery에서 만든 데이터 세트의 이름으로 바꿉니다.

테이블 이름은 gcp_billing_export_resource_v1_<BILLING_ACCOUNT_ID>와 유사합니다.

삭제

이 페이지에서 사용된 리소스의 비용이 Google Cloud 계정에 청구되지 않도록 하려면 클러스터에 대해 GKE 비용 할당을 사용 중지합니다.

gcloud container clusters update CLUSTER_NAME \
    --no-enable-cost-allocation

생성한 클러스터를 삭제할 수도 있습니다.

다음 단계