内容简介:作者:Jing Xu(谷歌)、Xing Yang(华为)、Saad Ali(谷歌)Kubernetes v1.12引入了卷快照(volume snapshot)支持作为alpha功能。在Kubernetes v1.13,它仍然是alpha功能,但增加了一些强化和一些重大更改。这篇文章总结了这些变化。
作者:Jing Xu(谷歌)、Xing Yang(华为)、Saad Ali(谷歌)
Kubernetes v1.12引入了卷快照(volume snapshot)支持作为alpha功能。在Kubernetes v1.13,它仍然是alpha功能,但增加了一些强化和一些重大更改。这篇文章总结了这些变化。
重大更改
CSI spec v1.0 对卷快照功能进行了一些重大更改。CSI驱动程序维护者在升级其驱动程序以支持v1.0时,应该了解这些更改。
SnapshotStatus替换为Boolean ReadyToUse
在CSI v0.3.0,CreateSnapshotResponse中定义了SnapshotStatus枚举(enum),表示快照是READY,UPLOADING,还是ERROR_UPLOADING。在CSI v1.0,SnapshotStatus已从CreateSnapshotResponse中删除,并替换为布尔值(boolean)ReadyToUse。ReadyToUse值为true,表示完成后快照处理(post snapshot processing),例如上载,并且快照已准备好用作创建卷的源。
需要进行后快照处理的存储系统(例如在快照完成后上传),应该在快照完成后返回成功的CreateSnapshotResponse,并将ReadyToUse字段设置为false。这表示容器箱编排系统(Container Orchestration System,CO),可以恢复因为进行快照而停顿的任何工作负载。然后,CO可以重复调用CreateSnapshot,直到ReadyToUse字段设置为true,或该调用返回一个错误,指示处理中出现问题。CSI ListSnapshot调用可以与snapshot_id过滤一起使用,以确定快照是否可以使用,但不推荐使用这个方式,因为它无法在处理过程中检测错误(ReadyToUse字段只是无限期地保持为false)。
CSI外部快照边车容器(external-snapshotter sidecar container)的 v1.x.x版本 ,已通过调用CreateSnapshot,而不是ListSnapshots来处理此更改,以检查快照是否可以使用。当升级驱动程序到CSI 1.0时,驱动程序维护者应使用相应的1.0兼容边车(sidecar)容器。
为了与CSI规范的更改保持一致,VolumeSnapshot API对象中的Ready字段已重命名为ReadyToUse。当执行kubectl describe volumesnapshot以查看快照的详细信息时,用户可以看到此更改。
时间戳数据类型
快照的创建时间作为VolumeSnapshotContent API对象的一部分可供Kubernetes管理员使用。该字段使用CSI CreateSnapshotResponse中的creation_time字段填充。在CSI v1.0中,此creation_time字段类型已更改为.google.protobuf.Timestamp,而不是int64。将驱动程序升级到CSI 1.0时,驱动程序维护者必须相应地进行更改。CSI外部快照程序边车容器的 v1.x.x版本 已更新以处理此更改。
弃用
以下VolumeSnapshotClass参数已被弃用(deprecated),将在以后的版本中删除。它们将替换为下面Replacement“替换”部分中列出的参数。
弃用csiSnapshotterSecretName,替换csi.storage.k8s.io/snapshotter-secret-name
弃用csiSnapshotterSecretNameSpace,替换csi.storage.k8s.io/snapshotter-secret-namespace
新功能
SnapshotContent删除/保留(Deletion/Retain)政策
如在 宣布快照alpha的初始博客文章 中所述,Kubernetes快照API类似于PV/PVC API:就像卷(volume),由绑定的PVC和PV对表示一样,快照由绑定的VolumeSnapshot和VolumeSnapshotContent对表示。
对于PV/PVC对,当用户完成使用卷时,他们可以删除PVC。PV上的回收政策决定PV之后的处理(是删除,还是保留)。
在最初的alpha版本中,快照不支持指定回收政策的功能。当删除快照对象时,它总是导致快照被删除。在Kubernetes v1.13中,添加了快照内容DeletionPolicy。它使管理员,能够配置VolumeSnapshotContent在绑定的VolumeSnapshot对象被删除后的处理方式。卷快照的DeletionPolicy可以是Retain(删除)或Delete(保留)。如果未指定该值,则缺省值取决于SnapshotContent对象,是通过静态绑定,还是动态配置创建的。
Retain(保留)
Retain(保留)政策允许手动回收资源。如果是静态创建并绑定VolumeSnapshotContent,则默认的DeletionPolicy为Retain。删除VolumeSnapshot时,VolumeSnapshotContent继续存在,VolumeSnapshotContent被视为“已释放”(“released”)。但它不能用于绑定到其他VolumeSnapshot对象,因为它包含数据。由管理员决定如何处理剩余的API对象和资源清理。
Delete(删除)
Delete(删除)政策允许从Kubernetes自动删除绑定的VolumeSnapshotContent对象,以及外部基础结构中的关联存储资产(例如AWS EBS快照,或GCE PD快照等)。动态配置的快照会继承其VolumeSnapshotClass的删除政策,该政策默认为Delete。
管理员应使用所需的保留政策配置VolumeSnapshotClass。创建政策后,通过修补(patching)对象,可以更改单个VolumeSnapshotContent的政策。
以下示例演示如何检查动态调配的VolumeSnapshotContent的删除政策。
$ kubectl create -f ./examples/kubernetes/demo-defaultsnapshotclass.yaml $ kubectl create -f ./examples/kubernetes/demo-snapshot.yaml $ kubectl get volumesnapshots demo-snapshot-podpvc -o yaml apiVersion: snapshot.storage.k8s.io/v1alpha1 kind: VolumeSnapshot metadata: creationTimestamp: "2018-11-27T23:57:09Z" ... spec: snapshotClassName: default-snapshot-class snapshotContentName: snapcontent-26cd0db3-f2a0-11e8-8be6-42010a800002 source: apiGroup: null kind: PersistentVolumeClaim name: podpvc status: … $ kubectl get volumesnapshotcontent snapcontent-26cd0db3-f2a0-11e8-8be6-42010a800002 -o yaml apiVersion: snapshot.storage.k8s.io/v1alpha1 kind: VolumeSnapshotContent … spec: csiVolumeSnapshotSource: creationTime: 1546469777852000000 driver: pd.csi.storage.gke.io restoreSize: 6442450944 snapshotHandle: projects/jing-k8s-dev/global/snapshots/snapshot-26cd0db3-f2a0-11e8-8be6-42010a800002 deletionPolicy: Delete persistentVolumeRef: apiVersion: v1 kind: PersistentVolume name: pvc-853622a4-f28b-11e8-8be6-42010a800002 resourceVersion: "21117" uid: ae400e9f-f28b-11e8-8be6-42010a800002 snapshotClassName: default-snapshot-class volumeSnapshotRef: apiVersion: snapshot.storage.k8s.io/v1alpha1 kind: VolumeSnapshot name: demo-snapshot-podpvc namespace: default resourceVersion: "6948065" uid: 26cd0db3-f2a0-11e8-8be6-42010a800002
用户可以使用补丁(patch)更改删除政策:
$ kubectl patch volumesnapshotcontent snapcontent-26cd0db3-f2a0-11e8-8be6-42010a800002 -p '{"spec":{"deletionPolicy":"Retain"}}' --type=merge $ kubectl get volumesnapshotcontent snapcontent-26cd0db3-f2a0-11e8-8be6-42010a800002 -o yaml apiVersion: snapshot.storage.k8s.io/v1alpha1 kind: VolumeSnapshotContent ... spec: csiVolumeSnapshotSource: ... deletionPolicy: Retain persistentVolumeRef: apiVersion: v1 kind: PersistentVolume name: pvc-853622a4-f28b-11e8-8be6-42010a800002 ...
保护使用中的快照对象
“保护使用中的快照对象”(Snapshot Object in Use Protection)功能的目的,是确保不会从系统中删除正在使用的快照API对象(因为这可能会导致数据丢失)。有两种情况需要“使用中”(“in-use”)保护:
- 如果卷快照正在被PVC作为创建卷的源。
- 如果VolumeSnapshotContent API对象绑定到VolumeSnapshot API对象,会认为该内容对象正在使用中。
如果用户删除PVC正在使用的VolumeSnapshot API对象,VolumeSnapshot对象不会被立即删除。删除VolumeSnapshot对象被推迟,直到任何PVC不再使用VolumeSnapshot。同样,如果管理员删除了绑定到VolumeSnapshot的VolumeSnapshotContent,VolumeSnapshotContent不会被立即删除。删除VolumeSnapshotContent被推迟,直到VolumeSnapshotContent没有绑定到VolumeSnapshot对象。
哪些卷插件支持Kubernetes快照?
快照仅在CSI驱动程序支持(不适用于树内“in-tree”或Flexvolume)。要使用Kubernetes快照功能,请确保在群集上部署实现快照的CSI驱动程序。
截至本博文发布时,以下CSI驱动程序支持快照:
- GCE Persistent Disk CSI Driver
- OpenSDS CSI Driver
- Ceph RBD CSI Driver
- Portworx CSI Driver
- GlusterFS CSI Driver
- Digital Ocean CSI Driver
- Ember CSI Driver
- Cinder CSI Driver
- Datera CSI Driver
- NexentaStor CSI Driver
其他 驱动程序 的快照支持正在等待阶段,应该很快就可以使用。阅读“Kubernetes的容器存储接口(CSI)GA了”博客文章,了解有关CSI以及如何部署CSI驱动程序的更多信息。
下一步?
根据反馈和采用情况,Kubernetes团队计划将CSI Snapshot实施在1.15或1.16版本推向beta。我们感兴趣的一些功能包括一致性组(consistency group)、应用程序一致性快照、工作负载停顿、就地恢复等。
怎样才能了解更多?
快照API和控制器的代码存储库位于: https://github.com/kubernetes...
在此处查看有关快照功能的其他文档: http://k8s.io/docs/concepts/s... ://kubernetes-csi.github.io/docs/
怎样参与?
像所有Kubernetes一样,这个项目是许多来自不同背景的贡献者共同努力的结果。
特别感谢所有帮助增加CSI v1.0支持,并改进此版本快照功能的贡献者,包括Saad Ali( saadali )、Michelle Au( msau42 )、Deep Debroy( ddebroy )、James DeFelice( jdef )、John Griffith ( j-griffith )、Julian Hjortshoj( julian-hj )、Tim Hockin( thockin )、Patrick Ohly( pohly )、Luis Pabon( lpabon )、Cheng Xing( verult )、Jing Xu( jingxu97 )、Shiwei Xu( wackxu )、Xing Yang( xing-yang )、Jie Yu( jieyu )、David Zhu( davidz627 )。
有兴趣参与CSI或Kubernetes存储系统任何部分的设计和开发的人士,请加入 Kubernetes存储特别兴趣小组 (SIG)。我们正在快速成长,一直欢迎新的贡献者。
我们还定期召开 SIG-Storage Snapshot工作组会议 。欢迎新的参与者加入设计和开发的讨论。
2019年KubeCon + CloudNativeCon中国论坛提案征集(CFP)现已开放
KubeCon + CloudNativeCon 论坛让用户、开发人员、从业人员汇聚一堂,面对面进行交流合作。与会人员有 Kubernetes、Prometheus 及其他云原生计算基金会 (CNCF) 主办项目的领导,和我们一同探讨云原生生态系统发展方向。
在中国开源峰会上,与会者将共同合作及共享信息,了解最新和最有趣的开源技术,包括 Linux 、容器、云技术、网络、微服务等;并获得如何在开源社区中导向和引领的信息。
大会日期:
- 提案征集截止日期:太平洋标准时间 2 月 15 日,星期五,晚上 11:59
- 提案征集通知日期:2019 年 4 月 1 日
- 会议日程通告日期:2019 年 4 月 3 日
- 幻灯片提交截止日期:6 月 17 日,星期一
- 会议活动举办日期:2019 年 6 月 24 至 26 日
2019年KubeCon + CloudNativeCon + Open Source Summit China赞助方案出炉啦
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- 国内人脸监控现况:你知道你的脸用处这么多吗?
- Mysql可重复读(2) —— 快照真的就是快照吗
- 移动端页面分享快照生成总结
- [iOS 开发] 图文快照分享的实现
- LVM、物理卷、逻辑卷、卷组、快照
- [iOS 开发] 图文快照分享的实现
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Where Wizards Stay Up Late
Katie Hafner / Simon & Schuster / 1998-1-21 / USD 16.00
Twenty five years ago, it didn't exist. Today, twenty million people worldwide are surfing the Net. "Where Wizards Stay Up Late" is the exciting story of the pioneers responsible for creating the most......一起来看看 《Where Wizards Stay Up Late》 这本书的介绍吧!