使用 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。
-
验证附加组件状态是否为
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 -
验证 pod 是否在群集中运行。
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 后,可以创建卷快照资源。
只有当卷连接到 pod 时,才能创建快照。
-
确保您拥有 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 volumesnapshotsREADYTOUSE为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 基础设施服务(是):编辑和作家
- Kubernetes Service (容器-Kubernetes):操作员
- 资源组:要创建快照的每个资源组的查看器
创建自定义 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 -
创建快照。
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 中关闭此功能。 请注意,通过配置映射中的此更改,创建的任何快照都将失败并显示以下消息:CreateSnapshot functionality is disabled。
-
将当前配置映射从集群保存到本地计算机。
oc get cm -n kube-system addon-vpc-block-csi-driver-configmap -o yaml >> snapshotconfigmap.yaml -
将
IsSnapshotEnabled参数编辑为false。 -
保存文件并应用更改。
oc apply -f snapshotconfigmap.yaml
后续步骤
部署快照验证 Webhook 以验证用户输入。 有关更多信息,请参阅 部署快照验证 Webhook。
快照故障诊断
查看以下故障排除主题。