Ubuntu上Kubernetes存储如何实现
导读:Ubuntu上Kubernetes存储实现指南 一 架构与选型 核心抽象是PersistentVolume(PV)/PersistentVolumeClaim(PVC)/StorageClass:应用通过PVC申请存储,由PV落地到具体介...
Ubuntu上Kubernetes存储实现指南
一 架构与选型
- 核心抽象是PersistentVolume(PV)/PersistentVolumeClaim(PVC)/StorageClass:应用通过PVC申请存储,由PV落地到具体介质;StorageClass配合“动态供给”自动创建PV。访问模式包括:ReadWriteOnce(单节点读写)、ReadOnlyMany(多节点只读)、ReadWriteMany(多节点读写)。
- 插件形态演进:In-Tree(内置,逐步淘汰)→ FlexVolume(外部脚本,过渡)→ CSI(容器化、标准化,推荐)。在Ubuntu上,优先选择CSI驱动或成熟的外部供应器;传统方式如NFS/HostPath适合测试或轻量场景。
二 快速上手路径
- 静态供给(以NFS为例)
- 在Ubuntu上部署NFS服务器:安装包、创建共享目录、配置**/etc/exports**、启动服务。
- 在Kubernetes创建PV(指定nfs.server与nfs.path,accessModes常用ReadWriteMany)。
- 创建PVC请求存储,随后在Pod中通过volumeMounts挂载PVC。
- 适用读多写少、跨节点共享的共享文件系统场景。
- 动态供给(以NFS为例)
- 部署NFS的external-provisioner(RBAC、Deployment),该组件监听StorageClass并自动创建/删除PV。
- 创建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与密钥;镜像单挂载 |
| 多节点共享文件 | CephFS 或 GlusterFS+Heketi | 支持RWX、多读多写 | 适合内容管理、日志共享等 |
| 低成本共享存储 | NFS(静态或动态) | 部署简单、兼容性好 | 建议配合备份与权限控制 |
| 本地开发/CI | HostPath | 快速验证 | 非生产、不具备HA与迁移性 |
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Ubuntu上Kubernetes存储如何实现
本文地址: https://pptw.com/jishu/769002.html
