k8s的pvc和pv
管理员准备存储后端并创建 PV:管理员首先需要在外部准备好存储设施(例如搭建一个 NFS 服务器),然后在 Kubernetes 集群中定义一个 PV,指明这块存储的容量、访问模式等信息。此时,PV 处于可用状态,等待被申请
。
用户申请存储并创建 PVC:用户在部署应用(Pod)时,通过创建 PVC 来声明所需要的存储特性,例如需要 10Gi 的、可读写访问的存储。Kubernetes 的持久化存储控制器会为 PVC 寻找一个匹配的 PV,并将它们“绑定”起来
。
Pod 挂载并使用存储:在 Pod 的定义文件中,在 volumes字段引用上一步中已绑定的 PVC。当 Pod 被调度到某个节点后,该节点上的 kubelet会执行挂载操作,将远端的存储(如 NFS)挂载到 Pod 中容器指定的路径上。之后,容器就可以像使用本地目录一样使用这份持久化存储了。
应用场景对比
临时数据共享:Pod 内多容器需要共享临时数据,使用 emptyDir。
节点级别数据持久化:需要访问节点特定文件(如日志、 Docker 套接字)且能接受存储与节点绑定的场景,可使用 hostPath,但需注意其局限性。
跨节点数据持久化与共享:对于需要数据持久化,或多个 Pod(尤其是在不同节点上)需要共享同一份数据的应用(如应用静态文件、数据库),推荐使用基于 网络存储(如 NFS)的 PV/PVC 模式。