스냅샷 설정 File Storage for VPC
가상 프라이빗 클라우드
File Storage for VPC 볼륨 스냅샷은 완전히 새로운 볼륨을 생성하지 않고도 특정 시점의 볼륨 내용을 복사하는 표준화된 방법을 제공합니다. 스냅샷은 zonal( dp2 ) 기반 및 지역(rfs) 기반 스토리지 클래스 모두에서 지원됩니다. 스냅샷에 대한 자세한 내용은 스냅샷 작동 방식에서 확인하세요.
File Storage for VPC에 대한 자세한 정보는 File Storage for VPC 정보를 참조하십시오.
애드온의 File Storage for VPC 스냅샷 지원은 현재 베타 단계입니다.
PVC(파일 공유)가 삭제되면, 해당 파일 공유가 소유한 모든 스냅샷이 삭제됩니다. 이 경우 CSI 볼륨 스냅샷은 유지되지만, VPC의 백엔드 스냅샷은 존재하지 않습니다. 따라서 볼륨은 를 사용하여 삭제해야 oc delete vs <snapshot-name> 합니다.
전제조건
- 클러스터에 File Storage for VPC 애드온이 설치되어 있는지 확인합니다.
- 스냅샷 연산자 공유 iAM의 권한 이 있는지 확인합니다.
앱 작성
예시용 지속적 볼륨 클레임(PVC)을 생성하고 해당 클레임을 참조하는 포드를 배포하십시오.
-
계정에 로그인하십시오. If applicable, target the appropriate resource group. 클러스터에 대한 컨텍스트를 설정하십시오.
-
추가 기능 상태가 이고
normal상태가 인지 확인하십시오Ready.ibmcloud oc cluster addon ls --cluster CLUSTER-IDName Version Health State Health Status vpc-file-csi-driver 2.0 normal Addon Ready. For more info: http://ibm.biz/addon-state (H1500) -
드라이버 팟(Pod)이 배치되었고 상태가
Running인지 확인하십시오.oc get pods -n kube-system | grep vpc-file-csi출력 예
ibm-vpc-file-csi-controller-s34sw 7/7 Running 0 77s ibm-vpc-file-csi-controller-7hdhd 7/7 Running 0 77s ibm-vpc-file-csi-node-56c85 4/4 Running 0 77s ibm-vpc-file-csi-node-87j2t 4/4 Running 0 77s ibm-vpc-file-csi-node-cmh2h 4/4 Running 0 77s -
PVC를 생성하십시오.
apiVersion: v1 kind: PersistentVolumeClaim metadata: name: csi-file-pvc spec: accessModes: - ReadWriteMany resources: requests: storage: 10Gi storageClassName: ibmc-vpc-file-min-iopsoc create -f pvc.yaml -
PVC가 생성되었으며 활성
Bound상태인지 확인하십시오.oc get pvcNAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS VOLUMEATTRIBUTESCLASS AGE csi-file-pvc Bound pvc-9873bd7e-41a8-4234-a9bf-271b8ca7e4f9 10Gi RWM ibmc-vpc-file-min-iops <unset> 5 -
생성한 PVC를 마운트하는 배포를 위한 YAML 구성 파일을 만듭니다.
apiVersion: apps/v1 kind: Deployment metadata: name: my-deployment labels: app: my-deployment spec: replicas: 1 selector: matchLabels: app: my-deployment template: metadata: labels: app: my-deployment spec: containers: - image: nginx # Your containerized app image name: container-name volumeMounts: - mountPath: /myvolumepath # Mount path for PVC name: my-vol # Volume mount name volumes: - name: my-vol # Volume resource name persistentVolumeClaim: claimName: csi-file-pvc # The name of the PVC you created earlieroc create -f pod.yaml -
클러스터에서 파드가 실행 중인지 확인합니다.
oc get podsNAME READY STATUS RESTARTS AGE my-deployment-58dd7c89b6-8zdcl 1/1 Running 0 4m50s -
이제 포드를 생성했으므로, 포드에 로그인하여 스냅샷에 사용할 텍스트 파일을 생성하십시오.
oc exec -it POD_NAME -- /bin/bash새 텍스트 파일을 생성하는 명령어 예시.
root@my-deployment-58dd7c89b6-8zdcl:/# cd myvolumepath/ root@my-deployment-58dd7c89b6-8zdcl:/myvolumepath# echo "hi" > new.txt root@my-deployment-58dd7c89b6-8zdcl:/myvolumepath# exit
볼륨 스냅샷 생성
배포와 PVC를 생성한 후 볼륨 스냅샷을 생성할 수 있습니다.
-
스냅샷 연산자 공유 iAM의 권한 이 있는지 확인합니다.
-
애드온을 활성화할 때 배포된 snapshot
ibmc-vpcfile-snapshot-delete클래스를 사용하여 클러스터에 볼륨 스냅샷을 생성하십시오. 다음VolumeSnapshot구성을snapvol.yaml이라는 파일에 저장합니다.apiVersion: snapshot.storage.k8s.io/v1 kind: VolumeSnapshot metadata: name: snapshot-csi-file-pvc spec: volumeSnapshotClassName: ibmc-vpcfile-snapshot-delete source: persistentVolumeClaimName: csi-file-pvcoc create -f snapvol.yaml -
스냅샷이 사용 준비가 되었는지 확인하십시오.
oc get volumesnapshots예시 출력에서 는
READYTOUSE입니다true.NAME READYTOUSE SOURCEPVC SOURCESNAPSHOTCONTENT RESTORESIZE SNAPSHOTCLASS SNAPSHOTCONTENT CREATIONTIME AGE ibmc-vpcfile-snapshot-delete true csi-file-pvc 10Gi ibmc-vpcfile-snapshot-delete snapcontent-9c374fbf-43a6-48d6-afc5-e76e1ab7c12b 18h 18h
볼륨 스냅샷에서 복원
볼륨 스냅샷을 배포한 후에는 해당 스냅샷을 사용하여 새 볼륨으로 데이터를 복원할 수 있습니다. PVC 생성 시 스냅샷 데이터를 포함하는 새 볼륨이 동적으로 프로비저닝됩니다.
-
볼륨 스냅샷을 참조하는 두 번째 PVC를 생성하십시오.
apiVersion: v1 kind: PersistentVolumeClaim metadata: name: restore-pvc spec: storageClassName: ibmc-vpc-file-min-iops dataSource: name: snapshot-csi-file-pvc kind: VolumeSnapshot apiGroup: snapshot.storage.k8s.io accessModes: - ReadWriteMany resources: requests: storage: 10Gi -
PVC가 생성되었으며 활성
Bound상태인지 확인하십시오.oc get pvcNAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS VOLUMEATTRIBUTESCLASS AGE csi-file-pvc Bound pvc-9873bd7e-41a8-4234-a9bf-271b8ca7e4f9 10Gi RWM ibmc-vpc-file-min-iops <unset> 9m16s restore-pvc Bound pvc-04dc8d6c-ac75-48b1-989d-ed67deb35911 10Gi RWM ibmc-vpc-file-min-iops <unset> 116s -
생성한 PVC를 마운트하는 배포를 위한 두 번째 YAML 구성 파일을 만듭니다.
apiVersion: apps/v1 kind: Deployment metadata: name: restore-pod labels: app: restore-pod spec: replicas: 1 selector: matchLabels: app: restore-pod template: metadata: labels: app: restore-pod spec: containers: - image: nginx # Your containerized app image name: container-name volumeMounts: - mountPath: /myvolumepath # Mount path for pvc from container name: my-vol # Volume mount name volumes: - name: my-vol # Volume resource name persistentVolumeClaim: claimName: restore-pvc # The name of the PVC that you created earlieroc create -f restore-pod.yaml -
팟(Pod)이 작성되었는지 확인하십시오.
oc get podsNAME READY STATUS RESTARTS AGE restore-pod-1 1/1 Running 0 30m pod-2 1/1 Running 0 46h -
새로 생성된 포드에 로그인하고, 이전에 생성한 샘플 텍스트 파일이 새 포드에 저장되었는지 확인하십시오.
oc exec -it POD_NAME -- /bin/bash root@POD_NAME :/# cd myvolumepath/ root@POD_NAME :/myvolumepath# ls lost+found new.txt root@POD_NAME :/myvolumepath# cat new.txt출력 예
hi
정적 스냅샷 복원
정적 스냅샷을 복원하려면 다음 단계를 완료하십시오.
-
계정에 로그인하십시오. If applicable, target the appropriate resource group. 클러스터에 대한 컨텍스트를 설정하십시오.
-
스냅샷 CRN을 사용하여
ibmcloud is share-snapshot <share-id> <share-snapshot-id> | grep CRN출력 예
CRN crn:v1:staging:public:is:us-south-3:a/77f2bceddaeb577dcaddb4073fe82c1c::share-snapshot:r134-1b3af00c-7a07-4ba7-b005-f6723c5b5e98/r134-164521b1-f5c1-4968-9605-a7aaa7e6cd2f -
VolumeSnapshotContent리소스를 만듭니다. 다음 구성을.volsnapcontent.yaml라는 파일로 저장하십시오.apiVersion: snapshot.storage.k8s.io/v1 kind: VolumeSnapshotContent metadata: name: static-file-snapshot-cnt spec: volumeSnapshotClassName: ibmc-vpcfile-snapshot-retain deletionPolicy: Retain driver: vpc.file.csi.ibm.io source: snapshotHandle: crn:v1:staging:public:is:us-south-3:a/77f2bceddaeb577dcaddb4073fe82c1c::share-snapshot:r134-1b3af00c-7a07-4ba7-b005-f6723c5b5e98/r134-164521b1-f5c1-4968-9605-a7aaa7e6cd2f # Enter the CRN of the snapshot you created earlier. For example crn:v1:public:is:us-south:a/8ee729d7f903db130b00257d91b6977f::snapshot:r134-64c3ad8e-786e-4f54-9b63-388615811ba6 volumeSnapshotRef: name: static-file-snapshot namespace: defaultoc apply -f volsnapcontent.yaml출력 예
volumesnapshot.snapshot.storage.k8s.io/crossaccount-snapshot created -
생성하십시오. VolumeSnapshot 다음 구성을. volsnap.yaml 라는 파일로 저장하십시오.
apiVersion: snapshot.storage.k8s.io/v1 kind: VolumeSnapshot metadata: name: static-file-snapshot namespace: default spec: volumeSnapshotClassName: ibmc-vpcfile-snapshot-retain source: volumeSnapshotContentName: static-file-snapshot-cnt # Enter the name of the VolumeSnapshotContent that you created in the previous step.oc apply -f volsnap.yaml -
PVC를 생성하십시오. 다음 구성을.
pvc2.yaml라는 파일로 저장하십시오.apiVersion: v1 kind: PersistentVolumeClaim metadata: name: restore-static-pvc spec: storageClassName: ibmc-vpc-file-min-iops dataSource: name: static-file-snapshot kind: VolumeSnapshot apiGroup: snapshot.storage.k8s.io accessModes: - ReadWriteMany resources: requests: storage: 10Gioc apply -f pvc2.yaml앱을 재배포하십시오.
apiVersion: apps/v1 kind: Deployment metadata: name: my-deployment labels: app: my-deployment spec: replicas: 1 selector: matchLabels: app: my-deployment template: metadata: labels: app: my-deployment spec: containers: - image: nginx # Your containerized app image name: container-name volumeMounts: - mountPath: /myvolumepath # Mount path for PVC name: my-vol # Volume mount name volumes: - name: my-vol # Volume resource name persistentVolumeClaim: claimName: restore-static-pvc # The name of the PVC you created earlieroc create -f dep2.yaml -
클러스터에서 파드가 실행 중인지 확인합니다.
oc get podsNAME READY STATUS RESTARTS AGE my-deployment-58dd7c89b6-8zdcl 1/1 Running 0 4m50s -
새로 생성된 포드에 로그인하고, 이전에 생성한 샘플 텍스트 파일이 새 포드에 저장되었는지 확인하십시오.
root@my-deployment-static-768f64ffcf-h6qft:/# cd myvolumepath/ root@my-deployment-static-768f64ffcf-h6qft:/myvolumepath# ls new.txt root@my-deployment-static-768f64ffcf-h6qft:/myvolumepath# cat new.txt hi
스냅샷 끄기
기본적으로, 스냅샷 기능은 사용 시 File Storage for VPC 활성화됩니다. 이 기능은 kube-system 네임스페이스 내의 addon-vpc-file-csi-driver-configmap configmap에서 ``를 IsSnapshotEnabled false로 변경하여 비활성화할 수 있습니다. 이
구성맵 변경으로 인해 생성되는 모든 스냅샷은 다음 메시지와 함께 CreateSnapshot functionality is disabled 실패합니다:
-
클러스터의 현재 구성맵을 로컬 머신에 저장하십시오.
oc get cm -n kube-system addon-vpc-file-csi-driver-configmap -o yaml >> snapshotconfigmap.yaml -
IS_SNAPSHOT_ENABLED매개 변수를false으로 편집합니다.IS_SNAPSHOT_ENABLED:false -
파일을 저장하고 변경 사항을 적용합니다.
oc apply -f snapshotconfigmap.yaml