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
Namespace の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
Namespace 内のすべての 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 インスタンスの Pod 名を取得します。
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 インスタンスの Pod 名。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
リソースの新しい Pod を作成します。kubectl apply -f ./vtxwb-data --kubeconfig KUBECONFIG_PATH
KUBECONFIG_PATH
は、クラスタ内の kubeconfig ファイルのパスに置き換えます。vtxwb-data
Pod が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 インスタンスの Pod 名。
データのコピー後、復元されたデータは
/home/jovyan/restore
ディレクトリで使用できます。復元されたデータにアクセスするために作成した Pod を削除します。
kubectl delete pod vtxwb-data -n my-namespace` --kubeconfig KUBECONFIG_PATH
KUBECONFIG_PATH
は、クラスタ内の kubeconfig ファイルのパスに置き換えます。