摘要:对象内的字段已重命名以匹配规范更改。 在此初始版本中,快照不支持指定回收策略的功能。 您可以删除或保留卷快照。 2018年中国论坛提案征集现已开始。 论坛将用户开发人员和从业者聚集在一起,进行面对面的交流和协作。
作者:Jing Xu (Google)、Xing Yang (华为)、Saad Ali (Google)
Kubernetes v1.12 卷快照简介作为 alpha 功能受支持。 Kubernetes v1.13 虽然仍是 alpha 功能,但添加了一些增强功能和一些重大更改。 本文总结了这些变化。
重大更改
CSI 规范 v1.0 包括对卷快照功能的一些重大更改。 CSI 驱动程序维护者在升级其驱动程序以支持 v1.0 时应了解这些更改。
SnapshotStatus 被布尔值 ReadyToUse 替换
在 CSI v0.3.0 中,SnapshotStatus 枚举在 CreateSnapshotResponse 中定义,并且快照处于 READY、UPLOADING 或 ERROR_UPLOADING 状态 在 CSI v1.0 中,SnapshotStatus 已从 CreateSnapshotResponse 中删除,并替换为布尔值 ReadyToUse。 ReadyToUse 值为 true 表示快照后操作(例如上传)已完成,并且快照已准备好用作卷创建的源。
需要快照后处理(例如快照完成后上传)的存储系统必须在快照完成后返回成功的 CreateSnapshotResponse 并将 ReadyToUse 字段设置为 false 。 这是因为容器编排系统em,CO)可以重新启动由于快照而停止的工作负载。 CO 可以重复调用 CreateSnapshot,直到 ReadyToUse 字段设置为 true 或调用返回指示处理过程中出现问题的错误。 您可以将 CSI ListSnapshot 调用与 snapshot_id 过滤结合使用来确定快照是否可用,但不建议这样做,因为它无法在处理过程中检测到错误(ReadyToUse 字段将无限期地保持为 false)。
v1.x.x 版本的 CSI 外部快照 sidecar 容器(external-snapshotter sidecar 容器)支持我已经处理了此更改。 将驱动程序升级到 CSI 1.0 时,驱动程序管理员必须使用相应的 1.0 兼容 sidecar 容器。
VolumeSnapshot API 对象的 Ready 字段已重命名为 ReadyToUse,以匹配 CSI 规范中的更改。 用户可以通过运行 kubectl description Volumesnapshot 查看快照详细信息来查看此更改。
时间戳数据类型
快照创建时间可作为 VolumeSnapshotContent API 对象的一部分提供给 Kubernetes 管理员。 该字段使用 CSI CreateSnapshotResponse 的 Creation_time 字段来设置。 在 CSI v1.0 中,此 Creation_time 字段类型已更改为 .google.protobuf.Timestamp 而不是 int64。 将驱动程序升级到 CSI 1.0 时,驱动程序管理员必须进行相应的更改。 CSI 外部 snapper sidecar 容器的 v1.x.x 版本已更新以适应此更改。
已弃用
下一个 VolumeSnapshotClass 参数已弃用,并将在未来版本中删除。 这些将被下面“替换”部分中列出的参数替换。
已弃用 csiSnapshotterSecretName,已替换为 csi.storage.k8s.io/snapshotter-secret-name
已弃用 csiSnapshotterSecretNameSpace,已替换为 k8s.io/snapshotter。 -secret-命名空间
新功能Snapshot内容删除/保留策略
Snapshot alpha 与宣布它的第一篇博客文章类似,Kubernetes 快照API 类似于 PV/PVC API,如 中所述。 与卷类似,卷由一对绑定的 PVC 和 PV 表示,快照由一对绑定的 VolumeSnapshot 和 VolumeSnapshotContent 表示。
对于 PV/PVC 对,用户可以在使用完卷后删除 PVC。 PV 的回收策略决定了 PV 会发生什么(删除或保留)。
在早期的 alpha 版本中,快照不支持指定回收策略的功能。 每当删除快照对象时,快照也会被删除。 Kubernetes v1.13 为快照内容添加了 DeletionPolicy。 这允许管理员配置 VolumeSnapshotContent 在删除绑定的 VolumeSnapshot 对象时如何处理。 卷快照的删除策略可以是保留或删除。 如果未指定该值,则默认值取决于 SnapshotContent 对象是通过静态绑定还是动态配置创建的。
保留
保留策略允许您手动回收资源。 如果静态创建绑定 VolumeSnapshotContent。 默认删除策略是保留。 即使删除了 VolumeSnapshot,VolumeSnapshotContent 仍然存在,并且 VolumeSnapshotContent 被视为“已释放”。 但是,由于它包含数据,因此不能用于绑定到其他 VolumeSnapshot 对象。 由您决定如何清理剩余的 API 对象和资源。
删除
删除策略允许您自动从 Kubernetes 中删除绑定的 VolumeSnapshotContent 对象或删除外部基础设施中的关联存储资产(例如 AWS EBS 快照或 GCE PD 快照等)。 。 )。 动态配置的快照继承其VolumeSnapshotClass的删除策略。 默认为删除。
管理员必须使用所需的保留策略配置 VolumeSnapshotClass。 创建策略后,您可以通过修补对象来修改单个 VolumeSnapshotContent 的策略。
以下示例演示如何检查动态配置的 VolumeSnapshotContent 的删除策略。
$ kubectl create -f ./examples/kubernetes/demo-defaultsnapshotclass.yaml$ kubectl create -f ./examples/kubernetes/demo-snapshot.yaml$ kubectl get卷快照演示 - 快照 - podpvc - o yamlapi 版本:snapshot.storage.k8s.io/v1alpha1kind:VolumeSnapshotmeta数据:creationTimestamp:“2018-11-27T23:57:09Z”...规范:snapshotClassName:default-snapshot-class snapshotContentName:snapcontent-26cd0db3-f2a0-11e8 -8be6-42010a800002 来源:apiGroup:null 类型:持久 VolumeClaim 名称:podpvcstatus:…$ kubectl get Volumesnapshotcontent snapcontent-26cd0db3-f2a0-11e8-8be6-42010a800002 - o YAMLAPIVIRSION:SNAPSHOT.STORAGE.K8S.io/v1alPha1kind:VolumesnapshotContent…规格:CSIVOLUMESNAP来源:CreationTime:154646697777785200000000 DR Iver:pd.csi.storage.gke.io RESTORESIZE:6442450944 项目/Jing [K4 ] k8s - 开发/全局/snapshots/snapshot-26cd0db3-f2a0-11e8-8be6-42010a800002 删除策略:DeletepercientVolumeRef:apiVersion:v1 种类:PersistentVolume名称:pvc-853622a4-f28b-11e8-8be6-42010a800002资源版本:“21117”uid:ae400e9f-f28b-11e8-8be6-42010a800002名称:默认-Snapshot-类volumeSnapshotRef:apiVersion:snapshot.storage.k8s.io/v1alpha1类型:VolumeSnapshot名称:demo-snapshot-podpvc命名空间:默认resourceVersion:“6948065”uid:26cd0db3 [k4 ] f2a0-11e8-8be6-42010a800002
用户可以使用补丁更改删除策略:
$ kubectl patchvolumesnapshotcontentsnapcontent-26cd0db3- f2a0 -11e8-8be6-42010a800002 -p "{"spec":{"deletionPolicy":"保留"}}" --type=merge$ kubectl 获取卷快照内容 snapcontent[k4 ] 26cd0db3-f2a0-11e8-8be6-42010a800002 -o yamlapi 版本:snapshot.storage.k8s.io/v1alpha1kind:VolumeSnapshotContent...规格:csi VolumeSnapshotSource:...删除策略:RetainpersistentVolumeRef:apiVersion:v1 种类:持久卷名称:pvc-853622a4-f28b-11e8-8be6-42010a800002..
在使用快照对象时对其进行保护
“在使用快照对象时对其进行保护”功能的目的是防止正在使用的快照被从快照中删除。是要做的。 快照 API 对象(因为可能会发生数据丢失)。 有两种情况需要“使用中”保护。
当 PVC 使用卷快照作为卷创建源时。
如果 VolumeSnapshotContent API 对象绑定到 VolumeSnapshot API 对象,则认为内容对象正在使用。
当用户删除 PVC 正在使用的 VolumeSnapshot API 对象时,该 VolumeSnapshot 对象不会立即删除。 VolumeSnapshot 对象的删除会推迟到 PVC 不再使用该 VolumeSnapshot 为止。 同样,如果管理员删除绑定到 VolumeSnapshot 的 VolumeSnapshotContent,则不会立即删除 VolumeSnapshotContent。 VolumeSnapshotContent 的删除会被推迟,直到 VolumeSnapshotContent 不再绑定到 VolumeSnapshot 对象为止。
哪些卷插件支持 Kubernetes 快照?
快照仅受 CSI 驱动程序支持(在 -tree 中或(不适用于 F))雷克斯卷)。 要使用Kubernetes快照功能,请确保您的集群上部署了实现快照的CSI驱动程序。
截至本博文,以下 CSI 驱动程序支持快照:
GCE 持久磁盘 CSI 驱动程序
OpenSDS CSI 驱动程序
Ceph RBD CSI 驱动程序
Portworx CSI 驱动程序
GlusterFS CSI 驱动程序
Digital Ocean CSI 驱动程序
Ember CSI 驱动程序
Cinder CSI 驱动程序
Datera CSI 驱动程序
NexentaStor CSI 驱动程序
对其他驱动程序的快照支持即将推出。 有关如何部署 CSI 和 CSI 驱动程序的更多信息,请参阅博客文章 Kubernetes 的容器存储接口 (CSI) 已正式发布。
下一步?
根据反馈和采用情况,Kubernetes 团队计划在 1.15 或 1.16 版本中将 CSI 快照实现推入测试版。 我们感兴趣的功能包括一致性组、应用程序一致性快照、工作负载静止和就地恢复。
如何了解更多信息
快照 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、 ETC。)。 ( jdef), John Griffith (j-griffith), Julian Hjorshoji (julian-hj), Tim Hockin (thockin), Patrick Oley (pohly), Luis Pabon (lpabon), Chen Xin (verult), Jing Xu ( jingxu97)、Shiwei Xu (wackxu)、Xing Yang (xing-yang)、Jie Yu (jieyu)、David Zhu (davidz627)。
如果您有兴趣参与 CSI 或 Kubernetes 存储系统任何部分的设计和开发,请加入 Kubernetes 存储特别兴趣组 (SIG)。 我们正在快速发展,并始终欢迎新的贡献者。
我们还定期举行 SIG- 存储快照工作组会议。 也欢迎新参与者加入设计和开发讨论。
2019 KubeCon + CloudNativeCon 中国论坛提案征集(CFP)现已开放
KubeCon + CloudNativeCon 论坛邀请用户、开发者、人员聚集在一起进行面对面的沟通和协作。 与会者将包括来自 Kubernetes、Prometheus 和其他云原生计算基金会 (CNCF) 赞助项目的领导者,共同讨论云原生生态系统的发展方向。
2019中国开源峰会提案征集(CFP)现已开放
参与者将在中国开源峰会上进行合作我们还分享信息,帮助您了解最新、最有趣的开源技术,包括 Linux、容器、云技术、网络、微服务等。 获取有关如何指导和领导开源社区的信息。
会议日期:
提案征集截止日期:太平洋标准时间 2 月 15 日星期五晚上 11:59
提案征集通知日期:2019年4月1日
会议日程通知日期:2019年4月3日
幻灯片提交截止日期:6月17日星期一
会议活动日期:6月24日 - 2019年2月26日
2019 KubeCon + CloudNativeCon +开源峰会中国赞助计划发布
评论前必须登录!
注册