本文发布时间已超过一年。较旧的文章可能包含过时的内容。请检查页面信息自发布以来是否已不再正确。

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 驱动的一个关键限制,允许在节点级别进行卷扩展,特别是在扩容操作需要认证的情况下。

挑战不仅限于节点级别扩展。在存储特别兴趣小组 (SIG Storage) 内部,已经出现了一些用例,包括 CSI 驱动需要在启动节点级别文件系统扩展操作之前验证后端块存储的实际大小的场景。此验证可以防止文件系统扩展期间从后端存储集群返回误报。此外,对于代表加密块存储(例如,使用 LUKS)的 PersistentVolumes,需要口令才能扩展设备并扩容文件系统,这突显了带认证扩容的必要性。

Kubernetes v1.29 的新特性

随着该特性正式发布 (GA),它默认保持启用状态。节点级别卷扩展 Secret 的支持已无缝集成到 CSI external-provisioner sidecar 控制器中。要利用此特性,请确保你的外部 CSI 存储 provisioner 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.ac.cn/docs/concepts/storage/persistent-volumes/#class)和更全面的PersistentVolumes文档,探索基于 StorageClass 的 Kubernetes 动态供应领域。

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