Block Storage for VPC 클러스터 추가 기능을 사용하여 스냅샷 설정
가상 프라이빗 클라우드
Block Storage for VPC 볼륨 스냅샷은 완전히 새로운 볼륨을 생성하지 않고도 특정 시점의 볼륨 내용을 복사하는 표준화된 방법을 제공합니다. 스냅샷에 대한 자세한 내용은 스냅샷 작동 방식을 참조하세요. Block Storage for VPC에 대한 자세한 정보는 Block Storage for VPC 정보를 참조하십시오.
기본적으로 Block Storage for VPC 클러스터 애드온은 클러스터가 배포된 동일한 VPC 리소스 그룹에 볼륨과 스냅샷을 생성합니다. 그러나 애드온 버전 5.2.46 이후부터는 VolumeSnapshotClass 에 resourceGroup 매개 변수를 지정하여 다른 리소스 그룹에 스냅샷을 생성할 수 있습니다. 자세한 내용은 다른 리소스 그룹에서 스냅샷 만들기를 참조하세요.
앱 작성
예제 지속적 볼륨 청구 (PVC) 를 작성하고 해당 청구를 참조하는 팟 (Pod) 을 배치하십시오.
-
계정에 로그인하십시오. If applicable, target the appropriate resource group. 클러스터에 대한 컨텍스트를 설정하십시오.
-
추가 기능 상태가
normal이고 상태가Ready인지 확인하십시오.ibmcloud oc cluster addon ls --cluster CLUSTER-IDName Version Health State Health Status vpc-block-csi-driver 5.2 normal Addon Ready. For more info: http://ibm.biz/addon-state (H1500) -
드라이버 팟(Pod)이 배치되었고 상태가
Running인지 확인하십시오.oc get pods -n kube-system | grep vpc-block-csi출력 예
ibm-vpc-block-csi-controller-0 7/7 Running 0 77s ibm-vpc-block-csi-node-56c85 4/4 Running 0 77s ibm-vpc-block-csi-node-87j2t 4/4 Running 0 77s ibm-vpc-block-csi-node-cmh2h 4/4 Running 0 77s -
PVC를 만듭니다.
apiVersion: v1 kind: PersistentVolumeClaim metadata: name: csi-block-pvc spec: accessModes: - ReadWriteOnce resources: requests: storage: 10Gi storageClassName: ibmc-vpc-block-5iops-tieroc create -f pvc.yaml -
PVC가 작성되고
Bound상태인지 확인하십시오.oc get pvcNAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE csi-block-pvc Bound pvc-0798b499-0b61-4f57-a184-4caeb7b9298d 10Gi RWO ibmc-vpc-block-5iops-tier 4m22s -
생성한 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-block-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 -
이제 팟 (Pod) 을 작성했으므로 팟 (Pod) 에 로그인하고 스냅샷에 사용할 텍스트 파일을 작성하십시오.
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에서 스냅샷 운영자 공유 권한이 있는지 확인하세요.
-
추가 기능을 사용으로 설정할 때 배치되는
ibmc-vpcblock-snapshot스냅샷 클래스를 사용하여 클러스터에서 볼륨 스냅샷 리소스를 작성하십시오. 다음VolumeSnapshot구성을snapvol.yaml이라는 파일에 저장합니다.apiVersion: snapshot.storage.k8s.io/v1 kind: VolumeSnapshot metadata: name: snapshot-csi-block-pvc spec: volumeSnapshotClassName: ibmc-vpcblock-snapshot source: persistentVolumeClaimName: csi-block-pvcoc create -f snapvol.yaml -
스냅샷을 사용할 준비가 되었는지 확인하십시오.
oc get volumesnapshots출력 예시
READYTOUSE는true입니다:NAME READYTOUSE SOURCEPVC SOURCESNAPSHOTCONTENT RESTORESIZE SNAPSHOTCLASS SNAPSHOTCONTENT CREATIONTIME AGE snapshot-csi-block-pvc true csi-block-pvc 1Gi ibmc-vpcblock-snapshot snapcontent-9c374fbf-43a6-48d6-afc5-e76e1ab7c12b 18h 18h
다른 리소스 그룹에서 스냅샷 만들기
Block Storage for VPC 클러스터 애드온 버전 5.2.46 이후부터는 클러스터의 리소스 그룹과 다른 리소스 그룹에서 볼륨 스냅샷을 생성할 수 있습니다. 이 기능은 리소스 구성, 할당량 관리 및 액세스 제어를 더욱 유연하게 해줍니다.
- 버전 요구 사항: 이 기능은 애드온 버전 5.2.46 이상에서만 지원됩니다.
- 기본 동작입니다:
resourceGroup매개 변수를 지정하지 않거나 빈 문자열을 지정하면 클러스터의 리소스 그룹에 스냅샷이 만들어집니다.
전제조건
시작하기 전에 IAM에 다음 권한이 있는지 확인하세요:
- VPC 인프라 서비스(is): 편집자 및 작성자
- Kubernetes Service (컨테이너-쿠버네티스): 오퍼레이터
- 리소스 그룹: 리소스 그룹: 스냅샷을 만들려는 각 리소스 그룹에 대한 뷰어입니다
사용자 지정 만들기 VolumeSnapshotClass
다른 리소스 그룹에서 스냅샷을 만들려면 대상 리소스 그룹 ID를 지정하는 사용자 지정 VolumeSnapshotClass 을 만들어야 합니다.
-
스냅샷을 만들려는 리소스 그룹 ID를 가져옵니다.
ibmcloud resource groups -
VolumeSnapshotClass구성 파일을 만듭니다. 다음 YAML을vpc-snap-custom-rg.yaml이라는 파일에 저장합니다.<RESOURCE_GROUP_ID>을 대상 리소스 그룹 ID로 바꿉니다.apiVersion: snapshot.storage.k8s.io/v1 kind: VolumeSnapshotClass metadata: name: vpc-snap-custom-rg driver: vpc.block.csi.ibm.io deletionPolicy: Delete parameters: resourceGroup: <RESOURCE_GROUP_ID>resourceGroup매개 변수는 리소스 그룹 이름이 아닌 리소스 그룹 ID여야 합니다. -
클러스터에
VolumeSnapshotClass을 생성합니다.oc create -f vpc-snap-custom-rg.yaml -
VolumeSnapshotClass이 생성되었는지 확인합니다.oc get volumesnapshotclass
사용자 지정 리소스 그룹으로 스냅샷 만들기
사용자 정의 VolumeSnapshotClass 를 만든 후에는 이를 참조하는 스냅샷을 만들 수 있습니다.
-
사용자 지정 스냅샷 클래스를 참조하는
VolumeSnapshot구성 파일을 만듭니다. 다음 YAML을snapshot-custom-rg.yaml이라는 파일에 저장합니다.apiVersion: snapshot.storage.k8s.io/v1 kind: VolumeSnapshot metadata: name: snapshot-custom-rg spec: volumeSnapshotClassName: vpc-snap-custom-rg source: persistentVolumeClaimName: csi-block-pvc -
Snapshot을 작성하십시오.
oc create -f snapshot-custom-rg.yaml -
스냅샷을 사용할 준비가 되었는지 확인하십시오.
oc get volumesnapshots -
IBM Cloud CLI를 사용하여 대상 리소스 그룹에 스냅샷이 생성되었는지 확인합니다.
ibmcloud target -g <RESOURCE_GROUP_NAME> ibmcloud is snapshots
볼륨 스냅샷에서 복원
스냅샷 자원을 배치한 후 스냅샷을 사용하여 데이터를 새 볼륨으로 복원할 수 있습니다. PVC를 작성하면 스냅샷 데이터를 사용하여 새 볼륨을 동적으로 프로비저닝합니다.
-
볼륨 스냅샷을 참조하는 두 번째 PVC를 작성하십시오.
apiVersion: v1 kind: PersistentVolumeClaim metadata: name: restore-pvc spec: storageClassName: ibmc-vpc-block-5iops-tier dataSource: name: snapshot-csi-block-pvc kind: VolumeSnapshot apiGroup: snapshot.storage.k8s.io accessModes: - ReadWriteOnce resources: requests: storage: 10Gi -
PVC가 작성되고
Bound상태인지 확인하십시오.oc get pvcNAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE restore-pvc Bound pvc-4ede7630-5a49-4bae-b34d-dc528acfb884 10Gi RWO ibmc-vpc-block-5iops-tier 18h -
생성한 PVC를 마운트하는 배포를 위한 두 번째 YAML 구성 파일을 만듭니다.
apiVersion: apps/v1 kind: Deployment metadata: name: podtwo labels: app: podtwo spec: replicas: 1 selector: matchLabels: app: podtwo template: metadata: labels: app: podtwo 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 podtwo.yaml -
팟(Pod)이 작성되었는지 확인하십시오.
oc get podsNAME READY STATUS RESTARTS AGE POD_NAME 1/1 Running 0 30m POD2_NAME 1/1 Running 0 46h -
새로 작성된 팟 (Pod) 에 로그인하고 이전에 작성한 샘플 텍스트 파일이 새 팟 (Pod) 에 저장되었는지 확인하십시오.
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
스냅샷 끄기
기본적으로 스냅샷 기능은 Block Storage for VPC를 사용할 때 사용으로 설정됩니다. IsSnapshotEnabled 를 false 로 변경하여 kube-system 네임스페이스의 configmap addon-vpc-block-csi-driver-configmap 에서 이 기능을 끌 수 있습니다. configmap에서 이와
같이 변경하면 작성되는 모든 스냅샷이 실패하고 다음 메시지가 표시됩니다.CreateSnapshot functionality is disabled.
-
클러스터의 현재 configmap을 로컬 시스템에 저장하십시오.
oc get cm -n kube-system addon-vpc-block-csi-driver-configmap -o yaml >> snapshotconfigmap.yaml -
IsSnapshotEnabled매개변수를false로 편집하십시오. -
파일을 저장하고 변경 사항을 적용합니다.
oc apply -f snapshotconfigmap.yaml
다음 단계
스냅샷 유효성 검증 웹훅을 배치하여 사용자 입력을 유효성 검증하십시오. 자세한 정보는 스냅샷 유효성 검증 웹훅 배치를 참조하십시오.
스냅샷 문제점 해결
다음 문제 해결 주제를 검토하세요.