사용량이 많지 않은 시간대에 GKE 클러스터 축소를 통한 비용 절감

이 가이드에서는 Google Kubernetes Engine(GKE)에 예약된 자동 확장 처리를 배포하여 비용을 줄이는 방법을 설명합니다. 이러한 유형의 자동 확장 처리는 요일 또는 시간에 따라 클러스터를 확장하거나 축소합니다. 예약된 자동 확장 처리는 트래픽에 예측 가능한 ebb 및 흐름이 있는 경우(예: 지역 소매업체이거나 업무 시간이 하루 중 특정 시간으로 제한된 직원용 소프트웨어일 경우)에 유용합니다.

이 가이드는 트래픽이 급증하기 전에 클러스터를 안정적으로 확장하고, 야간이나 주말에 또는 온라인 사용자가 적은 다른 시간에 클러스터를 다시 축소하여 비용을 절감하려는 개발자와 운영자를 위한 것입니다. 이 문서는 사용자가 Docker, Kubernetes, Kubernetes CronJob, GKE 및 Linux에 익숙하다고 가정합니다.

소개

많은 애플리케이션이 균일하지 않은 트래픽 패턴을 경험합니다. 예를 들어 조직의 작업자는 낮 동안에만 애플리케이션에 참여할 수 있습니다. 따라서 해당 애플리케이션의 데이터 센터 서버는 야간에 유휴 상태입니다.

Google Cloud는 다른 이점 외에도 트래픽 부하에 따라 인프라를 동적으로 할당하여 비용을 절약할 수 있습니다. 일부 경우에는 단순한 자동 확장 구성으로 불균등한 트래픽의 할당 문제를 해결할 수 있습니다. 이 경우 계속 유지하세요. 하지만 다른 경우에 트래픽 패턴의 급격한 변화가 있으면 수직 확장 중에 시스템 불안정을 방지하고 클러스터를 과도하게 프로비저닝하지 않도록 더욱 정교하게 조정된 자동 확장 구성이 필요합니다.

이 가이드에서는 트래픽 패턴의 급격한 변화를 잘 이해하고 있는 시나리오에 초점을 맞추고 있으며 자동 확장 처리기에 인프라가 곧 급증할 것이라는 힌트를 주고자 합니다. 이 문서에서는 아침에 새 환경의 GKE 클러스터를 확장하고 밤에는 축소하는 방법을 보여 주지만 비슷한 접근법을 사용하여 피크 확장 이벤트, 광고 캠페인, 주말 트래픽 등의 모든 알려진 이벤트를 위한 용량을 늘리거나 줄일 수 있습니다.

약정 사용 할인이 있는 경우 클러스터 축소

이 가이드에서는 사용량이 적은 시간 동안 GKE 클러스터를 최소로 축소하여 비용을 줄이는 방법을 설명합니다. 그러나 약정 사용 할인을 구매한 경우 자동 확장과 함께 이러한 할인이 작동하는 방식을 이해하는 것이 중요합니다.

약정 사용 계약은 일정량의 리소스 (vCPU, 메모리 등)를 지불하기로 약정할 경우 대폭 할인된 가격을 제공합니다. 그러나 약정할 리소스 양을 결정하려면 워크로드가 시간이 지남에 따라 사용하는 리소스의 수를 사전에 알아야 합니다. 비용 절감을 돕기 위해 다음 다이어그램은 계획에 포함해야할 리소스와 포함하지 말아야 하는 리소스를 보여줍니다.

항상 할당되는 약정된 리소스와 수요 (급증)에 따라 자동 확장되는 리소스의 베이스를 보여주는 리소스 배포입니다.

다이어그램에 표시된 것처럼 약정 사용 계약에 따른 리소스 할당은 고정적입니다. 계약이 적용되는 리소스는 약정한 만큼 소비하기 위해 대부분의 시간동안 사용중이어야 합니다. 따라서 약정된 리소스를 계산할 때 사용량이 급증하는 동안 사용된 리소스는 포함하면 안됩니다. 리소스가 급증하는 경우 GKE 자동 확장 처리 옵션을 사용하는 것이 좋습니다. 이러한 옵션에는 이 문서에서 설명하는 예약된 자동 확장 처리와 GKE에서 비용 최적화된 Kubernetes 애플리케이션 실행 권장사항에서 설명하는 다른 관리형 옵션이 포함됩니다.

이미 일정량의 리소스에 대한 약정 사용 계약이 있는 경우 이 최소 한도 미만으로 클러스터를 축소해도 비용을 줄일 수 없습니다. 이러한 시나리오에서는 컴퓨팅 수요가 적은 기간 동안 격차를 채울 수 있도록 일부 작업을 예약하는 것이 좋습니다. 또는 리소스 비용을 지불하고 있으므로 리소스를 사용하지 않아도 클러스터를 가동상태로 유지합니다.

아키텍처

다음 다이어그램은 이 가이드에서 배포하는 인프라와 예약된 자동 확장 처리의 아키텍처를 보여줍니다. 예약된 자동 확장 처리는 일정에 따라 확장을 관리하기 위해 함께 작동하는 일련의 구성요소로 이루어집니다.

예약된 자동 확장 처리를 함께 구성하는 구성요소를 보여주는 아키텍처

이 아키텍처에서 Kubernetes CronJobs 집합은 트래픽 패턴에 대한 알려진 정보를 Cloud Monitoring 커스텀 측정항목으로 내보냅니다. 그런 다음 이 데이터는 Kubernetes 수평형 pod 자동 확장 처리 (HPA)에서 HPA가 워크로드를 확장해야 할 시점에 관한 입력으로 읽혀집니다. 대상 CPU 사용률과 같은 다른 부하 측정항목과 함께 HPA는 특정 배포의 복제본을 확장하는 방법을 결정합니다.

목표

  • GKE 클러스터를 만듭니다.
  • Kubernetes HPA를 사용하는 예시 애플리케이션을 배포합니다.
  • 예약된 자동 확장 처리의 구성요소를 설정하고 예약된 커스텀 측정항목에서 읽을 수 있도록 HPA를 업데이트합니다.
  • 예약된 austoscaler가 제대로 작동하지 않을 때 트리거되는 알림을 설정합니다.
  • 애플리케이션에 대한 부하를 생성합니다.
  • HPA가 일반적인 트래픽 증가 및 사용자가 구성한 예약된 커스텀 측정항목에 응답하는 방식을 살펴보세요.

이 가이드의 코드는 GitHub 저장소에 있습니다.

비용

이 가이드에서는 비용이 청구될 수 있는 다음과 같은 Google Cloud 구성요소를 사용합니다.

프로젝트 사용량을 기준으로 예상 비용을 산출하려면 가격 계산기를 사용하세요. Google Cloud를 처음 사용하는 사용자는 무료 체험판을 사용할 수 있습니다.

시작하기 전에

  1. Google Cloud 계정에 로그인합니다. Google Cloud를 처음 사용하는 경우 계정을 만들고 Google 제품의 실제 성능을 평가해 보세요. 신규 고객에게는 워크로드를 실행, 테스트, 배포하는 데 사용할 수 있는 $300의 무료 크레딧이 제공됩니다.
  2. Google Cloud Console의 프로젝트 선택기 페이지에서 Google Cloud 프로젝트를 선택하거나 만듭니다.

    프로젝트 선택기로 이동

  3. Cloud 프로젝트에 결제가 사용 설정되어 있는지 확인합니다. 프로젝트에 결제가 사용 설정되어 있는지 확인하는 방법을 알아보세요.

  4. GKE and the Cloud Monitoring API를 사용 설정합니다.

    API 사용 설정

  5. Google Cloud Console의 프로젝트 선택기 페이지에서 Google Cloud 프로젝트를 선택하거나 만듭니다.

    프로젝트 선택기로 이동

  6. Cloud 프로젝트에 결제가 사용 설정되어 있는지 확인합니다. 프로젝트에 결제가 사용 설정되어 있는지 확인하는 방법을 알아보세요.

  7. GKE and the Cloud Monitoring API를 사용 설정합니다.

    API 사용 설정

환경 초기화

  1. Cloud Console에서 Cloud Shell을 활성화합니다.

    Cloud Shell 활성화

    Cloud Console 하단에 Cloud Shell 세션이 시작되고 명령줄 프롬프트가 표시됩니다. Cloud Shell은 gcloud 명령줄 도구가 포함되고 Cloud SDK가 사전 설치된 셸 환경으로, 현재 프로젝트의 값이 이미 설정되어 있습니다. 세션이 초기화되는 데 몇 초 정도 걸릴 수 있습니다.

  2. Cloud Shell에서 Cloud 프로젝트 ID, 이메일 주소 및 컴퓨팅 영역과 리전을 구성합니다.

    PROJECT_ID=YOUR_PROJECT_ID
    ALERT_EMAIL=YOUR_EMAIL_ADDRESS
    gcloud config set project $PROJECT_ID
    gcloud config set compute/region us-central1
    gcloud config set compute/zone us-central1-f
    

    다음을 바꿉니다.

    • YOUR_PROJECT_ID: 사용 중인 프로젝트의 Cloud 프로젝트 이름입니다.
    • YOUR_EMAIL_ADDRESS: 예약된 자동 확장 처리가 제대로 작동하지 않을 때 알림을 받을 이메일 주소입니다.

    원하는 경우 이 가이드의 다른 리전과 영역을 선택할 수 있습니다.

  3. gke-scheduled-autoscaler GitHub 저장소를 클론합니다.

    git clone https://github.com/GoogleCloudPlatform/gke-scheduled-autoscaler
    cd gke-scheduled-autoscaler
    

    이 저장소의 코드는 다음 폴더에 구성됩니다.

    • 루트: CronJob에서 커스텀 측정항목을 Cloud Monitoring으로 내보내는 데 사용하는 코드를 포함합니다.
    • k8s/: Kubernetes HPA가 있는 배포 예시를 포함합니다.
    • k8s/scheduled-autoscaler/: 커스텀 측정항목에서 읽을 커스텀 측정항목 및 HPA의 업데이트된 버전을 내보내는 CronJob을 포함합니다.
    • k8s/load-generator/: 시간당 사용량을 시뮬레이션하는 애플리케이션이 있는 Kubernetes 배포를 포함합니다.
    • monitoring/: 이 가이드에서 구성하는 Cloud Monitoring 구성요소를 포함합니다.

GKE 클러스터 만들기

  1. Cloud Shell에서 예약된 자동 확장 처리를 실행하기 위한 GKE 클러스터를 만듭니다.

    gcloud beta container clusters create scheduled-autoscaler \
        --enable-ip-alias \
        --release-channel=stable \
        --machine-type=e2-standard-2 \
        --enable-autoscaling --min-nodes=1 --max-nodes=10 \
        --num-nodes=1 \
        --autoscaling-profile=optimize-utilization
    

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

    NAME                   LOCATION       MASTER_VERSION   MASTER_IP      MACHINE_TYPE   NODE_VERSION     NUM_NODES  STATUS
    scheduled-autoscaler   us-central1-f  1.17.9-gke.6300  34.69.187.253  e2-standard-2  1.17.9-gke.6300  1          RUNNING
    

    프로덕션 구성이 아니지만 이 가이드에 적합한 구성입니다. 이 설정에서는 최소 1개 노드와 최대 10개의 노드로 클러스터 자동 확장 처리를 구성합니다. 또한 optimize-utilization 프로필을 사용 설정하여 축소 프로세스의 속도를 높입니다.

예시 애플리케이션 배포

  1. 예약된 자동 확장 처리 없이 예시 애플리케이션을 배포합니다.

    kubectl apply -f ./k8s
    
  2. k8s/hpa-example.yaml 파일을 엽니다.

    다음 목록은 파일의 콘텐츠를 보여줍니다.

    spec:
      maxReplicas: 20
      minReplicas: 10
      scaleTargetRef:
        apiVersion: apps/v1
        kind: Deployment
        name: php-apache
      metrics:
      - type: Resource
        resource:
          name: cpu
          target:
            type: Utilization
            averageUtilization: 60

    최소 복제본 수 (minReplicas)는 10으로 설정됩니다. 또한 이 구성은 CPU 사용률(name: cputype: Utilization 설정)에 따라 확장되도록 클러스터를 설정합니다.

  3. 애플리케이션을 사용할 수 있을 때까지 기다립니다.

    kubectl wait --for=condition=available --timeout=600s deployment/php-apache
    EXTERNAL_IP=''
    while [ -z $EXTERNAL_IP ]
    do
        EXTERNAL_IP=$(kubectl get svc php-apache -o jsonpath={.status.loadBalancer.ingress[0].ip})
        [ -z $EXTERNAL_IP ] && sleep 10
    done
    curl -w '\n' http://$EXTERNAL_IP
    

    애플리케이션을 사용할 수 있는 경우 출력은 다음과 같습니다.

    OK!
    
  4. 설정을 확인합니다.

    kubectl get hpa php-apache
    

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

    NAME         REFERENCE               TARGETS   MINPODS   MAXPODS   REPLICAS   AGE
    php-apache   Deployment/php-apache   9%/60%    10        20        10         6d19h
    

    REPLICAS 열에는 hpa-example.yaml 파일의 minReplicas 필드 값과 일치하는 10가 표시됩니다.

  5. 노드 수가 4로 증가되었는지 확인합니다.

    kubectl get nodes
    

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

    NAME                                                  STATUS   ROLES    AGE   VERSION
    gke-scheduled-autoscaler-default-pool-64c02c0b-9kbt   Ready    <none>   21S   v1.17.9-gke.1504
    gke-scheduled-autoscaler-default-pool-64c02c0b-ghfr   Ready    <none>   21s   v1.17.9-gke.1504
    gke-scheduled-autoscaler-default-pool-64c02c0b-gvl9   Ready    <none>   21s   v1.17.9-gke.1504
    gke-scheduled-autoscaler-default-pool-64c02c0b-t9sr   Ready    <none>   21s   v1.17.9-gke.1504
    

    클러스터를 만들 때 min-nodes=1 플래그를 사용하여 최소 구성을 설정합니다. 그러나 hpa-example.yaml 파일의 minReplicas이 10으로 설정되기 때문에 이 절차 시작 시 배포한 애플리케이션은 추가 인프라를 요청합니다.

    minReplicas를 10과 같은 값으로 설정하는 것은 소매업체와 같은 회사에서 공통적으로 사용하는 전략으로, 영업일 처음 몇 시간 후에 트래픽이 갑자기 증가할 것으로 예상됩니다. 그러나 HPA minReplicas에 높은 값을 설정하면 애플리케이션 트래픽이 낮은 야간에도 클러스터를 줄일 수 없으므로 비용이 증가할 수 있습니다.

예약된 자동 확장 처리 설정

  1. Cloud Shell에서 GKE 클러스터에 커스텀 측정항목 - Cloud Monitoring 어댑터를 설치합니다.

    kubectl apply -f https://raw.githubusercontent.com/GoogleCloudPlatform/k8s-stackdriver/master/custom-metrics-stackdriver-adapter/deploy/production/adapter_new_resource_model.yaml
    kubectl wait --for=condition=available --timeout=600s deployment/custom-metrics-stackdriver-adapter -n custom-metrics
    

    이 어댑터는 Cloud Monitoring 커스텀 측정항목을 기반으로 pod 자동 확장을 사용 설정합니다.

  2. 커스텀 측정항목 내보내기 코드를 빌드하고 푸시합니다.

    docker build -t gcr.io/$PROJECT_ID/custom-metric-exporter .
    docker push gcr.io/$PROJECT_ID/custom-metric-exporter
    
  3. 커스텀 측정항목을 내보내는 CronJob을 배포하고 이러한 커스텀 측정항목에서 읽는 HPA의 업데이트된 버전을 배포합니다.

    sed -i.bak s/PROJECT_ID/$PROJECT_ID/g ./k8s/scheduled-autoscaler/scheduled-autoscale-example.yaml
    kubectl apply -f ./k8s/scheduled-autoscaler
    
  4. k8s/scheduled-autoscaler/scheduled-autoscale-example.yaml 파일을 열고 검사합니다.

    다음 목록은 파일의 콘텐츠를 보여줍니다.

    #
    # Copyright 2020 Google LLC
    #
    # Licensed under the Apache License, Version 2.0 (the "License");
    # you may not use this file except in compliance with the License.
    # You may obtain a copy of the License at
    #
    #      https://www.apache.org/licenses/LICENSE-2.0
    #
    # Unless required by applicable law or agreed to in writing, software
    # distributed under the License is distributed on an "AS IS" BASIS,
    # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    # See the License for the specific language governing permissions and
    # limitations under the License.
    
    apiVersion: batch/v1beta1
    kind: CronJob
    metadata:
      name: scale-up
    spec:
      schedule: "50-59/1 * * * *"
      jobTemplate:
        spec:
          template:
            spec:
              containers:
              - name: custom-metric-extporter
                image: gcr.io/PROJECT_ID/custom-metric-exporter
                command:
                  - /export
                  - --name=scheduled_autoscaler_example
                  - --value=10
              restartPolicy: OnFailure
          backoffLimit: 1
    ---
    apiVersion: batch/v1beta1
    kind: CronJob
    metadata:
      name: scale-down
    spec:
      schedule: "1-49/1 * * * *"
      jobTemplate:
        spec:
          template:
            spec:
              containers:
              - name: custom-metric-extporter
                image: gcr.io/PROJECT_ID/custom-metric-exporter
                command:
                  - /export
                  - --name=scheduled_autoscaler_example
                  - --value=1
              restartPolicy: OnFailure
          backoffLimit: 1
    

    이 구성은 CronJob이 하루 중 시간을 기준으로 추천 pod 복제본 수를 custom.googleapis.com/scheduled_autoscaler_example이라는 커스텀 측정항목으로 내보내도록 지정합니다. 이 가이드의 모니터링 섹션을 용이하게 하기 위해 일정 필드 구성은 시간별 수직 확장 및 축소를 정의합니다. 프로덕션의 경우 이 일정을 비즈니스 요구에 맞게 맞춤설정할 수 있습니다.

  5. k8s/scheduled-autoscaler/hpa-example.yaml 파일을 열고 검사합니다.

    다음 목록은 파일의 콘텐츠를 보여줍니다.

    spec:
      maxReplicas: 20
      minReplicas: 1
      scaleTargetRef:
        apiVersion: apps/v1
        kind: Deployment
        name: php-apache
      metrics:
      - type: Resource
        resource:
          name: cpu
          target:
            type: Utilization
            averageUtilization: 60
      - type: External
        external:
          metric:
            name: custom.googleapis.com|scheduled_autoscaler_example
          target:
              type: AverageValue
              averageValue: 1

    이 구성은 HPA 객체가 이전에 배포된 HPA를 대체해야 함을 지정합니다. 이 구성은 minReplicas의 값을 1로 줄입니다. 즉, 워크로드는 최소로 축소될 수 있습니다. 구성은 외부 측정항목(type: External)도 추가합니다. 이렇게 하면 자동 확장이 두 가지 요소에 의해 트리거됩니다.

    이러한 다중 측정항목 시나리오에서 HPA는 각 측정항목에 대해 제안된 복제본 수를 계산한 다음 가장 높은 값을 반환하는 측정항목을 선택합니다. 이 내용을 이해하는 것이 중요합니다.예약된 자동 확장 처리가 주어진 시점에서 pod 수가 1이어야 한다고 제안할 수 있습니다. 그러나 하나의 pod에 대해 실제 CPU 사용률이 예상보다 높은 경우 HPA는 더 많은 복제본을 만듭니다.

  6. 각 명령어를 다시 실행하여 노드 및 HPA 복제본 수를 다시 확인합니다.

    kubectl get nodes
    kubectl get hpa php-apache
    

    표시되는 결과는 예약된 자동 확장 처리가 최근에 수행한 작업에 따라 달라집니다. 특히 minReplicasnodes 값은 확장 주기에서 각기 다른 시점에 각기 다른 값이 됩니다.

    예를 들어 매시간마다 약 51분에서 60분 (최대 트래픽 기간을 나타냄)은 minReplicas의 HPA 값이 10이고 nodes 값은 4가 됩니다.

    반면 1분에서 50분 (트래픽이 더 적은 기간을 나타냄)의 경우 할당 혹은 제거된 pod수에 따라서 HPA minReplicas 값은 1, nodes 값은 1 또는 2가 됩니다. 더 낮은 값 (1분에서 50분)에서는 클러스터가 축소를 완료하는 데 최대 10분이 걸릴 수 있습니다.

예약된 자동 확장 처리가 제대로 작동하지 않을 때 알림 구성

프로덕션 환경에서는 일반적으로 CronJob이 커스텀 측정항목을 채울 수 없는 경우를 알고자 합니다. 이를 위해 5분 동안 custom.googleapis.com/scheduled_autoscaler_example 스트림이 전송되지 않을 때 트리거되는 알림을 만들 수 있습니다.

  1. Cloud Console의 탐색 메뉴에서 Monitoring 페이지로 이동합니다.

  2. 새 작업공간을 만듭니다.

    1. 작업공간에 프로젝트 추가 페이지에서 Cloud 프로젝트를 선택합니다.
    2. 추가를 클릭합니다.

    작업공간이 생성되는 데 몇 분 정도 걸릴 수 있습니다.

  3. Cloud Shell에서 알림 채널을 만듭니다.

    gcloud alpha monitoring channels create \
        --display-name="Scheduled Autoscaler team (Primary)" \
        --description="Primary contact method for the Scheduled Autoscaler team lead"  \
        --type=email \
        --channel-labels=email_address=${ALERT_EMAIL}
    

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

    Created notification channel NOTIFICATION_CHANNEL_ID.
    

    이 명령어는 가이드 단계를 단순화하기 위해 email 유형의 알림 채널을 만듭니다. 프로덕션 환경에서는 알림 채널을 sms 또는 pagerduty으로 설정하여 비동기 전략을 더 적게 사용하는 것이 좋습니다.

  4. NOTIFICATION_CHANNEL_ID 자리표시자에 표시된 값이 있는 변수를 설정합니다.

    NOTIFICATION_CHANNEL_ID=NOTIFICATION_CHANNEL_ID
    
  5. 알림 정책을 배포합니다.

    gcloud alpha monitoring policies create \
        --policy-from-file=./monitoring/alert-policy.yaml \
        --notification-channels=$NOTIFICATION_CHANNEL_ID
    

    alert-policy.yaml 파일에는 5분 후에 측정항목이 없는 경우 알림을 보내는 사양이 포함됩니다.

  6. Cloud Monitoring 알림 페이지로 이동하여 알림 정책을 확인합니다.

    알림 페이지로 이동

  7. 예약된 자동 확장 처리 정책을 클릭하고 알림 정책의 세부정보를 확인합니다.

예시 애플리케이션에 대한 부하 생성

  • Cloud Shell에서 부하 생성기를 배포합니다.

    kubectl apply -f ./k8s/load-generator
    

    다음 목록은 load-generator 스크립트를 보여줍니다.

    command: ["/bin/sh", "-c"]
    args:
    - while true; do
        RESP=$(wget -q -O- http://php-apache.default.svc.cluster.local);
        echo "$(date +%H)=$RESP";
        sleep $(date +%H | awk '{ print "s("$0"/3*a(1))*0.5+0.5" }' | bc -l);
      done;
    

    이 스크립트는 load-generator 배포를 삭제할 때까지 클러스터에서 실행됩니다. 몇 밀리초 간격으로 php-apache 서비스에 요청이 전송됩니다. sleep 명령어는 하루 동안 부하 분산 변경사항을 시뮬레이션합니다. 이 방법으로 트래픽을 생성하는 스크립트를 사용하면 HPA 구성에서 CPU 사용률 및 커스텀 측정항목을 조합할 때 어떻게 되는지 이해할 수 있습니다.

트래픽 또는 예약된 측정항목에 따라 확장 시각화

이 섹션에서는 확장 및 축소의 효과를 보여주는 시각화를 검토합니다.

  1. Cloud Shell에서 새 대시보드를 만듭니다.

    gcloud monitoring dashboards create \
        --config-from-file=./monitoring/dashboard.yaml
    
  2. Cloud Monitoring 대시보드 페이지로 이동합니다.

    대시보드 페이지로 이동

  3. 예약된 자동 확장 처리 대시보드를 클릭합니다.

    대시보드에 세 개의 그래프가 표시됩니다. 수직 확장 및 축소의 역학관계를 확인하고 하루 동안 다양한 부하 분산이 자동 확장에 미치는 영향을 확인하려면 최소 2시간(이상적으로 24시간 이상)을 기다려야 합니다.

    그래프가 표시되는 바를 이해할 수 있도록 다음 그래프를 확인하면 하루 전체 보기를 확인할 수 있습니다.

    • 예약된 측정항목 (원하는 pod 수)에는 예약된 자동 확장 처리 설정에서 사용자가 구성한 CronJob을 통해 Cloud Monitoring으로 내보내는 커스텀 측정항목의 시계열이 표시됩니다.

      매시간 급증을 보여주는 pod 수요 그래프

    • CPU 사용률 (요청과 사용 비교)은 요청된 CPU (빨간색) 및 실제 CPU 사용률 (파란색)의 시계열을 보여줍니다. 부하가 낮으면 HPA는 예약된 자동 확장 처리에서 사용률 결정을 고려합니다. 하지만 트래픽이 증가하면 오후 12시부터 오후 6시 사이에 데이터 포인트를 볼 수 있으므로 HPA는 필요에 따라 pod 수를 늘립니다.

      CPU 사용률의 그래프로, 일일 오후 4시까지 수요가 증가하고 그 후에는 하락함을 보여줍니다.

    • pod 수 (예약과 실제 비교) + 평균 CPU 사용률은 이전 pod와 유사한 뷰를 표시합니다. pod 수 (빨간색)는 예약된대로 매시간 10으로 증가합니다. pod 수는 부하에 반응하여 시간이 지남에 따라 자연스럽게 증가하고 감소합니다 (오후 12시 및 오후 6시). 평균 CPU 사용률 (주황색)은 설정된 타겟 (60%) 아래로 유지됩니다.

      두 개의 그래프 하나는 매시간마다 수요가 급증하는 pod 수요를 보여줍니다. 다른 하나는 CPU 사용률이 오르락 내리락 하지만 구성된 높은 값에서서 최고가 된다는 것을 보여줍니다.

삭제

이 튜토리얼에서 사용된 리소스 비용이 Google Cloud 계정에 청구되지 않도록 하려면 리소스가 포함된 프로젝트를 삭제하거나 프로젝트를 유지하고 개별 리소스를 삭제하세요.

프로젝트 삭제

  1. Cloud Console에서 리소스 관리 페이지로 이동합니다.

    리소스 관리로 이동

  2. 프로젝트 목록에서 삭제할 프로젝트를 선택하고 삭제를 클릭합니다.
  3. 대화상자에서 프로젝트 ID를 입력한 후 종료를 클릭하여 프로젝트를 삭제합니다.

다음 단계