上云无忧 > 文档中心 > 腾讯云容器服务实战教程 - 使用 CBS CSI 插件对 PVC 进行备份与恢复
容器服务 TKE
腾讯云容器服务实战教程 - 使用 CBS CSI 插件对 PVC 进行备份与恢复

文档简介:
操作场景: 如需为 PVC 数据盘创建快照来备份数据,或者将备份的快照数据恢复到新的 PVC 中,可以通过 CBS-CSI 插件来实现,本文将介绍如何利用 CBS-CSI 插件实现 PVC 的数据备份与恢复。
*此产品及展示信息均由腾讯云官方提供。免费试用 咨询热线:400-826-7010,为您提供专业的售前咨询,让您快速了解云产品,助您轻松上云! 微信咨询
  免费试用、价格特惠

操作场景

如需为 PVC 数据盘创建快照来备份数据,或者将备份的快照数据恢复到新的 PVC 中,可以通过 CBS-CSI 插件来实现,本文将介绍如何利用 CBS-CSI 插件实现 PVC 的数据备份与恢复。

前提条件

已创建 TKE 集群 或已在腾讯云自建 Kubernetes 集群,集群版本 >= 1.18。
已安装 CBS-CSI 插件
访问管理 控制台完成对 TKE_QCSRole 角色授予 CBS 快照操作的相关权限,详情请参考 快照授权

操作步骤

备份 PVC

创建 VolumeSnapshotClass

1. 使用以下 YAML,创建 VolumeSnapshotClass 对象。示例如下:
		
apiVersion: snapshot.storage.k8s.io/v1beta1
kind: VolumeSnapshotClass
metadata:
name: cbs-snapclass
driver: com.tencent.cloud.csi.cbs
deletionPolicy: Delete
2. 执行以下命令,检查 VolumeSnapshotClass 是否创建成功。示例如下:
		
$ kubectl get volumesnapshotclass
NAME DRIVER DELETIONPOLICY AGE
cbs-snapclass com.tencent.cloud.csi.cbs Delete 17m

创建 PVC 快照 VolumeSnapshot

1. 本文以 new-snapshot-demo 快照名为例创建 VolumeSnapshot。使用以下 YAML,创建 VolumeSnapshot 对象。示例如下:
		
apiVersion: snapshot.storage.k8s.io/v1beta1
kind: VolumeSnapshot
metadata:
name: new-snapshot-demo
spec:
volumeSnapshotClassName: cbs-snapclass # 引用前面创建的 VolumeSnapshotClass
source:
persistentVolumeClaimName: ssd-pvc # 替换成要备份的 pvc 名称
2. 执行以下命令,查看 Volumesnapshot 和 Volumesnapshotcontent 对象是否创建成功,若 READYTOUSE 为 true,则创建成功。示例如下:

		
$ kubectl get volumesnapshot

NAME READYTOUSE SOURCEPVC SOURCESNAPSHOTCONTENT

RESTORESIZE SNAPSHOTCLASS SNAPSHOTCONTENT CREATIONTIME AGE

new-snapshot-demo true ssd-pvc 20Gi

cbs-snapclass snapcontent-170b2161-f158-4c9e-a090-a38fdfd84a3e 2m36s 2m50s

$ kubectl get volumesnapshotcontent

NAME READYTOUSE RESTORESIZE

DELETIONPOLICY DRIVER VOLUMESNAPSHOTCLASS VOLUMESNAPSHOT AGE

snapcontent-170b2161-f158-4c9e-a090-a38fdfd84a3e true 21474836480 Delete

com.tencent.cloud.csi.cbs cbs-snapclass new-snapshot-demo 3m3s

3. 执行以下命令,可以获取 Volumesnapshotcontent 对象的快照 ID,字段是 status.snapshotHandle(如下为 snap-rsk8v75j),可以根据快照 ID 在 容器服务控制台 确认快照是否存在。示例如下:
		
$ kubectl get volumesnapshotcontent -o yaml snapcontent-170b2161-f158-4c9e-a090-a38fdfd84a3e
...
status:
creationTime: 1607331318000000000
readyToUse: true
restoreSize: 21474836480
snapshotHandle: snap-rsk8v75j

从快照恢复数据到新 PVC

1. 本文以上述 步骤 创建的 VolumeSnapshot 对象名称 new-snapshot-demo 为例,使用以下 YAML 从快照恢复数据到新的 PVC 中。示例如下:
		
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: restore-test
spec:
storageClassName: ssd-csi # storage class 根据自身需求自定义
dataSource:
name: new-snapshot-demo # 引用前面创建的 VolumeSnapshot
kind: VolumeSnapshot
apiGroup: snapshot.storage.k8s.io
accessModes:
- ReadWriteOnce # CBS 是块存储,只支持单机读写
resources:
requests:
storage: 50Gi # 建议大小与被恢复的 PVC 写成一致
2. 执行以下命令,可以查看 PVC 已经创建并绑定 PV,从 PV 中也可以查看到对应的 diskid(如下为 disk-ju0hw7no)。示例如下:
		
$ kubectl get pvc restore-test
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE
restore-test Bound pvc-940edf09-d622-4126-992b-0a209f048c7d 60Gi RWO ssd-topology 6m8s
$ kubectl get pv pvc-940edf09-d622-4126-992b-0a209f048c7d -o yaml
...
spec:
...
volumeHandle: disk-ju0hw7no
...

说明

如果 StorageClass 使用了拓扑感知(先调度 Pod 再创建 PV),即指定 volumeBindingMode: WaitForFirstConsumer

则需要先部署 Pod(需挂载 PVC)才会触发创建 PV(从快照创建新的 CBS 并与 PV 绑定)。

相似文档
  • 操作场景: 为 TKE 集群挂载 CFS Turbo 类型存储,可以通过安装 kubernetes-csi-tencentloud 组件来实现。该组件基于私有协议将腾讯云 CFS Turbo 文件系统挂载到工作负载,目前仅支持静态配置。CFS 存储类型请参考 文件存储类型及性能规格。
  • 操作场景: 为 TKE Serverless 集群挂载文件存储(Cloud File Storage,CFS)Turbo 类型存储,该组件基于私有协议将腾讯云 CFS Turbo 文件系统挂载到工作负载,目前仅支持静态配置。CFS 存储类型详情见 文件存储类型及性能规格。
  • 操作场景: 目前大多数开源应用的容器镜像(例如 Kubernetes、TensorFlow 等),都托管在境外镜像托管平台(例如 DockerHub、quay.io 等),在国内拉取镜像时可能存在网络问题导致拉取速度慢、甚至无法成功拉取等问题。
  • 操作场景: 本文介绍如何把业务镜像分层构建与管理,使用 TCR 高效的管理各类容器镜像的最佳实践。
  • 操作场景: 本文章介绍了 SpringCloud 应用托管到腾讯云容器服务 TKE 的最佳实践。 SpringCloud 应用托管到 TKE 具有以下优势: 提升资源利用率。 Kubernetes 天然适合微服务架构。 提升运维效率,便于 Devops 落地实施。 Kubernetes 的高弹性,可轻松实现应用的动态扩缩容。
官方微信
联系客服
400-826-7010
7x24小时客服热线
分享
  • QQ好友
  • QQ空间
  • 微信
  • 微博
返回顶部