本地卷适合什么场景
local 卷把节点上的本地磁盘目录直接暴露成持久卷,读写路径短,吞吐和延迟都优于网络存储。代价是数据绑定在这台机器上:节点故障时数据不可用,换节点也无法带着走。因此它必须配合节点亲和把工作负载固定在对应节点上,回收策略也建议设为保留。
基本信息
| 适用平台 | Kubernetes 1.20+,需自行准备磁盘 |
|---|---|
| 提供方式 | 静态创建持久卷,或用本地卷供应器批量生成 |
| 访问模式 | 通常为单节点读写 |
| 调度约束 | 必须配合节点亲和,否则可能调度到没有该磁盘的节点 |
| 回收策略 | 推荐保留,避免数据被自动清理 |
典型使用场景
- 对延迟敏感的数据库或缓存,网络存储的往返开销无法接受
- 大数据、日志类应用需要高顺序读写带宽,本地固态盘更合适
- 边缘或单机环境没有集中式存储可用,只能用本机磁盘
- 临时性能测试对比本地盘与网络存储的差异
- 把本地盘作为缓存层,真正的持久数据另有备份
local 卷定义片段
local 卷定义片段
apiVersion: v1
kind: PersistentVolume
metadata:
name: local-pv-node1
spec:
capacity:
storage: 500Gi
accessModes:
- ReadWriteOnce
persistentVolumeReclaimPolicy: Retain # 保留数据,人工确认后再清理
storageClassName: local-ssd
local:
path: /mnt/disks/ssd1 # 节点上已格式化并挂载的目录
nodeAffinity:
required:
nodeSelectorTerms:
- matchExpressions:
- key: kubernetes.io/hostname
operator: In
values:
- node1字段读法
| 字段 | 作用 | 注意点 |
|---|---|---|
| local.path | 节点上的目录路径 | 需预先创建、格式化并挂载,系统不会代劳 |
| nodeAffinity | 把卷绑定到指定节点 | 漏配会导致调度到无盘节点、挂载失败 |
| reclaimPolicy | 卷释放后的处理 | 保留最安全,删除模式下数据会随卷消失 |
| storageClassName | 用于匹配声明 | 要与声明中的类名一致才能绑定 |
本地卷通常配合静态供应器批量创建,它扫描节点上预置的挂载点并生成对应的持久卷对象,避免手写大量清单。节点上的磁盘准备仍然是运维的活。
本地卷没有跨节点冗余。节点故障时数据不可读,恢复依赖节点修复或备份,因此不适合没有备份机制的唯一数据副本。