前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Kubernetes 1.20:Kubernetes卷快照移至GA

Kubernetes 1.20:Kubernetes卷快照移至GA

作者头像
没有故事的陈师傅
发布2020-12-16 10:34:46
1.2K0
发布2020-12-16 10:34:46
举报
文章被收录于专栏:运维开发故事

作者 | Xing Yang, VMware & Xiangqian Yu, Google

翻译 | 乔克

原文 | https://kubernetes.io/blog/2020/12/10/kubernetes-1.20-volume-snapshot-moves-to-ga/

Kubernetes卷快照功能在Kubernetes v1.20已升至GA。它在Kubernetes v1.12版本中作为Alpha引入,在v1.13版本中升级为Alpha2,在Kubernetes 1.17中提升为Beta版。这篇博客文章总结了其从Beta到GA所做的更改。

什么是卷快照?

许多存储系统(例如Google Cloud Persistent Disks,Amazon Elastic Block Storage和许多本地存储系统)都可以创建持久卷的“快照”。卷快照是卷在某个时间点的副本,快照可用于填充新的Volume(预填充快照数据)或将现有卷恢复到先前状态(由快照表示)。

为什么要将卷快照添加到Kubernetes?

Kubernetes的目标是在分布式应用程序和基础群集之间创建一个抽象层,以便应用程序可以与它们所运行集群的具体情况无关,并且应用程序部署不需要“特定集群”。

Kubernetes Storage SIG将快照操作确定为许多有状态工作负载的关键功能。例如,数据库管理员可能要在开始数据库操作之前对数据库的卷进行快照。

在Kubernetes中通过提供一种触发卷快照操作的标准方法,此功能允许Kubernetes用户以可移植的方式在任何Kubernetes环境中合并快照操作,而无需考虑基础存储。

此外,Kubernetes快照作为基本组件,可便于为Kubernetes提供开发高级企业级存储管理功能的能力,包括应用程序或集群级备份解决方案。

自测试版以来有什么新变化?

随着将Volume Snapshot升级为GA,在Kubernetes中默认启用了该功能,并且无法将其关闭。

为了提高此功能的质量并使其达到生产级,已进行了许多增强。

  • 卷快照API和客户端库已移至单独的Go模块。
  • 添加了快照验证Webhook,以对卷快照对象执行必要的验证。可以在《Volume Snapshot Validation Webhook Kubernetes Enhancement Proposal》中找到更多详细信息。
  • 与验证Webhook一起,卷快照控制器将标记已经存在的无效快照对象,这使用户可以识别、删除任何无效对象并更正其工作流程。一旦将API切换为v1类型,这些无效对象将无法从系统中删除。
  • 为了更好地了解快照功能的执行方式,已向卷快照控制器添加了一组初始的操作指标。
  • 在GCP上运行的更多端到端测试可以验证真实Kubernetes群集中的功能。hostPath引入了压力测试(基于Google Persistent Disk和hostPath CSI驱动)来测试系统的稳定性。

除了引入严格的验证之外,v1beta1和v1的Kubernetes卷快照API之间没有区别。在此版本(使用Kubernetes 1.20)中,同时提供了v1和v1beta1,而存储的API版本仍为v1beta1。将来的发行版会将存储的版本切换到v1,并逐渐删除对v1beta1的支持。

哪些CSI驱动程序支持卷快照?

仅CSI驱动程序支持快照,in-tree或FlexVolume驱动程序不支持快照。确保群集上已部署的CSI驱动程序已实现快照接口,有关更多信息,请参见 Container Storage Interface (CSI) for Kubernetes GA。

当前,有50多个CSI驱动程序支持卷快照功能。在GCE Persistent Disk CSI Driver已通过了升级的测试时间里从卷快照公测GA。对其他CSI驱动程序的GA级别支持应尽快提供。

如何部署卷快照?

卷快照功能包含以下组件:

  • Kubernetes Volume Snapshot CRDs
  • Volume snapshot controller
  • Snapshot validation webhook
  • CSI Driver along with CSI Snapshotter sidecar

强烈建议Kubernetes发行商捆绑并部署卷快照控制器,CRD和验证Webhook,作为其Kubernetes集群管理过程的一部分(与任何CSI驱动程序无关)。

**警告:**快照验证Webhook是从v1beta1平稳过渡到v1 API的关键组件。如果不安装快照验证Webhook,则无法防止无效卷快照对象的创建/更新,这反过来又将阻止在即将进行的升级中删除无效卷快照对象。

如果您的群集未预装正确的组件,则可以手动安装它们。有关详细信息,请参见CSI Snapshotter。

如何使用卷快照?

假设所有必需的组件(包括CSI驱动程序)已经在集群上部署并运行,则可以使用VolumeSnapshotAPI对象创建卷快照,或者VolumeSnapshot通过在其上指定VolumeSnapshot数据源使用现有的卷恢复PVC。有关更多详细信息,请参见卷快照文档。

注意: Kubernetes Snapshot API不提供任何应用程序一致性保证。您必须手动或使用更高级别的API /控制器来获取数据一致性之前,必须准备好应用程序(暂停应用程序,冻结文件系统等)。

动态配置卷快照

要动态配置卷快照,请首先创建一个VolumeSnapshotClassAPI对象。

代码语言:javascript
复制
apiVersion: snapshot.storage.k8s.io/v1
kind: VolumeSnapshotClass
metadata:
  name: test-snapclass
driver: testdriver.csi.k8s.io
deletionPolicy: Delete
parameters:
  csi.storage.k8s.io/snapshotter-secret-name: mysecret
  csi.storage.k8s.io/snapshotter-secret-namespace: mysecretnamespace

然后VolumeSnapshot通过指定卷快照类从PVC创建API对象。

代码语言:javascript
复制
apiVersion: snapshot.storage.k8s.io/v1
kind: VolumeSnapshot
metadata:
  name: test-snapshot
  namespace: ns1
spec:
  volumeSnapshotClassName: test-snapclass
  source:
    persistentVolumeClaimName: test-pvc

使用Kubernetes导入现有的卷快照

要将预先存在的卷快照导入Kubernetes,请首先手动创建一个VolumeSnapshotContent对象。

代码语言:javascript
复制
apiVersion: snapshot.storage.k8s.io/v1
kind: VolumeSnapshotContent
metadata:
  name: test-content
spec:
  deletionPolicy: Delete
  driver: testdriver.csi.k8s.io
  source:
    snapshotHandle: 7bdd0de3-xxx
  volumeSnapshotRef:
    name: test-snapshot
    namespace: default

然后创建一个VolumeSnapshot指向该VolumeSnapshotContent对象的对象。

代码语言:javascript
复制
apiVersion: snapshot.storage.k8s.io/v1
kind: VolumeSnapshot
metadata:
  name: test-snapshot
spec:
  source:
        volumeSnapshotContentName: test-content

从快照预填充数据

绑定就绪VolumeSnapshot对象可以用于重新快照新的卷,其中包含从快照数据中预先填充的数据,如下所示:

代码语言:javascript
复制
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: pvc-restore
  namespace: demo-namespace
spec:
  storageClassName: test-storageclass
  dataSource:
    name: test-snapshot
    kind: VolumeSnapshot
    apiGroup: snapshot.storage.k8s.io
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 1Gi

有什么限制?

Kubernetes的卷快照的GA实现具有以下限制:

  • 不支持将现有的PVC恢复为快照表示的较早状态(仅支持从快照配置新卷)。

其他

快照API和控制器的代码存储库位于:https : //github.com/kubernetes-csi/external-snapshotter

在此处查看有关快照功能的其他文档:http : //k8s.io/docs/concepts/storage/volume-snapshots和https://kubernetes-csi.github.io/docs/

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-12-12,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 运维开发故事 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 什么是卷快照?
  • 为什么要将卷快照添加到Kubernetes?
  • 自测试版以来有什么新变化?
  • 哪些CSI驱动程序支持卷快照?
  • 如何部署卷快照?
  • 如何使用卷快照?
    • 动态配置卷快照
      • 使用Kubernetes导入现有的卷快照
        • 从快照预填充数据
        • 有什么限制?
          • 其他
          相关产品与服务
          容器服务
          腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档