本文主要描述云盘快照的静态创建和动态创建方法。
说明
该功能目前处于邀测阶段,推荐先在非生产环境中测试,生产环境请谨慎使用。
说明
ECS 的快照功能处于 免费阶段,请在 ECS 提交功能试用申请,详细介绍参见:快照文档。
vke-volumesnapshotclass.yaml
代码如下:apiVersion: snapshot.storage.k8s.io/v1 kind: VolumeSnapshotClass metadata: name: vke-volumesnapshotclass # VolumeSnapshotClass 名称。 driver: ebs.csi.volcengine.com # 驱动类型,本示例为 ebs.csi.volcengine.com,表示火山引擎 csi-ebs 插件。 deletionPolicy: Delete # 快照回收策略,包括:Delete(删除 VolumeSnapshot 时,同时删除 VolumeSnapshotContent 及相关资源)、Retain(删除 VolumeSnapshot 后,手动删除 VolumeSnapshotContent 及相关资源)。
kubectl apply -f vke-volumesnapshotclass.yaml
deployment-nginx.yaml
代码如下。详细的操作步骤和说明,请参见 使用云盘动态存储卷。其余类型的工作负载,请参见 工作负载。apiVersion: apps/v1 kind: Deployment metadata: name: deployment-nginx spec: selector: matchLabels: app: nginx template: metadata: annotations: # vke.volcengine.com/burst-to-vci: enforce # 强制使用 VCI,如果有 VCI 需求需要添加本行注解 labels: app: nginx spec: containers: - name: nginx-c1 image: cr-cn-beijing.volces.com/****/vci-demo-nginx:latest #指定需要部署的镜像文件 ports: - containerPort: 80 name: web volumeMounts: - name: ebs-essd-volume0 mountPath: /data volumes: - name: ebs-essd-volume0 persistentVolumeClaim: claimName: pvc-ebs-essd
kubectl apply -f deployment-nginx.yaml
说明
请将deployment-nginx-6fcb64f6cd-qcxkt
替换为您自己的 Pod 名称。
查看数据是否成功写入。kubectl exec deployment-nginx-6fcb64f6cd-qcxkt -- touch /data/test
预期输出结果如下:kubectl exec deployment-nginx-6fcb64f6cd-qcxkt -- ls /data
lost+found test
vke-snapshot.yaml
代码如下:apiVersion: snapshot.storage.k8s.io/v1 kind: VolumeSnapshot metadata: name: vke-snapshot namespace: default # VolumeSnapshot 所属命名空间。 spec: volumeSnapshotClassName: vke-volumesnapshotclass # 步骤 1 中已创建的 VolumeSnapshotClass。 source: persistentVolumeClaimName: pvc-for-snapshot # 步骤 3 的 Deployment 中使用的 PVC。
kubectl apply -f vke-snapshot.yaml
预计输出结果kubectl get VolumeSnapshot
NAME READYTOUSE SOURCEPVC SOURCESNAPSHOTCONTENT RESTORESIZE SNAPSHOTCLASS SNAPSHOTCONTENT CREATIONTIME AGE vke-snapshot pvc-for-snapshot vke-volumesnapshotclass 19s
预计输出结果kubectl get VolumeSnapshotContent
NAME READYTOUSE RESTORESIZE DELETIONPOLICY DRIVER VOLUMESNAPSHOTCLASS VOLUMESNAPSHOT VOLUMESNAPSHOTNAMESPACE AGE snapcontent-b523**** true 21474836480 Delete ebs.csi.volcengine.com vke-volumesnapshotclass vke-snapshot default 4m36s
new-snapshotcontent.yaml
代码如下:apiVersion: snapshot.storage.k8s.io/v1 kind: VolumeSnapshotContent metadata: name: new-snapshotcontent spec: deletionPolicy: Retain # 快照回收策略,包括:Delete(删除 VolumeSnapshot 时,同时删除 VolumeSnapshotContent 及相关资源)、Retain(删除 VolumeSnapshot 后,手动删除 VolumeSnapshotContent 及相关资源)。 driver: ebs.csi.volcengine.com # 驱动类型,本示例为 ebs.csi.volcengine.com,表示火山引擎 csi-ebs 插件。 source: snapshotHandle: snap-f1ksxj7k1d******** # ECS 上已创建的快照 ID。 volumeSnapshotRef: name: new-snapshot # 即将要关联创建的 VolumeSnapshot 名称。 namespace: default # 即将要关联创建的 VolumeSnapshot 所属命名空间。
kubectl apply -f new-snapshotcontent.yaml
new-snapshot.yaml
代码如下:apiVersion: snapshot.storage.k8s.io/v1 kind: VolumeSnapshot metadata: name: new-snapshot # 步骤 1 中已设置的 VolumeSnapshot 名称。 namespace: default # 步骤 1 中已设置的 VolumeSnapshot 所属命名空间。 spec: source: volumeSnapshotContentName: new-snapshotcontent # 步骤 1 中已创建的 VolumeSnapshotContent 名称。
kubectl apply -f new-snapshot.yaml
动态或静态创建快照后,支持从快照恢复数据到新的 PVC。PVC 的示例 YAML 文件如下所示。详细说明,请参见 使用云盘动态存储卷。
apiVersion: v1 kind: PersistentVolumeClaim metadata: name: restore-test namespace: default spec: storageClassName: cbs-csi dataSource: name: vke-snapshot # 动态或静态创建快照时设置的 VolumeSnapshot 名称。 kind: VolumeSnapshot apiGroup: snapshot.storage.k8s.io accessModes: - ReadWriteOnce resources: requests: storage: 10Gi # storage 需要大于等于快照(原云盘)大小