Skip to content

Kubernetes 存储体系全景 ​

存储架构 ​

应用 Pod
    │ volumeMount
    ▼
Volume(存储卷)
    │
    ├── emptyDir(临时,Pod 生命周期)
    ├── hostPath(节点本地路径)
    ├── configMap / secret(配置数据)
    ├── PersistentVolumeClaim(持久化存储)
    │       │
    │       ▼
    │   PersistentVolume(存储资源)
    │       │ CSI 驱动
    │       ▼
    │   存储后端(NFS/Ceph/云盘/本地SSD)
    └── projected(多源合并)

Volume 类型 ​

emptyDir(临时存储) ​

yaml
volumes:
- name: cache
  emptyDir:
    medium: Memory  # 使用内存(tmpfs),默认为磁盘
    sizeLimit: 1Gi

用途:容器间共享数据、缓存、临时文件

hostPath(节点路径) ​

yaml
volumes:
- name: docker-sock
  hostPath:
    path: /var/run/docker.sock
    type: Socket  # File | Directory | Socket | CharDevice | BlockDevice

⚠️ 安全风险:Pod 可以访问节点文件系统,生产环境谨慎使用

projected(多源合并) ​

yaml
volumes:
- name: all-in-one
  projected:
    sources:
    - configMap:
        name: app-config
    - secret:
        name: app-secret
    - serviceAccountToken:
        path: token
        expirationSeconds: 3600
    - downwardAPI:
        items:
        - path: labels
          fieldRef:
            fieldPath: metadata.labels

存储类型对比 ​

类型持久化共享性能适用场景
emptyDir❌Pod 内高(内存)缓存、临时数据
hostPath✅单节点极高日志、监控
NFS✅多节点中共享文件
Ceph RBD✅单节点高数据库
Ceph CephFS✅多节点中高共享存储
云盘(EBS/PD)✅单节点高云原生数据库
本地 SSD✅单节点极高高性能数据库

访问模式 ​

模式缩写说明
ReadWriteOnceRWO单节点读写
ReadOnlyManyROX多节点只读
ReadWriteManyRWX多节点读写
ReadWriteOncePodRWOP单 Pod 读写(K8s 1.22+)

回收策略 ​

策略说明
Retain保留数据,需手动清理
Delete自动删除存储资源
Recycle清空数据后重用(已废弃)

存储生态 ​

本地存储:
  Local Path Provisioner(开发/测试)
  TopoLVM(生产级本地存储)

分布式存储:
  Rook + Ceph(最流行的云原生存储)
  Longhorn(轻量级分布式块存储)
  OpenEBS(云原生存储)

云厂商:
  AWS EBS / EFS
  GCP Persistent Disk / Filestore
  Azure Disk / File

NFS:
  NFS Subdir External Provisioner

本站内容由 褚成志 整理编写,仅供学习参考