前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Kubernetes 1.24:卷扩展现在是个稳定特性

Kubernetes 1.24:卷扩展现在是个稳定特性

作者头像
CNCF
发布2022-06-10 14:14:49
5770
发布2022-06-10 14:14:49
举报
文章被收录于专栏:CNCF

作者:Hemant Kumar(红帽)

卷扩展(Volume expansion)是在 Kubernetes 1.8 中作为 alpha 功能引入,在 1.11 中成为 beta,而在 Kubernetes 1.24 中,我们很高兴地宣布卷扩展的全面可用性(GA)。

此功能允许 Kubernetes 用户,简单地编辑他们的 PersistentVolumeClaim 对象,并在 PVC Spec 中指定新的大小,Kubernetes 将使用存储后端自动扩展卷,并扩展 Pod 正在使用的底层文件系统,如果可能,不需要任何停机时间。

如何使用卷扩展

你可以通过编辑 PVC 的 spec 字段,指定不同的(更大的)存储请求来触发 PersistentVolume 的扩展。例如,给定以下 PVC:

代码语言:javascript
复制
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
  name: myclaim
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 1Gi # specify new size here

你可以通过指定新值,而不是旧的 1Gi 大小,来请求扩展基础 PersistentVolume。一旦更改了请求的大小,观察 PVC 的 status.conditions 字段,查看调整大小是否已完成。

当 Kubernetes 开始扩展卷时,它会向 PVC 添加 Resizing 条件,一旦扩展完成,就会删除该条件。还可以通过监测与 PVC 相关的事件来获得有关扩展操作进度的更多信息:

代码语言:javascript
复制
kubectl describe pvc <pvc>

存储驱动程序的支持

但是,默认情况下,并非每种卷类型都是可扩展的。有些卷类型(如 intree hostpath 卷)根本不可扩展。对于 CSI 卷——CSI 驱动程序必须在控制器或节点服务(如果适用,也可以在两者)中具有 EXPAND_VOLUME 功能。请参考 CSI 驱动程序的文档,以了解它是否支持卷扩展。

请参考卷扩展文档,了解支持卷扩展的 intree 卷类型——Expanding Persistent Volumes[1]

通常,为了对可扩展的卷提供某种程度的控制,只有存储类 allowVolumeExpansion 参数设置为 true 的动态调配的 PVC 才是可扩展的。

Kubernetes 集群管理员必须编辑适当的 StorageClass 对象,并将 allowVolumeExpansion 字段设置为 true。例如:

代码语言:javascript
复制
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: gp2-default
provisioner: kubernetes.io/aws-ebs
parameters:
  secretNamespace: ""
  secretName: ""
allowVolumeExpansion: true

线上扩张与线下扩张相比

默认情况下,Kubernetes 会在用户请求调整大小后立即尝试扩展卷。如果一个或多个 pod 正在使用该卷,Kubernetes 会尝试使用在线调整大小来扩展该卷;因此,卷扩展通常不需要应用程序停机。节点上的文件系统扩展也是在线执行的,因此不需要关闭任何使用 PVC 的 Pod。

如果你扩展一个未使用的 PersistentVolume,Kubernetes 会进行离线调整大小(而且,因为该卷未被使用,所以也不会中断工作负载)。

但是在某些情况下——如果底层存储驱动程序只能支持离线扩展,PVC 的用户必须在扩展成功之前关闭他们的 Pod。请参考你的存储提供商的文档,以了解它支持的卷扩展模式。

当卷扩展作为 alpha 特性引入时,Kubernetes 只支持节点上的离线文件系统扩展,因此需要用户重启 pod 来完成文件系统调整。该行为已经改变,Kubernetes 尽力满足任何调整大小的请求,而不管底层 PersistentVolume 卷是在线还是离线。如果你的存储提供商支持在线扩展,则无需重新启动 Pod 即可完成卷扩展。

下一步

尽管卷扩展作为最近 1.24 版本的一部分现在已经稳定,但 SIG Storage 正在努力使 Kubernetes 的用户更容易扩展他们的持久存储。Kubernetes 1.23 引入了从失败的卷扩展中触发恢复的功能,允许用户在调整失败后尝试自助修复。有关详细信息,请参见从卷扩展故障中恢复[2]

Kubernetes 贡献者社区也在讨论 StatefulSet 驱动的存储扩展的潜力。这个提议的特性将允许你通过直接编辑 StatefulSet 对象来触发为 StatefulSet 提供存储的所有底层 PV 的扩展。有关更多详细信息,请参见Support Volume Expansion Through StatefulSets[3]增强提案。

参考资料

[1]

Expanding Persistent Volumes: https://kubernetes.io/docs/concepts/storage/persistent-volumes/#expanding-persistent-volumes-claims

[2]

从卷扩展故障中恢复: https://kubernetes.io/docs/concepts/storage/persistent-volumes/#recovering-from-failure-when-expanding-volumes

[3]

Support Volume Expansion Through StatefulSets: https://github.com/kubernetes/enhancements/issues/661


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

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

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-05-05,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 CNCF 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 如何使用卷扩展
  • 存储驱动程序的支持
  • 线上扩张与线下扩张相比
  • 下一步
    • 参考资料
    相关产品与服务
    容器服务
    腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档