本文发表于一年多前。旧文章可能包含过时内容。请检查页面中的信息自发布以来是否已变得不正确。
Kubernetes 1.29:CSI 存储大小调整在 v1.29 中经过身份验证并正式可用
Kubernetes v1.29 版本为 CSI(容器存储接口)存储卷大小调整操作中的身份验证提供了正式可用(GA)的支持。
让我们回顾一下该功能的演进过程,它最初在 Kubernetes v1.25 中作为 Alpha 功能引入,并了解其过渡到 GA 之后带来的变化。
带身份验证的 CSI 存储卷大小调整功能揭晓
Kubernetes 利用 CSI 的能力与第三方存储系统无缝集成,使你的集群能够无缝扩展由 CSI 驱动程序管理的存储卷。最近,用于调整大小操作的身份验证 Secret 支持从 Beta 提升到 GA,开启了新的可能性,使得在底层存储操作需要凭据进行后端集群操作时(例如访问 SAN/NAS 存储网络)也能够进行卷扩展。这一增强功能解决了 CSI 驱动程序的一个关键限制,允许在节点级别进行卷扩展,特别是在需要身份验证才能调整大小的情况下。
挑战不仅限于节点级别的扩展。在 Special Interest Group(SIG)Storage 内部,出现了一些用例,包括 CSI 驱动程序在启动节点级文件系统扩展操作之前,需要验证后端块存储的实际大小。这种验证可以防止在文件系统扩展期间后端存储集群返回错误的“成功”信息。此外,对于代表加密块存储(例如使用 LUKS)的 PersistentVolume,需要密码来扩展设备并增长文件系统,这凸显了带身份验证的大小调整的必要性。
Kubernetes v1.29 的新变化
随着该功能进入 GA 阶段,它默认保持启用状态。对节点级卷扩展 Secret 的支持已无缝集成到 CSI external-provisioner sidecar 控制器中。要使用此功能,请确保你的外部 CSI 存储供应器 sidecar 控制器版本为 v3.3.0 或更高。
使用带身份验证的 CSI 存储卷大小调整
假设所有必需的组件(包括 CSI 驱动程序)都已在你的集群上部署并运行,并且你有一个支持调整大小的 CSI 驱动程序,你可以在 CSI 卷上发起一个 `NodeExpand` 操作。CSI `NodeExpand` 操作的凭据可以方便地作为 Kubernetes Secret 提供,并通过 StorageClass 指定该 Secret。以下是一个包含凭据的 Secret 的示例清单:
---
apiVersion: v1
kind: Secret
metadata:
name: test-secret
namespace: default
data:
stringData:
username: admin
password: t0p-Secret
这是一个引用这些凭据的 StorageClass 的示例清单:
---
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: csi-blockstorage-sc
parameters:
csi.storage.k8s.io/node-expand-secret-name: test-secret
csi.storage.k8s.io/node-expand-secret-namespace: default
provisioner: blockstorage.cloudprovider.example
reclaimPolicy: Delete
volumeBindingMode: Immediate
allowVolumeExpansion: true
成功创建 PersistentVolumeClaim (PVC) 后,你可以在 PersistentVolume 的 .spec.csi 字段中验证配置。要确认,请执行 `kubectl get persistentvolume <pv_name> -o yaml`。
参与到演进中来!
对于那些热衷于贡献或深入研究技术细节的人,增强提案包含了有关该功能历史和实现的详尽细节。通过参考 [Storage Class 文档] (https://kubernetes.ac.cn/docs/concepts/storage/persistent-volumes/#class) 和总体的 PersistentVolumes 文档,探索 Kubernetes 中基于 StorageClass 的动态供应领域。
加入 Kubernetes Storage SIG(特别兴趣小组),积极参与提升此功能。你的见解是宝贵的,我们热切期待更多贡献者加入,共同塑造 Kubernetes 存储的未来!