适用场景:Kubernetes 存储设计 / 持久化数据 / 动态卷自动化
目录
- Kubernetes Volume 概述
基础 Volume 类型
emptyDir、hostPath
网络存储 Volume
- NFS、云盘示例
PersistentVolume (PV) 与 PersistentVolumeClaim (PVC)
- 静态配置示例与访问模式
StorageClass 与动态卷配置(以 NFS 为例)
- NFS Subdir External Provisioner 部署流程
高级 Volume 特性
- 挂载选项、subPath 等
实战案例:WordPress 应用
最佳实践与故障排查
高级实战与底层机制补充
- Ephemeral、CSI、Local PV、StatefulSet+PVC、性能调优
安全性与权限控制
Volume 类型速查表
总结(进阶视角)
延伸阅读建议
Kubernetes Volume 概述
1.1 Volume 的作用和重要性
Kubernetes Volume 为容器提供持久化与共享存储,解决了容器文件系统临时性的问题:
- 数据持久化:容器重启后数据不丢失(对持久化卷)
- 数据共享:多个容器间共享同一目录
- 外部存储集成:连接云存储、NAS、对象存储等
1.2 Volume 的生命周期
- 普遍情况下,Volume 的生命周期与 Pod 绑定(但 PV/PVC 的数据回收由回收策略控制)
- 容器重启不会影响 Volume 数据
- Pod 删除时,数据是否保留取决于 Volume 类型和 PV 的
persistentVolumeReclaimPolicy(Retain/Delete/Recycle)
基础 Volume 类型
emptyDir — 临时存储
当 Pod 启动时创建,Pod 删除时销毁,适合缓存或临时文件。
apiVersion: v1 kind: Pod metadata: name: empty-dir-pod spec: containers: - name: nginx-container image: nginx volumeMounts: - name: cache-volume mountPath: /cache - name: debian-container image: debian volumeMounts: - name: cache-volume mountPath: /cache-data command: ["/bin/sh"] args: ["-c", "echo Hello from debian container > /cache-data/test-file"] volumes: - name: cache-volume emptyDir: sizeLimit: "1Gi" # 可选:限制存储大小特点:
- Pod 启动时创建,Pod 删除时销毁
- 可选
medium: Memory把数据放到 tmpfs(内存) - 适用于临时数据、缓存、进程间通信
hostPath — 节点本地存储
直接挂载宿主机路径,谨慎使用(有安全与可迁移性问题)。
apiVersion: v1 kind: Pod metadata: name: hostpath-pod spec: containers: - name: hostpath-container image: nginx vo