15

Kubernetes 1.20:Kubernetes卷快照提升到GA

 3 years ago
source link: https://mp.weixin.qq.com/s?__biz=MzI5ODk5ODI4Nw%3D%3D&%3Bmid=2247495779&%3Bidx=1&%3Bsn=2254342828e0b2cc0147802e1aebbec2
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

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

vE7NNrj.png!mobile

问卷链接( 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创建一个VolumeSn apshot 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)。我们正在快速发展,欢迎新的贡献者。

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

点击【阅读原文】阅读网站原文。

mIrIRvA.png!mobile

扫描二维码联系我们!

CNCF (Cloud Native Computing Foundation)成立于2015年12月,隶属于Linux  Foundation,是非营利性组织。 

CNCF 云原生计算基金会 )致力于培育和维护一个厂商中立的开源生态系统,来推广云原生技术。我们通过将最前沿的模式民主化,让这些创新为大众所用。请长按以下二维码进行关注。

yeqMBrF.jpg!mobile


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK