
动态存储
StorageClass官方文档:https://kubernetes.io/zh-cn/docs/concepts/storage/storage-classes/
StorageClass:存储类,由K8s管理员创建,用于动态管理PV,可以链接至不同的后端存储(Ceph、GlusterFS等)。
当应用(通过PVC)请求存储时,存储的请求会指向StorageClass,然后StorageClass会自动的创建、删除PV。 实现方式: in-tree: 内置于K8s核心代码,对于存储的管理,都需要编写相应的代码。 out-of-tree:由存储厂商提供一个驱动(CSI),安装到K8s集群,然 后StorageClass只需要配置该驱动即可,驱动器会代替StorageClass管理存储。
CSI:Kubernetes的容器存储接口标准,为各种外部存储系统提供统一的插件化接入方式

云原生存储编排器Rook
Rook是云原生存储编排器,在Kubernetes与分布式存储系统(如Ceph)之间搭建桥梁,将存储系统转变为自动化管理的存储服务,让部署、配置、扩容、监控等操作完全自动化。它通过CSI支持PVC的快照、扩容、克隆等高级功能
Rook存储架构

- Rook模式:
- Operator模式:用于自动化管理有状态服务或复杂应用的Kubernetes控制器模式(Ceph、Prometheus、MySQL、Elasticsearch)
- Helm模式:主要用于部署和版本化管理无状态服务的Kubernetes包管理器(Nginx、Grafana、redis)
- Rook插件:
- Agent:运行在每个节点上的守护进程,负责Kubernetes存储卷的实际挂载和格式化操作
- Discover:自动检测存储节点上可用磁盘设备的发现服务
- Ceph插件:
- Ceph OSD:直接管理物理磁盘的对象存储守护进程,负责数据存储和副本维护。
- Ceph MON:维护整个集群状态和拓扑信息的监控器组件。
- Ceph MDS:为CephFS文件系统提供元数据管理服务的服务器。
- Ceph RGW:提供兼容S3和Swift接口的对象存储网关服务。
- Ceph MGR:Ceph集群的管理器组件,负责提供集群监控、指标收集和模块化扩展功能的管理接口。
Rook安装注意事项
K8s集群至少五个节点,每个节点的内存不低于5G,CPU不低于2核
至少有三个存储节点,并且每个节点至少有一个裸盘
K8s集群所有的节点时间必须一致
Rook安装部署
[root@k8s-master01 ceph]# kubectl describe node |grep Taint Taints: <none> Taints: <none> Taints: <none> Taints: <none> Taints: <none>
Rook安装
使用 Rook >1.3 版本创建集群时,使用挂载未格式化的裸盘,不要使用创建文件系统或目录
每个节点配置不能低于2核4G
k8s 1.19 以上版本,快照功能需要单独安装 snapshot 控制器
- 下载Rook安装文件
git clone --single-branch --branch v1.6.3 https://github.com/rook/rook.git
- 配置更改
cd rook/cluster/examples/kubernetes/ceph
vim operator.yaml
# ROOK_CSI_CEPH_IMAGE: "quay.io/cephcsi/cephcsi:v3.3.1" # ROOK_CSI_REGISTRAR_IMAGE: "k8s.gcr.io/sig-storage/csi-node-driver-registrar:v2.0.1" # ROOK_CSI_RESIZER_IMAGE: "k8s.gcr.io/sig-storage/csi-resizer:v1.0.1" # ROOK_CSI_PROVISIONER_IMAGE: "k8s.gcr.io/sig-storage/csi-provisioner:v2.0.4" # ROOK_CSI_SNAPSHOTTER_IMAGE: "k8s.gcr.io/sig-storage/csi-snapshotter:v4.0.0" # ROOK_CSI_ATTACHER_IMAGE: "k8s.gcr.io/sig-storage/csi-attacher:v3.0.2" ROOK_CSI_CEPH_IMAGE: "quay.io/cephcsi/cephcsi:v3.3.1" ROOK_CSI_REGISTRAR_IMAGE: "crpi-dluio7wrsqcvaggn.cn-hangzhou.personal.cr.aliyuncs.com/yuanxiaojiang/csi-node-driver-registrar:v2.0.1" ROOK_CSI_RESIZER_IMAGE: "crpi-dluio7wrsqcvaggn.cn-hangzhou.personal.cr.aliyuncs.com/yuanxiaojiang/csi-resizer:v1.0.1" ROOK_CSI_PROVISIONER_IMAGE: "crpi-dluio7wrsqcvaggn.cn-hangzhou.personal.cr.aliyuncs.com/yuanxiaojiang/csi-provisioner:v2.0.4" ROOK_CSI_SNAPSHOTTER_IMAGE: "crpi-dluio7wrsqcvaggn.cn-hangzhou.personal.cr.aliyuncs.com/yuanxiaojiang/csi-snapshotter:v4.0.0" ROOK_CSI_ATTACHER_IMAGE: "crpi-dluio7wrsqcvaggn.cn-hangzhou.personal.cr.aliyuncs.com/yuanxiaojiang/csi-attacher:v3.0.2"
如果是其他版本,需要自行同步,同步方法可以在网上找到相关文章。可以参考
https://blog.csdn.net/sinat_35543900/article/details/103290782
还 是 operator 文 件 , 新 版 本 rook 默 认 关 闭 了 自 动 发 现 容 器 的 部 署 , 可 以 找 到
ROOK_ENABLE_DISCOVERY_DAEMON 改成 true 即可:
# ROOK_ENABLE_DISCOVERY_DAEMON: "false" ROOK_ENABLE_DISCOVERY_DAEMON: "true"
部署rook
浙公网安备 33010602011771号