gkectl로 고급 클러스터 백업 및 복원

이 문서에서는 고급 클러스터가 사용 설정된 Google Distributed Cloud 버전 1.32 이상의 관리자 및 사용자 클러스터를 백업하고 복원하는 방법을 설명합니다. 백업 및 복원 기능은 버전 1.32에서 미리보기로 제공되며 버전 1.33 이상에서 정식 버전으로 제공됩니다.

gkectl 백업 및 복원 프로세스에는 영구 볼륨이 포함되지 않습니다. 로컬 볼륨 프로비저닝 도구 (LVP)로 생성된 모든 볼륨은 변경되지 않은 상태로 남습니다.

클러스터 백업

gkectl backup cluster 명령어는 지정된 클러스터의 etcd 스토어와 PKI 인증서의 클러스터 정보를 tar 파일에 추가합니다. etcd 저장소는 모든 클러스터 데이터에 대해 Kubernetes에서 지원되는 저장소이며 클러스터 상태 관리를 위해 필요한 모든 Kubernetes 객체 및 커스텀 객체를 포함합니다. PKI 인증서는 전송 계층 보안 (TLS)을 통한 인증에 사용됩니다. 이 데이터는 클러스터의 컨트롤 플레인이나 고가용성 (HA) 배포에 사용되는 컨트롤 플레인 중 하나에서 백업됩니다.

백업 tar 파일에는 서비스 계정 키 및 SSH 키를 포함한 민감한 사용자 인증 정보가 포함됩니다. 안전한 장소에 백업 파일을 보관하세요. 의도치 않게 파일이 노출되지 않도록 백업 프로세스는 인메모리 파일만 사용합니다.

스냅샷 데이터를 비교적 최신 상태로 유지하기 위해 클러스터를 정기적으로 백업합니다. 클러스터의 중대 변경사항 빈도에 맞게 백업 빈도를 조정합니다.

시작하기 전에 사용자 인증 정보 및 모든 노드에 대한 SSH 연결을 포함하여 클러스터가 올바르게 작동하는지 확인합니다. 백업 프로세스의 의도는 알려진 정상 상태에서 클러스터를 캡처해서 큰 문제가 발생했을 때 작업을 복원할 수 있도록 하기 위한 것입니다.

클러스터를 백업하려면 다음 안내를 따르세요.

  1. 다음 명령어를 실행하여 클러스터를 확인합니다.

    gkectl diagnose cluster --cluster-name CLUSTER_NAME \
        --kubeconfig ADMIN_KUBECONFIG
    

    다음을 바꿉니다.

    • CLUSTER_NAME: 백업하려는 클러스터의 이름

    • ADMIN_KUBECONFIG: 관리자 클러스터의 kubeconfig 파일 경로

  2. 해당 명령어를 실행하여 클러스터를 백업합니다.

    관리자 클러스터

    gkectl backup admin --kubeconfig ADMIN_KUBECONFIG
    

    사용자 클러스터

    gkectl backup cluster --cluster-name CLUSTER_NAME \
        --kubeconfig ADMIN_KUBECONFIG
    

기본적으로 백업 tar 파일은 관리자 워크스테이션의 gkectl-workspace/backups 디렉터리에 저장됩니다. tar 파일은 이름이 CLUSTER_NAME_backup_TIMESTAMP.tar.gz입니다. 여기서 CLUSTER_NAME은 백업되는 클러스터의 이름이고 TIMESTAMP는 백업이 수행된 날짜 및 시간입니다. 예를 들어 클러스터 이름이 testuser인 경우 백업 파일 이름은 testuser_backup_2025-08-23T150405Z0700.tar.gz가 됩니다.

원하는 경우 --backup-file 플래그를 사용하여 백업 파일의 이름과 위치를 다르게 지정할 수 있습니다. 예를 들면 다음과 같습니다.

gkectl backup cluster testuser \
    --kubeconfig admin-cluster/kubeconfig \
    --backup-file cluster-backups/testuser-backup-aug-23-2025.tar.gz

백업 파일은 1년 후 만료됩니다. 만료된 백업 파일은 클러스터 복원 프로세스에 사용되지 않습니다.

vSphere에 백업

관리자 워크스테이션에 저장되는 것 외에도 관리자 및 사용자 클러스터의 백업 파일이 vSphere에 업로드되도록 백업을 구성하려면 다음 단계를 따르세요.

  1. clusterBackup.datastore 필드를 관리자 클러스터 구성 파일에 추가합니다.

    clusterBackup:
        datastore: DATASTORE
    

    DATASTORE을 백업을 저장할 데이터 스토어로 바꿉니다. Datastore는 관리자 클러스터와 동일한 데이터 센터에 있어야 합니다. 백업은 지정된 데이터 스토어의 anthos/CLUSTER_NAME/backup 디렉터리에 있습니다.

  2. 관리자 클러스터를 업데이트합니다.

    gkectl update admin --kubeconfig ADMIN_KUBECONFIG \
        --config ADMIN_CONFIG
    

    다음을 바꿉니다.

    • ADMIN_KUBECONFIG: 관리자 클러스터의 kubeconfig 파일 경로

    • ADMIN_CONFIG: 관리자 클러스터 구성 파일의 경로입니다.

기본적으로 gkectl backup 명령어는 vSphere에 가장 최근 백업 파일 3개를 저장하고 이전 백업 파일을 삭제합니다. 이전 백업 파일을 유지하려면 버전 1.32.100 이상에서 사용할 수 있는 --keep-all-backups 플래그를 추가합니다.

클러스터 복원

백업에서 클러스터를 복원하는 것은 최후의 수단으로서, 클러스터에 치명적인 장애가 발생하여 그 밖의 다른 방법으로는 정상적인 서비스로 돌아갈 수 없을 때만 사용해야 합니다. etcd 데이터가 손상되었거나 etcd 포드가 비정상 종료 루프에 있을 때가 그 예에 해당합니다.

세 컨트롤 플레인 노드가 모두 실패한 경우에만 gkectl restore 명령어를 사용하세요.

  • 하나의 노드만 실패하고 관리자 클러스터 구성 파일에서 autoRepair.enabledtrue로 설정된 경우 실패한 노드가 자동으로 복구됩니다. autoRepair.enabled가 구성되지 않은 경우 관리자 클러스터 구성 파일에 추가하고 gkectl update admin을 실행합니다. 업데이트 후 노드가 자동으로 다시 생성됩니다.

  • 컨트롤 플레인 노드 두 개가 실패한 경우 이 페이지의 쿼럼 복원 섹션을 참고하세요.

백업 tar 파일에는 서비스 계정 키 및 SSH 키를 포함한 민감한 사용자 인증 정보가 포함됩니다. 의도치 않게 파일이 노출되는 일이 없도록 Google Distributed Cloud 복원 프로세스는 인메모리 파일만 사용합니다.

클러스터를 복원하기 전에 다음 조건을 충족하는지 확인하세요.

  • 백업 당시 클러스터에 제공된 모든 컨트롤 플레인 노드 머신이 올바르게 작동하고 연결되는지 확인합니다.
  • 백업 당시 사용된 SSH 키로 노드 간 SSH 연결이 작동합니다. 이러한 SSH 키는 복원 프로세스 중에 복구됩니다.
  • 백업 당시에 사용된 서비스 계정 키가 여전히 활성 상태입니다. 이러한 서비스 계정 키는 복원된 클러스터를 위해 복구됩니다.

클러스터를 복원하려면 다음 안내를 따르세요.

  1. 해당 명령어를 실행하여 클러스터를 복원합니다.

    관리자 클러스터

    gkectl restore admin --backup-file BACKUP_FILE \
        --config ADMIN_CONFIG
    

    다음을 바꿉니다.

    • BACKUP_FILE: 사용 중인 백업 파일의 경로 및 이름

    • ADMIN_CONFIG: 관리자 클러스터 구성 파일의 경로입니다.

    사용자 클러스터

    gkectl restore cluster --cluster-name CLUSTER_NAME \
        --backup-file BACKUP_FILE \
        --kubeconfig ADMIN_KUBECONFIG
    

    다음을 바꿉니다.

    • CLUSTER_NAME: 복원할 클러스터의 이름

    • BACKUP_FILE: 사용 중인 백업 파일의 경로 및 이름

    • ADMIN_KUBECONFIG: 관리자 클러스터 kubeconfig 파일의 경로

    복원 프로세스가 종료되면 작업공간 디렉터리 gkectl-workspace에서 복원된 클러스터에 대해 새로운 kubeconfig 파일이 생성됩니다.

  2. 복원이 완료되면 다음 명령어를 실행하여 복원이 성공적으로 완료되었는지 확인합니다.

    gkectl diagnose cluster --cluster-name CLUSTER_NAME \
        --kubeconfig GENERATED_KUBECONFIG
    

    GENERATED_KUBECONFIG를 생성된 kubeconfig 파일로 바꿉니다.

쿼럼 복원

클러스터에서 제어 영역 노드 두 개가 실패한 경우 gkectl restore 명령어를 사용하여 쿼럼을 복원할 수 있습니다. 쿼럼을 복원할 때는 gkectl restore 명령어에 백업 파일을 지정하는 대신 작동하는 제어 영역 노드의 IP 주소를 지정합니다.

명령어를 실행하기 전에 다음 조건을 충족하는지 확인하세요.

쿼럼을 복원하려면 클러스터 유형에 해당하는 명령어를 실행합니다.

관리자 클러스터

gkectl restore admin --kubeconfig ADMIN_KUBECONFIG \
    --config ADMIN_CONFIG \
    --control-plane-node WORKING_NODE_IP \
    --ssh-key ADMIN_SSH_KEY_PATH

다음을 바꿉니다.

  • ADMIN_KUBECONFIG: 관리자 클러스터의 kubeconfig 파일 경로

  • ADMIN_CONFIG: 관리자 클러스터 구성 파일의 경로입니다.

  • WORKING_NODE_IP: 작동 중인 컨트롤 플레인 노드의 IP 주소입니다.

  • ADMIN_SSH_KEY_PATH: 관리자 클러스터 SSH 키 경로입니다.

사용자 클러스터

gkectl restore cluster --cluster-name CLUSTER_NAME \
    --kubeconfig ADMIN_KUBECONFIG \
    --control-plane-node WORKING_NODE_IP \
    --ssh-key USER_SSH_KEY_PATH

다음을 바꿉니다.

  • CLUSTER_NAME: 복원할 클러스터의 이름

  • ADMIN_KUBECONFIG: 관리자 클러스터 kubeconfig 파일의 경로

  • WORKING_NODE_IP: 작동 중인 컨트롤 플레인 노드의 IP 주소입니다.

  • USER_SSH_KEY_PATH: 사용자 클러스터 SSH 키 경로입니다.

문제 해결

백업 또는 복원 프로세스에 문제가 있는 경우 다음 섹션이 문제를 해결하는 데 도움이 될 수 있습니다.

추가 지원이 필요하면 Cloud Customer Care팀에 문의하세요.

백업 또는 복원 중 메모리 부족

gkectl 명령어를 실행하는 워크스테이션에 RAM이 많지 않은 경우 백업 또는 복원 프로세스를 수행하기에 메모리가 충분하지 않을 수 있습니다. 필요한 경우 백업 명령어에서 --use-disk 매개변수를 사용하여 백업 또는 복원 작업을 처리할 임시 스크래치 디스크를 만들고 사용합니다. 파일 권한을 보존하려면 이 매개변수가 파일의 권한을 수정하므로 루트 사용자로 명령어를 실행해야 합니다 (또는 sudo 사용).

백업을 통해 복원 프로세스가 중단된 후 SSH 키 새로고침

백업을 수행한 후 SSH 키를 새로고침하면 복원 프로세스 중 SSH 관련 작업이 실패할 수 있습니다. 이 경우 새 SSH 키가 복원 프로세스에 유효하지 않게 됩니다. 이 문제를 해결하려면 임시로 원래 SSH 키를 추가한 후 복원을 수행합니다. 복원 프로세스가 완료되면 SSH 키를 순환할 수 있습니다.