Kubernetes 1.29:CSI 存储大小调整已通过身份验证并在 v1.29 中正式发布

Kubernetes v1.29 版本为 CSI(容器存储接口)存储大小调整操作期间的身份验证带来了正式发布的 GA 支持。

让我们开始探讨此功能的演变过程,该功能最初在 Kubernetes v1.25 中以 alpha 形式引入,并揭示其过渡到 GA 所带来的变化。

揭晓经过身份验证的 CSI 存储大小调整

Kubernetes 利用 CSI 的功能与第三方存储系统无缝集成,使您的集群能够无缝扩展由 CSI 驱动程序管理的存储卷。最近将调整大小的身份验证密钥支持从 Beta 提升到 GA,开辟了新的视野,使在底层存储操作需要后端集群操作凭据的情况下(例如访问 SAN/NAS 架构)进行卷扩展成为可能。此增强功能解决了 CSI 驱动程序的一个关键限制,允许在节点级别扩展卷,尤其是在需要身份验证才能执行调整大小操作的情况下。

挑战不仅限于节点级扩展。在特殊兴趣小组(SIG)存储中,已经出现了一些用例,包括 CSI 驱动程序需要在启动节点级文件系统扩展操作之前验证后端块存储的实际大小的情况。这种验证可以防止在文件系统扩展期间从后端存储集群返回错误的正结果。此外,对于表示加密块存储(例如,使用 LUKS)的 PersistentVolume,需要一个密码来扩展设备并增加文件系统,这突显了经过身份验证的调整大小的必要性。

Kubernetes v1.29 的新功能

随着 GA 的发布,该功能默认启用。对节点级卷扩展密钥的支持已无缝集成到 CSI external-provisioner sidecar 控制器中。要利用此功能,请确保您的外部 CSI 存储配置程序 sidecar 控制器运行在 v3.3.0 或更高版本。

假设所有必需的组件(包括 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

参与演变!

对于那些热衷于贡献或深入研究技术细节的人,增强提案包含有关该功能历史和实现的详尽详细信息。通过参考 [存储类文档] (https://kubernetes.top/docs/concepts/storage/persistent-volumes/#class) 和整体 PersistentVolumes 文档,探索 Kubernetes 中基于 StorageClass 的动态配置领域。

加入 Kubernetes 存储 SIG(特殊兴趣小组),积极参与提升此功能。您的见解非常宝贵,我们热切期待欢迎更多贡献者来塑造 Kubernetes 存储的未来!