使用 Block Storage for VPC 集群附加组件设置快照
虚拟私有云
Block Storage for VPC 卷快照为您提供了在特定时间点复制卷内容而无需创建全新卷的标准化方法。 有关更多信息,请参阅 快照工作方式。
快照支持可用于集群 V 4.9 和更高版本以及 Block Storage for VPC 集群附加组件 V 5.0 和更高版本。
创建应用程序
创建示例持久卷声明 (PVC) 并部署引用该声明的 pod。
-
验证附加组件状态是否为
normal
,状态是否为Ready
。ibmcloud oc cluster addon ls --cluster CLUSTER-ID
Name 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
。kubectl 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-tier
kubectl create -f pvc.yaml
-
验证 PVC 是否已创建且处于
Bound
状态。kubectl get pvc
NAME 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 earlier
kubectl create -f pod.yaml
-
验证 pod 是否在群集中运行。
kubectl get pods
NAME READY STATUS RESTARTS AGE my-deployment-58dd7c89b6-8zdcl 1/1 Running 0 4m50s
-
现在,您已创建 pod,请登录到 pod 并创建要用于快照的文本文件。
kubectl 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 后,可以创建卷快照资源。
仅当卷连接到 pod 时,才能创建快照。
-
使用启用附加组件时部署的
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-pvc
kubectl create -f snapvol.yaml
-
验证快照是否已准备就绪可供使用。
kubectl get volumesnapshots
示例输出,其中
READYTOUSE
是true
。NAME READYTOUSE SOURCEPVC SOURCESNAPSHOTCONTENT RESTORESIZE SNAPSHOTCLASS SNAPSHOTCONTENT CREATIONTIME AGE ibmc-vpcblock-snapshot true csi-block-pvc 1Gi ibmc-vpcblock-snapshot snapcontent-9c374fbf-43a6-48d6-afc5-e76e1ab7c12b 18h 18h
从卷快照复原
部署快照资源后,可以使用快照将数据复原到新卷。 创建 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
状态。kubectl get pvc
NAME 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 earlier
kubectl create -f podtwo.yaml
-
验证 pod 是否已创建。
kubectl get pods
NAME READY STATUS RESTARTS AGE POD_NAME 1/1 Running 0 30m POD2_NAME 1/1 Running 0 46h
-
登录到新创建的 pod,并验证您先前创建的样本文本文件是否已保存到新 pod。
kubectl 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
中关闭此功能。 请注意,通过配置映射中的此更改,创建的任何快照都将失败并显示以下消息:CreateSnapshot functionality is disabled
。
-
将当前配置映射从集群保存到本地计算机。
kubectl get cm -n kube-system addon-vpc-block-csi-driver-configmap -o yaml >> snapshotconfigmap.yaml
-
将
IsSnapshotEnabled
参数编辑为false
。 -
保存文件并应用更改。
kubectl apply -f snapshotconfigmap.yaml
后续步骤
部署快照验证 Webhook 以验证用户输入。 有关更多信息,请参阅 部署快照验证 Webhook。
快照故障诊断
查看以下故障排除主题。