SorryToPerson logo
返回
Kubernetes2026-04-15·8 分钟

Kubernetes 存储与持久化

介绍 Kubernetes 存储模型、Volume 类型、持久卷和存储类的基本用法。

Kubernetes 存储与持久化

1. Volume 与 Pod 生命周期

  • Pod 重启时,普通 emptyDir 数据会丢失。
  • Volume 用于在容器间共享数据或持久化数据。

2. 常见 Volume 类型

  • emptyDir:临时目录,Pod 生命周期内有效。
  • hostPath:挂载宿主机目录,适合调试。
  • persistentVolumeClaim:结合 PV 实现持久化存储。

3. PersistentVolume 与 PersistentVolumeClaim

yaml
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: db-pvc
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 10Gi
  • PVC 是对存储资源的请求。
  • PV 是集群中的存储资源与后端提供者的绑定。

4. StorageClass

yaml
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: fast
provisioner: kubernetes.io/aws-ebs
parameters:
  type: gp3
  • StorageClass 定义动态供给策略。
  • 不同云厂商或本地存储使用不同 provisioner。

5. 在 Deployment 中使用 PVC

yaml
volumes:
  - name: db-data
    persistentVolumeClaim:
      claimName: db-pvc
  • 适合数据库、缓存持久化和文件存储。

6. 访问模式

  • ReadWriteOnce:单节点读写。
  • ReadOnlyMany:多节点只读。
  • ReadWriteMany:多节点读写。

7. 备份与恢复

  • 对关键存储使用备份方案,如 Velero、应用级备份。
  • PVC 本身不代表备份,仍需外部备份策略。

8. 常见问题

  • PVC 绑定失败:检查 StorageClass 和 provisioner。
  • 数据丢失:确认使用了持久化卷而非 emptyDir
  • 权限问题:检查挂载路径与文件系统权限。
Kubernetes存储持久化