温馨提示×

Ubuntu上Kubernetes存储如何实现

小樊
41
2025-12-10 17:27:00
栏目: 云计算

Ubuntu上Kubernetes存储实现指南

一 架构与选型

  • 核心抽象是PersistentVolume(PV)/PersistentVolumeClaim(PVC)/StorageClass:应用通过PVC申请存储,由PV落地到具体介质;StorageClass配合“动态供给”自动创建PV。访问模式包括:ReadWriteOnce(单节点读写)ReadOnlyMany(多节点只读)ReadWriteMany(多节点读写)
  • 插件形态演进:In-Tree(内置,逐步淘汰)→ FlexVolume(外部脚本,过渡)→ CSI(容器化、标准化,推荐)。在Ubuntu上,优先选择CSI驱动或成熟的外部供应器;传统方式如NFS/HostPath适合测试或轻量场景。

二 快速上手路径

  • 静态供给(以NFS为例)
    1. 在Ubuntu上部署NFS服务器:安装包、创建共享目录、配置**/etc/exports**、启动服务。
    2. 在Kubernetes创建PV(指定nfs.servernfs.path,accessModes常用ReadWriteMany)。
    3. 创建PVC请求存储,随后在Pod中通过volumeMounts挂载PVC。
    4. 适用读多写少、跨节点共享的共享文件系统场景。
  • 动态供给(以NFS为例)
    1. 部署NFS的external-provisioner(RBAC、Deployment),该组件监听StorageClass并自动创建/删除PV。
    2. 创建StorageClass(provisioner指向NFS provisioner),随后直接创建PVC即可自动拿到PV并挂载到Pod。
  • 本地开发/测试(HostPath)
    • 使用hostPath将节点目录挂载到Pod,便于本地验证;不建议生产使用(不具备节点无关性与高可用)。

三 生产级方案示例

  • Ceph RBD(块存储,单节点读写为主)
    • 在所有Kubernetes节点安装与Ceph集群版本匹配的ceph-common,确保节点具备rbd命令与会话密钥;创建RBD池与镜像;通过StorageClass+external-provisioner(provisioner: ceph.com/rbd)或Operator实现动态供给;注意RBD镜像同一时刻仅能被一个Pod以读写方式挂载
  • CephFS(文件存储,多节点共享)
    • 在集群节点安装ceph-common,创建CephFS文件系统与secret(存放admin或用户密钥);通过StorageClass与相应的CephFS CSI/外部供应器实现动态供给,适合多读多写共享场景。
  • GlusterFS + Heketi(文件存储,多节点共享)
    • 在Ubuntu节点部署GlusterFS集群,使用Heketi通过REST管理卷生命周期(创建卷、扩容、调度brick);在Kubernetes中创建StorageClass对接Heketi,实现按需动态供给。

四 关键配置与排错要点

  • 访问模式匹配:需要多节点共享选ReadWriteMany(如NFS、CephFS、GlusterFS);单实例高性能块存储选ReadWriteOnce(如RBD)。
  • 回收策略:常用Retain(保留数据,手动回收)与Delete(随PVC删除);生产建议Retain并配合备份。
  • 节点依赖:使用RBD/CephFS等时,所有节点需安装ceph-common并配置密钥;历史in-tree方式曾因容器镜像缺少rbd命令导致Pending/ContainerCreating,需改用external-provisioner或确保节点具备rbd工具。
  • 镜像格式:创建RBD镜像时建议指定imageFormat: "2"imageFeatures: “layering”,避免旧内核不支持Format 1导致创建失败。
  • 权限与安全:为NFS共享设置合适的UID/GID与权限;为Ceph使用Secret管理凭据,并限制admin权限到最小集。

五 场景化推荐

场景 推荐方案 关键特性 备注
单节点数据库/有状态服务 Ceph RBD(CSI/Operator) 块存储、性能佳、RWO 需ceph-common与密钥;镜像单挂载
多节点共享文件 CephFSGlusterFS+Heketi 支持RWX、多读多写 适合内容管理、日志共享等
低成本共享存储 NFS(静态或动态) 部署简单、兼容性好 建议配合备份与权限控制
本地开发/CI HostPath 快速验证 非生产、不具备HA与迁移性

0