Google Distributed Cloud (GDC) 에어 갭을 사용하면 JupyterLab 인스턴스의 홈 디렉터리에서 백업을 만들고 데이터를 복원할 수 있습니다.
이 페이지에서는 Vertex AI Workbench 노트북 데이터의 백업을 만들고 복원하는 방법을 설명합니다. Vertex AI를 처음 사용하는 경우 Vertex AI Workbench에 대해 자세히 알아보세요.
시작하기 전에
복원된 데이터를 복사하는 데 필요한 권한을 얻으려면 조직 IAM 관리자에게 사용자 클러스터 개발자 (user-cluster-developer
) 역할을 부여해 달라고 요청하세요.
JupyterLab 인스턴스 데이터 백업 및 복원
보호된 애플리케이션을 정의하여 개별 JupyterLab 인스턴스의 홈 디렉터리 또는 프로젝트에 있는 모든 JupyterLab 인스턴스의 홈 디렉터리를 한 번에 백업합니다.
백업을 예약하려는 클러스터에 ProtectedApplication
커스텀 리소스를 만듭니다. 백업 및 복원 계획은 보호된 애플리케이션을 사용하여 리소스를 선택합니다. 보호된 애플리케이션을 만드는 방법에 관한 자세한 내용은 보호된 애플리케이션 전략을 참고하세요.
ProtectedApplication
커스텀 리소스에는 다음 필드가 포함됩니다.
필드 | 설명 | |||
---|---|---|---|---|
resourceSelection |
ProtectedApplication 객체가 백업 또는 복원을 위해 리소스를 선택하는 방식입니다. |
|||
type |
리소스를 선택하는 방법입니다. Selector 유형은 일치하는 라벨이 있는 리소스를 선택해야 함을 나타냅니다. |
|||
selector |
선택 규칙입니다. 이 필드에는 다음 하위 필드가 포함됩니다. | |||
matchLabels |
ProtectedApplication 객체가 리소스를 일치시키는 데 사용하는 라벨입니다. 이 필드에는 다음 하위 필드가 포함됩니다. |
|||
app.kubernetes.io/part-of |
이 애플리케이션이 속한 상위 수준 애플리케이션의 이름입니다. JupyterLab 인스턴스의 상위 수준 애플리케이션으로 Vertex AI Workbench를 선택합니다. | |||
app.kubernetes.io/component |
아키텍처 내의 구성요소입니다. JupyterLab 인스턴스에 스토리지를 제공하는 Vertex AI Workbench의 리소스를 선택합니다. | |||
app.kubernetes.io/instance |
애플리케이션 인스턴스를 식별하는 고유한 이름입니다. 범위를 좁혀 JupyterLab 인스턴스를 선택합니다. 이 값은 GDC 콘솔의 JupyterLab 인스턴스 이름과 동일합니다. |
ProtectedApplication
커스텀 리소스를 사용하여 다음 예와 같이 단일 JupyterLab 인스턴스 또는 프로젝트의 모든 JupyterLab 인스턴스의 스토리지를 선택합니다.
단일 JupyterLab 인스턴스의 스토리지 선택:
다음 예에서는
my-project
네임스페이스에서my-instance-name
이라는 JupyterLab 인스턴스의 스토리지를 선택하는ProtectedApplication
커스텀 리소스를 보여줍니다.apiVersion: gkebackup.gke.io/v1 kind: ProtectedApplication metadata: name: my-protected-application namespace: my-project spec: resourceSelection: type: Selector selector: matchLabels: app.kubernetes.io/part-of: vtxwb app.kubernetes.io/component: storage app.kubernetes.io/instance: my-instance-name
모든 JupyterLab 인스턴스의 스토리지를 선택합니다.
다음 예시에서는
my-project
네임스페이스의 모든 JupyterLab 인스턴스에 대한 스토리지를 선택하는ProtectedApplication
커스텀 리소스를 보여줍니다.apiVersion: gkebackup.gke.io/v1 kind: ProtectedApplication metadata: name: my-protected-application namespace: my-project spec: resourceSelection: type: Selector selector: matchLabels: app.kubernetes.io/part-of: vtxwb app.kubernetes.io/component: storage
이 예시에서는 모든 JupyterLab 인스턴스를 선택하므로
app.kubernetes.io/instance
라벨이 포함되지 않습니다.
JupyterLab 인스턴스에서 데이터를 백업하고 복원하려면 정의한 ProtectedApplication
커스텀 리소스를 사용하여 백업 세트를 계획하고 복원 세트를 계획합니다.
복원된 데이터를 새 JupyterLab 인스턴스에 복사
다음 단계에 따라 JupyterLab 인스턴스의 PersistentVolumeClaim
리소스에서 복원된 데이터를 새 JupyterLab 인스턴스로 복사합니다.
- 기본 요건 충족
- 복원된 데이터를 복사하기 위해 JupyterLab 인스턴스와 연결된 JupyterLab 노트북을 만듭니다.
노트북을 만든 JupyterLab 인스턴스의 포드 이름을 가져옵니다.
kubectl get pods -l notebook-name=INSTANCE_NAME -n PROJECT_NAMESPACE
다음을 바꿉니다.
INSTANCE_NAME
: 구성한 JupyterLab 인스턴스의 이름입니다.PROJECT_NAMESPACE
: JupyterLab 인스턴스를 만든 프로젝트 네임스페이스입니다.
JupyterLab 인스턴스가 실행 중인 이미지의 이름을 가져옵니다.
kubectl get pods POD_NAME -n PROJECT_NAMESPACE -o jsonpath="{.spec.containers[0].image}"
다음을 바꿉니다.
POD_NAME
: JupyterLab 인스턴스의 포드 이름입니다.PROJECT_NAMESPACE
: JupyterLab 인스턴스를 만든 프로젝트 네임스페이스입니다.
복원된
PersistentVolumeClaim
리소스의 이름을 찾습니다.kubectl get pvc -l app.kubernetes.io/part-of=vtxwb,app.kubernetes.io/component=storage,app.kubernetes.io/instance=RESTORED_INSTANCE_NAME -n PROJECT_NAMESPACE
다음을 바꿉니다.
RESTORED_INSTANCE_NAME
: 복원한 JupyterLab 인스턴스의 이름입니다.PROJECT_NAMESPACE
: JupyterLab 인스턴스를 만든 프로젝트 네임스페이스입니다.
다음 콘텐츠로
vtxwb-data.yaml
이라는 YAML 파일을 만듭니다.apiVersion: v1 kind: Pod metadata: name: vtxwb-data namespace: PROJECT_NAMESPACE labels: aiplatform.gdc.goog/service-type: workbench spec: containers: - args: - sleep infinity command: - bash - -c image: IMAGE_NAME imagePullPolicy: IfNotPresent name: vtxwb-data resources: limits: cpu: "1" memory: 1Gi requests: cpu: "1" memory: 1Gi terminationMessagePath: /dev/termination-log terminationMessagePolicy: File volumeMounts: - mountPath: /home/jovyan name: restore-data workingDir: /home/jovyan volumes: - name: restore-data persistentVolumeClaim: claimName: RESTORED_PVC_NAME
다음을 바꿉니다.
PROJECT_NAMESPACE
: JupyterLab 인스턴스를 만든 프로젝트 네임스페이스입니다.IMAGE_NAME
: JupyterLab 인스턴스가 실행 중인 컨테이너 이미지의 이름입니다.RESTORED_PVC_NAME
: 복원된PersistentVolumeClaim
리소스의 이름입니다.
복원된
PersistentVolumeClaim
리소스의 새 포드를 만듭니다.kubectl apply -f ./vtxwb-data --kubeconfig KUBECONFIG_PATH
KUBECONFIG_PATH
를 클러스터의 kubeconfig 파일 경로로 바꿉니다.vtxwb-data
포드가RUNNING
상태가 될 때까지 기다립니다.복원된 데이터를 새 JupyterLab 인스턴스에 복사합니다.
kubectl cp PROJECT_NAMESPACE/vtxwb-data:/home/jovyan ./restore --kubeconfig KUBECONFIG_PATH kubectl cp ./restore PROJECT_NAMESPACE/POD_NAME:/home/jovyan/restore --kubeconfig KUBECONFIG_PATH rm ./restore
다음을 바꿉니다.
PROJECT_NAMESPACE
: JupyterLab 인스턴스를 만든 프로젝트 네임스페이스입니다.KUBECONFIG_PATH
: 클러스터의 kubeconfig 파일 경로입니다.POD_NAME
: JupyterLab 인스턴스의 포드 이름입니다.
데이터를 복사하면 복원된 데이터를
/home/jovyan/restore
디렉터리에서 사용할 수 있습니다.복원된 데이터에 액세스하기 위해 만든 포드를 삭제합니다.
kubectl delete pod vtxwb-data -n my-namespace` --kubeconfig KUBECONFIG_PATH
KUBECONFIG_PATH
를 클러스터의 kubeconfig 파일 경로로 바꿉니다.