在Kubernetes(K8s)集群中,为应用提供持久化存储是一个核心需求。虽然K8s本身提供了多种存储卷类型,但对于需要多节点读写(ReadWriteMany
)的场景,或者希望在私有化环境中快速搭建一个可靠共享存储的场景,hostPath
或K3s默认的local-path-provisioner
便显得力不从心。它们的存储与特定节点绑定,一旦节点故障,数据访问便会中断,甚至有丢失风险。
为了解决这个问题,NFS(Network File System)提供了一个经典且高效的解决方案。它允许我们在网络中共享一个目录,让集群中的所有节点都能访问,从而为Pod提供真正的共享持久化存储。
然而,手动为每个应用创建NFS对应的PersistentVolume
(PV)既繁琐又容易出错。这时,nfs-subdir-external-provisioner
就派上了用场。它是一个动态存储制备器(Dynamic Provisioner),可以监听PersistentVolumeClaim
(PVC)的创建请求,并自动在NFS服务器上创建一个子目录,然后将其注册为PV,最后与PVC进行绑定。整个过程无需人工干预。
本文将以一个后端系统专家的视角,详细介绍如何通过Helm这一强大的K8s包管理器,结合自动化脚本,快速、可靠地在K8s集群中部署nfs-subdir-external-provisioner
,为我们的数据驱动应用提供坚实的存储基础。