GKE에 Redis 클러스터 배포


이 튜토리얼에서는 스테이트풀(Stateful) 애플리케이션 생성 및 애플리케이션을 실행하는 Google Kubernetes Engine(GKE) 클러스터 업그레이드를 위한 권장사항을 제공합니다. 이 튜토리얼에서는 스테이트풀(Stateful) 애플리케이션을 배포하는 예시로 Redis를 사용하지만 GKE에 배포된 다른 유형의 스테이트풀(Stateful) 애플리케이션에도 동일한 개념이 적용됩니다.

목표

이 튜토리얼은 다음 과정을 다룹니다.

  1. 출시 채널에 등록된 GKE 클러스터를 만듭니다.
  2. GKE에 Redis 클러스터를 만듭니다.
  3. GKE에 Redis 클라이언트 애플리케이션을 배포합니다.
  4. 노드 풀 업그레이드에 대해 다음 권장사항을 수행합니다.
    1. 포드 중단 예산(PDB)을 설정합니다.
    2. 유지보수 기간 및 제외 설정
    3. 노드 업그레이드 전략일시 급증 업그레이드 또는 블루-그린 업그레이드로 설정합니다.
  5. 애플리케이션 테스트
  6. 클러스터를 업그레이드합니다.
  7. 워크로드 중단을 테스트합니다.

다음 다이어그램에서는 이 튜토리얼의 클러스터 아키텍처를 대략적으로 보여줍니다.

아키텍처 다이어그램

비용

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

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

이 문서에 설명된 태스크를 완료했으면 만든 리소스를 삭제하여 청구가 계속되는 것을 방지할 수 있습니다. 자세한 내용은 삭제를 참조하세요.

시작하기 전에

프로젝트 설정

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

    프로젝트 선택기로 이동

  3. Google Cloud 프로젝트에 결제가 사용 설정되어 있는지 확인합니다.

  4. GKE API 사용 설정

    API 사용 설정

  5. Google Cloud Console의 프로젝트 선택기 페이지에서 프로젝트 만들기를 클릭하여 새 Google Cloud 프로젝트 만들기를 시작합니다.

    프로젝트 선택기로 이동

  6. Google Cloud 프로젝트에 결제가 사용 설정되어 있는지 확인합니다.

  7. GKE API 사용 설정

    API 사용 설정

Google Cloud CLI 기본값 설정

  1. Google Cloud 콘솔에서 Cloud Shell 인스턴스를 시작합니다.
    Cloud Shell 열기

  2. 이 샘플 앱의 소스 코드를 다운로드합니다.

     git clone https://github.com/GoogleCloudPlatform/kubernetes-engine-samples
     cd kubernetes-engine-samples/quickstarts/hello-app-redis/manifests
    
  3. 기본 환경 변수를 설정합니다.

     gcloud config set project PROJECT-ID
     gcloud config set compute/zone COMPUTE-ZONE
    

    다음 값을 바꿉니다.

출시 채널에 등록된 GKE 클러스터 만들기

GKE 클러스터를 만들려면 다음 안내를 따르세요.

  1. 노드가 3개인 redis-test라는 클러스터를 만듭니다.

    gcloud container clusters create redis-test \
        --num-nodes=3 \
        --release-channel regular
    

    클러스터가 생성되면 다음 예시와 비슷한 출력이 표시됩니다.

      NAME: redis-test
      LOCATION: us-central1-c
      MASTER_VERSION: 1.22.10-gke.600
      MASTER_IP: 34.69.67.7
      MACHINE_TYPE: e2-medium
      NODE_VERSION: 1.22.10-gke.600
      NUM_NODES: 3
      STATUS: RUNNING
    
  2. 클러스터와 통신하도록 kubectl을 구성합니다.

    gcloud container clusters get-credentials redis-test
    

GKE에 Redis 클러스터를 만듭니다.

이 섹션에서는 ConfigMap, StatefulSet헤드리스 서비스를 배포하여 이전에 만든 GKE 클러스터 위에 Redis 클러스터를 추가합니다.

Redis 클러스터를 만들려면 다음 단계를 수행합니다.

  1. Redis 구성을 저장하는 ConfigMap 파일(redis-configmap.yaml)을 참조하세요. 아래 스니펫은 준비 프로브와 활성 프로브 스크립트를 보여줍니다.

    readiness.sh: |-
      #!/bin/sh
    
      pingResponse="$(redis-cli -h localhost ping)"
      if [ "$?" -eq "124" ]; then
        echo "PING timed out"
        exit 1
      fi
    
      if [ "$pingResponse" != "PONG"]; then
        echo "$pingResponse"
        exit 1
      fi
    liveness.sh: |-
      #!/bin/sh
    
      pingResponse="$(redis-cli -h localhost ping | head -n1 | awk '{print $1;}')"
      if [ "$?" -eq "124" ]; then
        echo "PING timed out"
        exit 1
      fi
    
      if [ "$pingResponse" != "PONG"] && [ "$pingResponse" != "LOADING" ] && [ "$pingResponse" != "MASTERDOWN" ]; then
        echo "$pingResponse"
        exit 1
      fi

    readiness.shliveness.sh 스크립트는 redis-cli ping을 사용하여 redis 서버가 실행 중인지 여부를 확인합니다. PONG이 반환되면 Redis 서버가 실행 중인 것입니다. 이러한 스크립트는 redis-cluster.yaml에서 사용됩니다.

    이 ConfigMap의 Redis 매개변수에 대해 자세히 알아보려면 Redis 클러스터 튜토리얼의 Redis 클러스터 구성 매개변수 섹션을 참조하세요.

  2. ConfigMap을 배포합니다.

    kubectl apply -f redis-configmap.yaml
    
  3. 준비 프로브와 활성 프로브의 사용을 보여주는 아래 StatefulSet(redis-cluster.yaml) 스니펫을 참조하세요.

    Kubernetes에서 프로브를 구성하는 방법에 대해 알아보려면 프로브 구성을 참조하세요.

    startupProbe:
      periodSeconds: 5
      timeoutSeconds: 5
      successThreshold: 1
      failureThreshold: 20
      tcpSocket:
        port: redis
    livenessProbe:
      periodSeconds: 5
      timeoutSeconds: 5
      successThreshold: 1
      failureThreshold: 5
      exec:
        command: ["sh", "-c", "/probes/liveness.sh"]
    readinessProbe:
      periodSeconds: 5
      timeoutSeconds: 1
      successThreshold: 1
      failureThreshold: 5
      exec:
        command: ["sh", "-c", "/probes/readiness.sh"]

    노드 풀을 업그레이드할 때 준비 및 활성 프로브를 사용하는 것이 좋습니다. 이렇게 하면 업그레이드 중에 포드가 준비됩니다.

  4. StatefulSet를 배포합니다.

    kubectl apply -f redis-cluster.yaml
    
  5. redis-service.yaml이라는 헤드리스 서비스는 Redis 노드의 연결을 위한 것입니다. 헤드리스 서비스를 만들려면 clusterIP 필드는 None으로 설정됩니다.

    서비스를 배포합니다.

    kubectl apply -f redis-service.yaml
    
  6. 약 2분 동안 기다린 후 다음 명령어를 사용하여 모든 포드가 실행 중인지 확인합니다.

    kubectl get pods
    

    다음과 비슷한 출력이 표시됩니다.

    NAME      READY   STATUS              RESTARTS   AGE
    redis-0   1/1     Running             0          2m29s
    redis-1   1/1     Running             0          2m8s
    redis-2   1/1     Running             0          107s
    redis-3   1/1     Running             0          85s
    redis-4   1/1     Running             0          54s
    redis-5   1/1     Running             0          23s
    
  7. 다음 명령어를 실행하여 영구 볼륨이 생성되었는지 확인합니다.

    kubectl get pv
    

    다음과 비슷한 출력이 표시됩니다.

    NAME       CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS   CLAIM                  STORAGECLASS   REASON   AGE
    pvc-HASH   1Gi        RWO            Delete           Bound    default/data-redis-5   standard                75s
    pvc-HASH   1Gi        RWO            Delete           Bound    default/data-redis-1   standard                2m59s
    pvc-HASH   1Gi        RWO            Delete           Bound    default/data-redis-3   standard                2m16s
    pvc-HASH   1Gi        RWO            Delete           Bound    default/data-redis-2   standard                2m38s
    pvc-HASH   1Gi        RWO            Delete           Bound    default/data-redis-0   standard                3m20s
    pvc-HASH   1Gi        RWO            Delete           Bound    default/data-redis-4   standard                104s
    

    이 출력에서 HASH는 각 영구 볼륨 이름에 연결된 해시를 나타냅니다.

Redis 클러스터에 역할 할당

구성이 완료되면 Redis 클러스터에 역할을 할당합니다.

다음 스크립트는 포드 IP 주소를 가져온 후 각 포드 IP 주소를 명령어에 전달하여 리더 및 팔로워 역할을 할당합니다.

#!/bin/bash
# Usage: ./roles.sh

urls=$(kubectl get pods -l app=redis -o jsonpath='{range.items[*]}{.status.podIP} ')
command="kubectl exec -it redis-0 -- redis-cli --cluster create --cluster-replicas 1 "

for url in $urls
do
    command+=$url":6379 "
done

echo "Executing command: " $command
$command

Redis 클러스터에 역할을 할당하려면 다음 단계를 완료하세요.

  1. 스크립트를 실행합니다.

    chmod +x ./roles.sh
    ./roles.sh
    
  2. 메시지가 표시되면 yes를 입력합니다.

  3. Redis 노드에 로그인하여 역할을 확인합니다. 예를 들어 redis-0에 리더 역할이 있는지 확인하려면 다음 명령어를 실행합니다.

    kubectl exec -it redis-0 -- redis-cli role
    

    다음과 비슷한 출력이 표시됩니다.

    1) "master"
    2) (integer) 574
    3) 1) 1) "10.28.2.3"
           2) "6379"
           3) "574"
    

Redis 클라이언트 애플리케이션 배포

만든 GKE 클러스터에 애플리케이션을 배포하려면 애플리케이션 배포를 정의합니다. app-deployment.yaml이라는 파일에는 애플리케이션 배포 정의가 포함됩니다.

이 배포에서 사용되는 프로브 및 포드 어피니티 규칙에 대해 자세히 알아보려면 GKE 권장사항: 가용성이 높은 클러스터 설계 및 빌드를 참조하세요.

배포를 만들려면 다음 단계를 완료하세요.

  1. 배포를 적용합니다.

    kubectl apply -f app-deployment.yaml
    
  2. 부하 분산기를 통해 애플리케이션을 노출합니다.

    kubectl expose deployment hello-web \
        --type=LoadBalancer \
        --port 80 \
        --target-port 8080
    
  3. 약 1분간 기다린 후 다음 명령어를 실행하여 애플리케이션의 외부 IP 주소를 검색합니다.

    kubectl get service
    

    출력에서 hello-web's EXTERNAL-IP 열에 나열된 값을 복사합니다.

    NAME             TYPE           CLUSTER-IP    EXTERNAL-IP    PORT(S)              AGE
    hello-web        LoadBalancer   10.13.10.55   EXTERNAL_IP   80:30703/TCP         166m
    
  4. 웹브라우저에 EXTERNAL_IP를 붙여 넣어 애플리케이션이 작동하는지 확인합니다. 다음과 비슷한 출력이 표시됩니다.

    I have been hit [1] times since deployment!
    

    방문 번호를 기록합니다. 애플리케이션 중단 테스트 섹션에서 이 방문 번호를 사용해야 합니다.

  5. 방금 복사한 EXTERNAL_IP의 변수를 설정합니다. 다음 섹션에서 애플리케이션을 테스트할 스크립트를 만들 때 이 값을 사용합니다.

    export IP=EXTERNAL_IP
    

노드 풀 업그레이드 권장사항 구성

스테이트풀(Stateful) 애플리케이션의 권장사항을 수행하여 노드 풀 업그레이드 중 가용성을 최적화합니다.

포드 중단 예산(PDB) 설정

포드 중단 예산을 만들어 자발적 중단 중에 동시에 다운되는 복제된 포드 수를 제한합니다. 이 기능은 업그레이드 중에 사용 가능한 복제본 수에 대한 쿼럼이 필요한 스테이트풀(Stateful) 애플리케이션에 유용합니다.

apiVersion: policy/v1
kind: PodDisruptionBudget
metadata:
  name: redis-pdb
spec:
  minAvailable: 3
  selector:
    matchLabels:
      app: redis

PDB 정의에서 각 항목의 의미는 다음과 같습니다.

  • app은 이 PDB가 적용되는 애플리케이션을 지정합니다.
  • minAvailable은 중단 중에 사용할 수 있는 최소 포드 수를 설정합니다. 값 또는 백분율(예: 30%)일 수 있습니다.
  • maxUnavailable은 서비스 중단 중에 사용할 수 없는 최대 포드 수를 설정합니다. 값 또는 백분율일 수도 있습니다.

PDB를 설정하려면 다음 단계를 수행합니다.

  1. PDB를 배포합니다.

    kubectl apply -f pdb-minavailable.yaml
    
  2. PDB가 생성되었는지 확인합니다.

    kubectl get pdb
    

유지보수 기간 및 유지보수 제외 설정

노드 자동 업그레이드는 업그레이드 프로세스를 간소화하고, 제어 영역이 사용자를 대신하여 업그레이드될 때 클러스터의 노드를 최신 상태로 유지합니다. 이 기능은 기본적으로 사용하도록 설정되어 있습니다. 자세한 내용은 노드 자동 업그레이드를 참조하세요.

유지보수 기간 및 유지보수 제외를 사용하여 기간을 설정하고 GKE 클러스터에서 유지보수가 수행되거나 될 수 없는 시기를 제어합니다.

  1. 유지보수 기간은 2022년 8월 19일 UTC를 기준으로 오전 2시에 시작해서 4시간 후에 종료됩니다. 이 유지보수 기간은 매일 실행됩니다. 이 기간 중에는 자동 유지보수가 허용됩니다.

    gcloud container clusters update redis-test \
       --maintenance-window-start 2022-08-19T02:00:00Z \
       --maintenance-window-end 2022-08-19T06:00:00Z \
       --maintenance-window-recurrence FREQ=DAILY
    
  2. 새해 휴일 동안 유지보수를 차단하는 제외 기간을 설정합니다. 이 유지보수 제외에는 no_upgrades 범위가 사용됩니다. 이 기간에는 어떤 종류의 자동 유지보수도 허용되지 않습니다. 자세한 내용은 제외할 유지보수 범위를 참조하세요.

    gcloud container clusters update redis-test \
       --add-maintenance-exclusion-name new-year \
       --add-maintenance-exclusion-start 2022-12-26T00:00:00Z \
       --add-maintenance-exclusion-end 2023-01-02T02:00:00Z \
       --add-maintenance-exclusion-scope no_upgrades
    
  3. 유지보수 기간 및 제외가 적용되었는지 확인합니다. maintenancePolicy: 아래를 살펴봅니다.

    gcloud container clusters describe redis-test
    

자세한 내용은 유지보수 기간 및 제외 구성을 참조하세요.

노드 업그레이드 전략 구성

GKE 클러스터에서 노드에 사용할 수 있는 두 가지 노드 풀 업그레이드 전략은 블루-그린 업그레이드일시 급증 업그레이드입니다. 자세한 내용은 노드 업그레이드 전략을 참조하세요.

블루/그린 업그레이드

워크로드가 중단에 대한 내결함성이 낮고 리소스 사용량이 더 많아서 일시적으로 비용이 증가하는 경우 블루-그린 업그레이드를 선택합니다.

다음 명령어를 실행하여 현재 노드 풀을 블루=그린 업그레이드 전략으로 변경합니다.

gcloud container node-pools update default-pool \
--cluster=redis-test \
--enable-blue-green-upgrade \
--zone COMPUTE-ZONE \
--node-pool-soak-duration=120s

이 튜토리얼에서는 노드 풀 흡수 시간을 2분으로 설정하여 흡수 노드 풀 단계에서 시간을 절약합니다. 이 단계는 블루 풀 노드가 드레이닝된 후 워크로드 상태를 확인하는 데 사용됩니다. 노드 풀 흡수 기간을 1시간(3,600초) 또는 애플리케이션에 가장 적합한 기간으로 설정하는 것이 좋습니다.

포드 할당 관리에 대한 자세한 내용은 특정 노드 풀에 포드 배포특정 노드 풀에 서비스 배포를 참조하세요.

블루-그린 업그레이드 구성에 대한 자세한 내용은 블루-그린 업그레이드 구성을 참조하세요.

일시 급증 업그레이드

비용 최적화가 중요하고 워크로드가 60분 이내의 단계적 종료를 허용할 수 있는 경우 일시 급증 업그레이드를 선택합니다(GKE에서 최대 60분까지 PDB 지원).

다음 명령어를 실행하여 현재 노드 풀을 일시 급증 업그레이드 전략으로 변경합니다.

gcloud container node-pools update default-pool \
--max-surge-upgrade=1 \
--max-unavailable-upgrade=0 \
--cluster=redis-test

이 구성(maxSurge=1maxUnavailable=0)을 사용하면 업그레이드 중 노드 풀에 일시 급증 노드 1개만 추가할 수 있으므로 한 번에 노드 한 개만 업그레이드할 수 있습니다. 이 설정은 보수적으로 진행하면서 업그레이드 중 포드 재시작 속도를 높입니다.

일시 급증 업그레이드 구성에 대한 자세한 내용은 일시 급증 업그레이드 구성을 참조하세요.

현재 노드 풀 구성을 확인합니다.

   gcloud container node-pools describe default-pool \
   --cluster redis-test \
   --zone COMPUTE-ZONE

노드 풀 보기에 대한 자세한 내용은 클러스터의 노드 풀 보기를 참조하세요.

애플리케이션 테스트

이 섹션에서는 요청을 애플리케이션으로 전송하는 스크립트와 요청의 성공률을 측정하는 스크립트, 이렇게 2개의 스크립트를 사용합니다. 이 스크립트를 사용하여 클러스터를 업그레이드할 때 발생하는 상황을 측정합니다.

스크립트를 만들려면 다음 안내를 따르세요.

  1. 스크립트가 포함된 디렉터리로 변경합니다.

    cd
    cd kubernetes-engine-samples/quickstarts/hello-app-redis/scripts
    
  2. 애플리케이션에 초당 쿼리 수(QPS) 요청을 전송하는 generate_load.sh라는 스크립트를 참조하세요. 스크립트는 HTTP 응답 코드를 현재 디렉터리에 output 파일로 저장합니다. output 값은 다음 단계에서 만드는 스크립트에 사용됩니다.

    #!/bin/bash
    # Usage: ./generate_load.sh <IP> <QPS>
    
    IP=$1
    QPS=$2
    
    while true
      do for N in $(seq 1 $QPS)
        do curl -I -m 5 -s -w "%{http_code}\n" -o /dev/null http://${IP}/ >> output &
        done
      sleep 1
    done
  3. generate_load.sh에서 생성된 출력을 기반으로 성공률을 계산하는 print_error_rate.sh라는 스크립트를 참조하세요.

    #!/bin/bash
    # Usage: watch ./print_error_rate.sh
    
    TOTAL=$(cat output | wc -l);
    SUCCESS=$(grep "200" output |  wc -l);
    ERROR1=$(grep "000" output |  wc -l)
    ERROR2=$(grep "503" output |  wc -l)
    ERROR3=$(grep "500" output |  wc -l)
    SUCCESS_RATE=$(($SUCCESS * 100 / TOTAL))
    ERROR_RATE=$(($ERROR1 * 100 / TOTAL))
    ERROR_RATE_2=$(($ERROR2 * 100 / TOTAL))
    ERROR_RATE_3=$(($ERROR3 * 100 / TOTAL))
    echo "Success rate: $SUCCESS/$TOTAL (${SUCCESS_RATE}%)"
    echo "App network Error rate: $ERROR1/$TOTAL (${ERROR_RATE}%)"
    echo "Resource Error rate: $ERROR2/$TOTAL (${ERROR_RATE_2}%)"
    echo "Redis Error rate: $ERROR3/$TOTAL (${ERROR_RATE_3}%)"
  4. 스크립트를 실행할 권한을 자신에게 부여합니다.

    chmod u+x generate_load.sh print_error_rate.sh
    
  5. QPS 수에 대한 변수를 설정합니다. 이 값은 EXTERNAL_IP에 대해 설정하는 변수와 마찬가지로 generate_load.sh 스크립트에 사용됩니다. 값을 40으로 설정하는 것이 좋습니다.

    export QPS=40
    
  6. generate_load.sh 스크립트를 실행하여 QPS 전송을 시작합니다.

    ./generate_load.sh $IP $QPS 2>&1
    
  7. generate_load.sh 스크립트를 실행 중 상태로 두고 새 터미널을 엽니다. 새 터미널에서 print_error_rate.sh 스크립트를 실행하여 오류율을 확인합니다.

    cd
    cd kubernetes-engine-samples/quickstarts/hello-app-redis/scripts
    watch ./print_error_rate.sh
    

    QPS가 생성되면 100% 성공률과 0% 오류율이 표시됩니다.

  8. 두 스크립트 모두 실행 중 상태로 두고 다음 섹션에 대비하여 세 번째 터미널을 엽니다.

클러스터를 업그레이드합니다.

클러스터를 업그레이드하려면 다음 단계를 수행합니다.

  1. redis-test 클러스터가 사용 중인 GKE 버전을 확인합니다.

    V=$(gcloud container clusters describe redis-test | grep "version:" | sed "s/version: //")
    echo $V
    

    다음 예시와 비슷한 출력이 표시됩니다. 1.22.9-gke.2000.

  2. 사용 가능한 Kubernetes 버전 목록을 가져옵니다.

    gcloud container get-server-config
    
  3. 버전 목록에서 validMasterVersions: 섹션을 찾고 이전 단계에서 검색한 redis-cluster 버전을 찾습니다. 버전 편향을 방지하려면 목록에서 redis-cluster 버전 바로 위에 있는 버전을 복사합니다.

  4. 클러스터의 제어 영역을 선택한 버전으로 업그레이드하고 메시지가 표시되면 y를 입력합니다.

    gcloud container clusters upgrade redis-test \
        --master \
        --cluster-version VERSION
    

    VERSION을 이전 단계의 목록에서 선택한 버전으로 바꿉니다.

    제어 영역 업그레이드에는 몇 분 정도 걸립니다.

  5. 클러스터 노드를 선택한 버전으로 업그레이드하고 메시지가 표시되면 y를 입력합니다.

    gcloud container clusters upgrade redis-test \
        --cluster-version=VERSION \
        --node-pool=default-pool
    

    VERSION을 목록에서 선택한 버전으로 바꿉니다.

워크로드 중단 테스트

이 섹션에서는 애플리케이션 상태를 테스트하고 워크로드 중단을 관찰합니다.

  1. ./print_error_rate.sh를 실행하는 터미널 창으로 돌아가서 업그레이드 중에 성공률이 어떻게 바뀌는지 관찰합니다. 업그레이드를 위해 노드가 중지됨에 따라 성공률이 약간 감소하고 앱 네트워크 오류율이 약간 증가합니다.

    Success rate 필드에는 성공한 웹사이트 방문 수가 표시됩니다. 이 값을 기록해 둡니다.

  2. 관련 터미널에 CTRL+C를 입력하여 두 스크립트 실행을 중지합니다.

  3. IP 주소(Redis 클라이언트 애플리케이션 배포 섹션에서 복사한 EXTERNAL_IP)를 브라우저에 입력하여 애플리케이션의 웹사이트로 돌아갑니다.

  4. 애플리케이션의 방문 번호를 확인합니다. 표시되는 숫자는 다음과 같아야 합니다.

    ORIGINAL_VISIT_NUMBER + SUCCESSFUL_VISIT_NUMBER

    여기서 ORIGINAL_VISIT_NUMBERRedis 클라이언트 애플리케이션 배포의 마지막 단계에서 기록한 번호이고, SUCCESSFUL_VISIT_NUMBER는 이 섹션의 첫 번째 단계에서 기록한 값입니다.

삭제

튜토리얼을 완료한 후에는 만든 리소스를 삭제하여 할당량 사용을 중지하고 요금이 청구되지 않도록 할 수 있습니다. 다음 섹션은 이러한 리소스를 삭제하거나 사용 중지하는 방법을 설명합니다.

프로젝트 삭제

비용이 청구되지 않도록 하는 가장 쉬운 방법은 튜토리얼에서 만든 프로젝트를 삭제하는 것입니다.

프로젝트를 삭제하는 방법은 다음과 같습니다.

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

    리소스 관리로 이동

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

클러스터 삭제

이 튜토리얼에서 만든 클러스터를 삭제하려면 다음 명령어를 실행합니다.

gcloud container clusters delete redis-test

다음 단계