Kubernetes 数据存储方案全解析:从临时存储到持久化实战
步骤2:创建 PersistentVolumeClaim (PVC)步骤1:创建 PersistentVolume (PV)动态存储类(StorageClass)步骤3:挂载到 Deployment。二、持久化存储方案(生产环境必备)一、临时存储方案(测试环境适用)适合场景:临时缓存、中间计算结果。Pod 创建时自动分配空目录。数据存储在特定节点目录(如。:生命周期与 Pod 绑定。Pod 删除后
·
一、临时存储方案(测试环境适用)
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) |
✅ |
✅ |
云原生应用(推荐) |
更多推荐

所有评论(0)