一、临时存储方案(测试环境适用)

1. emptyDir:生命周期与 Pod 绑定

特性:

  • Pod 创建时自动分配空目录
  • Pod 删除后数据立即丢失
  • 适合场景:临时缓存、中间计算结果
apiVersion: apps/v1
kind: Deployment
metadata:
  name: cache-service
spec:
  template:
    spec:
      containers:
      - name: redis
        image: redis:alpine
        volumeMounts:
        - mountPath: /data
          name: cache-vol
      volumes:
      - name: cache-vol
        emptyDir: {}  # 声明emptyDir卷

2. hostPath:节点本地存储(慎用!)

风险提示

  • 数据存储在特定节点目录(如 /tmp
  • 节点故障会导致数据永久丢失
  • 禁止生产环境使用!
volumes:
- name: temp-data
  hostPath:
    path: /tmp/db-data  # 节点物理路径
    type: DirectoryOrCreate  # 目录不存在时自动创建

二、持久化存储方案(生产环境必备)

1、静态配置实例
步骤1:创建 PersistentVolume (PV)
apiVersion: v1
kind: PersistentVolume
metadata:
  name: mysql-pv
spec:
  capacity:
    storage: 100Gi
  accessModes:
    - ReadWriteOnce  # 单节点读写
  persistentVolumeReclaimPolicy: Retain  # 删除PVC后保留数据
  hostPath:
    path: /mnt/data/mysql
步骤2:创建 PersistentVolumeClaim (PVC)
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: mysql-pvc
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 80Gi  # 不能超过PV容量
步骤3:挂载到 Deployment
apiVersion: apps/v1
kind: Deployment
metadata:
  name: mysql
spec:
  template:
    spec:
      containers:
      - name: mysql
        image: mysql:8.0
        volumeMounts:
        - mountPath: /var/lib/mysql
          name: data
      volumes:
      - name: data
        persistentVolumeClaim:
          claimName: mysql-pvc  # 关键绑定

2、存储方案选型矩阵

方案

数据持久性

多节点访问

适用场景

emptyDir

临时计算、缓存

hostPath

⚠️

单节点调试(禁用生产)

静态PVC/PV

依赖配置

传统数据库

动态存储类(StorageClass)

云原生应用(推荐)

Logo

开源鸿蒙跨平台开发社区汇聚开发者与厂商,共建“一次开发,多端部署”的开源生态,致力于降低跨端开发门槛,推动万物智联创新。

更多推荐