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

存储类型对比

类型持久化共享性能适用场景
emptyDirPod 内高(内存)缓存、临时数据
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

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