이 페이지에서는 백업 계획에서 허용 모드를 사용 설정하는 방법을 설명합니다.
백업 실행 중에 Backup for GKE에서 복원 실패 가능성이 높은 조건이 감지되면 백업 자체가 실패합니다. 실패 원인은 백업의 state_reason 필드에 제공됩니다. Google Cloud 콘솔에서는 이 필드를 상태 이유라고 합니다.
허용 모드 정보
백업 실패가 허용되지 않고 기본 문제를 해결할 수 없는 경우 허용 모드를 사용 설정할 수 있습니다. 허용 모드를 사용하면 백업 프로세스 중에 복원 실패를 일으킬 가능성이 있는 GKE 리소스가 감지되더라도 백업이 성공적으로 완료됩니다. 문제에 대한 세부정보는 백업의 상태 이유 필드에 제공됩니다.
문제를 이해하고 복원 프로세스 중에 해결 방법을 구현할 수 있는 경우에만 이 옵션을 사용하는 것이 좋습니다. 백업의 상태 이유 필드에 표시될 수 있는 오류 메시지 목록과 권장 조치는 백업 실패 문제 해결을 참고하세요.
허용 모드 사용 설정
다음 안내에 따라 허용 모드를 사용 설정합니다.
gcloud
허용 모드를 사용 설정하려면 gcloud beta container backup-restore backup-plans update
명령어를 실행합니다.
gcloud beta container backup-restore backup-plans update BACKUP_PLAN \
--project=PROJECT_ID \
--location=LOCATION
--permissive-mode
다음을 바꿉니다.
BACKUP_PLAN
: 업데이트할 백업 계획의 이름PROJECT_ID
: Google Cloud프로젝트의 IDLOCATION
: 리소스의 컴퓨팅 리전(예:us-central1
). 리소스 위치 정보를 참조하세요.전체 옵션 목록은 gcloud beta container backup-restore backup-plans update 문서를 참조하세요.
콘솔
다음 안내에 따라Google Cloud 콘솔에서 허용 모드를 사용 설정합니다.
Google Cloud 콘솔에서 Google Kubernetes Engine 페이지로 이동합니다.
탐색 메뉴에서 Backup for GKE를 클릭합니다.
백업 계획 탭을 클릭합니다.
클러스터를 확장하고 계획 이름을 클릭합니다.
세부정보 탭을 클릭하여 계획 세부정보를 수정합니다.
수정을 클릭하여 백업 모드가 있는 섹션을 수정합니다.
허용 모드 체크박스를 클릭하고 변경사항 저장을 클릭합니다.
Terraform
기존 google_gke_backup_backup_plan
리소스를 업데이트합니다.
resource "google_gke_backup_backup_plan" "NAME" {
...
backup_config {
permissive_mode = true
...
}
}
다음을 바꿉니다.
NAME
: 업데이트하려는google_gke_backup_backup_plan
의 이름
자세한 내용은 gke_backup_backup_plan을 참조하세요.
백업 실패 문제 해결
다음 표에는 백업의 상태 이유 필드에 표시되는 다양한 백업 실패 메시지에 대한 설명과 권장 조치가 나와 있습니다.
백업 실패 메시지 | 메시지 설명 및 실패 이유 | 권장 작업 |
---|---|---|
|
설명: 클러스터의 커스텀 리소스 정의(CRD)가 원래 apiextensions.k8s.io/v1beta1 로 적용되었으며 apiextensions.k8s.io/v1 에 필요한 구조 스키마가 없습니다.이유: Backup for GKE는 구조적 스키마를 자동으로 정의할 수 없습니다. apiextensions.k8s.io/v1beta1 을 사용할 수 없는 Kubernetes v1.22+ 클러스터에서 CRD를 복원하면 복원이 실패합니다. 이 실패는 CRD로 정의된 커스텀 리소스를 복원할 때 발생합니다.
|
다음 옵션을 사용하는 것이 좋습니다.
허용 모드가 사용 설정된 경우 구조 스키마가 없는 CRD는 Kubernetes v1.22 이상 클러스터에서 백업되지 않습니다. 이러한 백업을 성공적으로 복원하려면 복원에서 CRD가 제공하는 리소스를 제외하거나 복원을 시작하기 전에 대상 클러스터에서 CRD를 만들어야 합니다. |
|
설명: 클러스터의 API 서비스가 잘못 구성되었습니다. 이로 인해 API 경로에 대한 요청이 'API 리소스를 쿼리하지 못했습니다'를 반환합니다. 기본 서비스가 존재하지 않거나 아직 준비되지 않았을 수 있습니다. 이유: Backup for GKE는 사용할 수 없는 API에서 제공하는 리소스를 백업할 수 없습니다. |
API 서비스의 spec.service 에서 기본 서비스를 확인하여 준비되었는지 확인합니다.허용 모드가 사용 설정되면 로드에 실패한 API 그룹의 리소스는 백업되지 않습니다. |
|
설명: Kubernetes v1.23 이하에서 서비스 계정은 보안 비밀로 지원되는 토큰을 자동으로 생성합니다. 하지만 이후 버전에서는 Kubernetes가 이 자동 생성 토큰 기능을 삭제했습니다. 클러스터의 포드가 보안 비밀 볼륨을 컨테이너의 파일 시스템에 마운트했을 수 있습니다. 이유: Backup for GKE에서 자동 생성된 보안 비밀 및 이러한 보안 비밀 볼륨을 마운트하는 포드와 함께 서비스 계정을 복원하면 복원이 성공한 것으로 보입니다. 하지만 Kubernetes가 보안 비밀을 삭제하여 포드가 컨테이너 생성에 멈추고 시작되지 않습니다. |
포드에서 spec.serviceAccountName 필드를 정의합니다. 이 작업을 통해 토큰이 컨테이너의 /var/run/secrets/kubernetes.io/serviceaccount 에 자동으로 마운트됩니다. 자세한 내용은 포드의 서비스 계정 구성 문서를 참고하세요.허용 모드가 사용 설정되면 보안 비밀이 백업되지만 Kubernetes v1.24 이상 클러스터의 포드에 마운트할 수는 없습니다. |
문제가 있는 일반적인 커스텀 리소스 정의 (CRD) 및 권장 조치
다음은 백업 문제가 있는 일반적인 CRD와 문제를 해결하기 위해 권장되는 작업입니다.
capacityrequests.internal.autoscaling.k8s.io
: 이 CRD는 v1.21 클러스터에서 일시적으로 사용되었습니다.kubectl delete crd capacityrequests.internal.autoscaling.k8s.io
를 실행하여 CRD를 삭제합니다.scalingpolicies.scalingpolicy.kope.io
: 이 CRD는 fluentd 리소스를 제어하는 데 사용되었지만 GKE는 fluentbit 사용으로 마이그레이션했습니다.kubectl delete crd scalingpolicies.scalingpolicy.kope.io
를 실행하여 CRD를 삭제합니다.memberships.hub.gke.io
: 멤버십 리소스가 없는 경우kubectl delete crd memberships.hub.gke.io
를 실행하여 CRD를 삭제합니다. 멤버십 리소스가 있는 경우 허용 모드를 사용 설정합니다.applications.app.k8s.io
: 복원 동작을 이해하고 허용 모드를 사용 설정합니다.