Kubernetes 1.20:Kubernetes卷快照提升到GA

你填了吗?2020年CNCF中国云原生问卷

Image

问卷链接(https://www.wjx.cn/jq/97146486.aspx


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

Kubernetes卷快照特性现在在Kubernetes v1.20中是GA。它在Kubernetes v1.12中以alpha的形式引入,随后在Kubernetes v1.13中进行了第二次alpha,并在Kubernetes 1.17中升级为beta版本。这篇博客总结了从beta版到GA版的变化。

什么是卷快照?

许多存储系统(如谷歌云持久磁盘、Amazon弹性块存储和许多内部存储系统)都提供了创建持久卷的“快照”的能力。快照表示卷的时间点副本。快照可以用于重新生成新卷(用快照数据预填充),也可以用于将现有卷恢复到以前的状态(由快照表示)。

为什么要向Kubernetes添加卷快照?

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

Kubernetes Storage SIG将快照操作识别为许多有状态工作负载的关键功能。例如,数据库管理员可能希望在启动数据库操作之前快照数据库的卷。

通过提供在Kubernetes中触发卷快照操作的标准方法,该特性允许Kubernetes用户以可移植的方式在任何Kubernetes环境中合并快照操作,而不管底层存储是什么。

此外,这些Kubernetes快照特性/原语(primitive)充当基本构建块,释放了为Kubernetes开发高级企业级存储管理特性(包括应用程序或集群级备份解决方案)的能力。

beta之后有什么新特性吗?

随着卷快照提升到GA,该特性在标准Kubernetes部署中默认启用,并且不能关闭。

已经对该特性进行了许多增强,以提高其质量并使其达到生产级。

  • 卷快照API和客户端库被移动到单独的Go模块。

  • 添加了快照验证webhook来对卷快照对象执行必要的验证。更多细节可以在卷快照验证Webhook Kubernetes增强建议中找到。

  • 与验证webhook一起,卷快照控制器将开始标记已经存在的无效快照对象。这允许用户识别、删除任何无效对象,并纠正他们的工作流。一旦API切换到v1类型,这些无效对象将不能从系统中删除。

  • 为了更好地了解快照特性是如何执行的,在卷快照控制器中添加了一组初始操作指标。

  • 还有更多(在GCP上运行的)端到端测试,可以在真正的Kubernetes集群中验证该特性。引入了压力测试(基于谷歌持久磁盘和hostPath CSI驱动程序)来测试系统的健壮性。

除了引入了更严格的验证之外,v1beta1和v1 Kubernetes卷快照API之间没有任何区别。在这个版本中(使用Kubernetes 1.20),提供了v1和v1beta1,而存储的API版本仍然是v1beta1。未来的版本将把存储的版本切换到v1,并逐渐删除对v1beta1的支持。

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

快照只支持CSI驱动程序,不支持树内或FlexVolume驱动程序。确保集群上部署的CSI驱动程序实现了快照接口。有关更多信息,请参见Kubernetes GA的容器存储接口(CSI)。

目前有50多个CSI驱动程序支持卷快照特性。GCE持久磁盘CSI驱动程序已经通过了从卷快照beta升级到GA的测试。对其他CSI驱动程序的GA级支持应该很快就可以使用了。

谁使用卷快照构建产品?

在本博客发布之时,以下来自Kubernetes数据保护工作组的参与者正在使用Kubernetes卷快照构建产品或已经构建了产品。

  • Dell-EMC: PowerProtect

  • Druva

  • Kasten K10

  • Pure Storage (Pure Service Orchestrator)

  • Red Hat OpenShift Container Storage

  • TrilioVault for Kubernetes

  • Velero plugin for CSI

如何部署卷快照?

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

  • 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 README。

如何使用卷快照?

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

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

动态创建卷快照

要动态创建卷快照,首先创建一个VolumeSnapshotClass API对象。

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

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

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对象。

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

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

apiVersion: snapshot.storage.k8s.io/v1
kind: VolumeSnapshot
metadata:
 name: test-snapshot
spec:
 source:
 volumeSnapshotContentName: test-content

从快照创建新卷

绑定并准备就绪的VolumeSnapshot对象可用于通过快照数据预先填充的数据创建新卷,如下所示:

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

如何在CSI驱动程序中添加对快照的支持?

有关如何在CSI驱动程序中实现快照特性的更多细节,请参阅CSI规范和Kubernetes-CSI驱动程序开发指南。

有什么限制?

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/

如何参与?

这个项目,像所有的Kubernetes一样,是许多来自不同背景的贡献者共同努力的结果。

我们对在过去的几个季度里帮助GA实现该项目的贡献者表示非常感谢。我们要感谢Saad Ali、Michelle Au、Tim Hockin和Jordan Liggitt对设计的深刻见解和透彻考虑;感谢Andi Li在增加快照验证Webhook的支持方面所做的工作;感谢Grant Griffiths对实施指标支持 在快照控制器中并在验证Webhook中处理密码轮换;感谢Chris Henzie、Raunak Shah和Manohar Reddy编写了关键的e2e测试以满足升级的可伸缩性和稳定性要求;感谢Kartik Sharma将快照API和客户端库迁移到了 单独的go模块;并感谢Raunak Shah和Prafull Ladha在从Beta到GA的升级测试中所提供的帮助。

还有很多人帮助将快照功能从beta版本提升到GA版本。我们要感谢为这一努力作出贡献的每一个人:

  • Andi Li

  • Ben Swartzlander

  • Chris Henzie

  • Christian Huffman

  • Grant Griffiths

  • Humble Devassy Chirammal

  • Jan Šafránek

  • Jiawei Wang

  • Jing Xu

  • Jordan Liggitt

  • Kartik Sharma

  • Madhu Rajanna

  • Manohar Reddy

  • Michelle Au

  • Patrick Ohly

  • Prafull Ladha

  • Prateek Pandey

  • Raunak Shah

  • Saad Ali

  • Saikat Roychowdhury

  • Tim Hockin

  • Xiangqian Yu

  • Xing Yang

  • Zhu Can

对于那些有兴趣参与CSI或Kubernetes存储系统的任何部分的设计和开发的人,加入Kubernetes存储特别兴趣组(SIG)。我们正在快速发展,欢迎新的贡献者。

我们亦定期举行保障资料工作小组会议。欢迎新参会者加入讨论。

点击阅读网站原文


CNCF (Cloud Native Computing Foundation)成立于2015年12月,隶属于Linux Foundation,是非营利性组织。
CNCF(云原生计算基金会)致力于培育和维护一个厂商中立的开源生态系统,来推广云原生技术。我们通过将最前沿的模式民主化,让这些创新为大众所用。扫描二维码关注CNCF微信公众号。
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值