摘要:为了与规范的更改保持一致,对象中的字段已重命名为。在最初的版本中,快照不支持指定回收政策的功能。卷快照的可以是删除或保留。年中国论坛提案征集现已开放论坛让用户开发人员从业人员汇聚一堂,面对面进行交流合作。
作者: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) 主办项目的领导,和我们一同探讨云原生生态系统发展方向。
2019年中国开源峰会提案征集(CFP)现已开放
在中国开源峰会上,与会者将共同合作及共享信息,了解最新和最有趣的开源技术,包括 Linux、容器、云技术、网络、微服务等;并获得如何在开源社区中导向和引领的信息。
大会日期:
提案征集截止日期:太平洋标准时间 2 月 15 日,星期五,晚上 11:59
提案征集通知日期:2019 年 4 月 1 日
会议日程通告日期:2019 年 4 月 3 日
幻灯片提交截止日期:6 月 17 日,星期一
会议活动举办日期:2019 年 6 月 24 至 26 日
2019年KubeCon + CloudNativeCon + Open Source Summit China赞助方案出炉啦
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/33119.html
摘要:为了与规范的更改保持一致,对象中的字段已重命名为。在最初的版本中,快照不支持指定回收政策的功能。卷快照的可以是删除或保留。年中国论坛提案征集现已开放论坛让用户开发人员从业人员汇聚一堂,面对面进行交流合作。 showImg(https://segmentfault.com/img/bVbnEYo?w=1227&h=682);作者:Jing Xu(谷歌)、Xing Yang(华为)、Saa...
摘要:距离上一次版本发布三个月之隔,是今年的第三个主要版本。证书轮换证书轮换功能现已进入状态。这一功能可以在当前证书到期时自动续订密钥和服务器的证书。更多包含许多修复和内部组件的改进,此次的更新明显侧重于稳定核心以及使现有的功能成熟。 Kubernetes1.12已于今日全新发布!Kubelet证书轮换、资源配额优先级、挂载命名空间、对Azure的增强支持等10大亮点功能,本文为你一一解读!...
摘要:作者,高级软件工程师实施的容器存储接口已在版本中升级为。功能受弃用政策保护。随着容器存储接口的采用,卷层变得真正可扩展。年中国论坛提案征集现已开放论坛让用户开发人员从业人员汇聚一堂,面对面进行交流合作。 showImg(https://segmentfault.com/img/bVbnBe1?w=620&h=340); 作者:Saad Ali,Google高级软件工程师 Kuberne...
摘要:作者,高级软件工程师实施的容器存储接口已在版本中升级为。功能受弃用政策保护。随着容器存储接口的采用,卷层变得真正可扩展。年中国论坛提案征集现已开放论坛让用户开发人员从业人员汇聚一堂,面对面进行交流合作。 showImg(https://segmentfault.com/img/bVbnBe1?w=620&h=340); 作者:Saad Ali,Google高级软件工程师 Kuberne...
摘要:作者随着西雅图的闭幕,这是我们迄今为止最丰富的节目中所有云原生优点的快照。包括西雅图在内,在过去两年中提供了超过个多样性奖学金参加。西雅图有名导师和多名学员参加了这个计划。 作者:Natasha Woods 随着KubeCon西雅图的闭幕,这是我们迄今为止最丰富的节目中所有云原生优点的快照。 门票售罄的KubeCon + CloudNativeCon北美2018是在过去的CNCF活动中...
阅读 2490·2021-11-25 09:43
阅读 2584·2021-11-16 11:50
阅读 3279·2021-10-09 09:44
阅读 3192·2021-09-26 09:55
阅读 2833·2019-08-30 13:50
阅读 1025·2019-08-29 13:24
阅读 2067·2019-08-26 11:44
阅读 2789·2019-08-26 11:37