什么是 Rook?

Rook is an open source cloud-native storage orchestrator, providing the platform, framework, and support for a diverse set of storage solutions to natively integrate with cloud-native environments. Rook 是一个开源云原生存储编排器,为各种存储解决方案提供平台、框架和支持,以与云原生环境进行原生集成。

Rook 将存储软件转变为自我管理、自我扩展和自我修复的存储服务。 它通过自动化部署、引导、配置、供应、扩展、升级、迁移、灾难恢复、监控和资源管理来实现这一点。 Rook 使用底层云原生容器管理、调度和编排平台提供的设施来执行其职责。

部署 ceph

实践使用教训:
体量不大的产品不建议用此方案。
1. 磁盘存储量一定要足够,否则会发生异常。
2. 大量的写操作的数据不建议放 ceph。

为了配置 Ceph 存储集群,至少需要以下本地存储选项之一:

  • 原始设备(无分区或格式化文件系统)
  • 原始分区(无格式化文件系统)
  • block 模式下存储类可用的 PV

使用 lsblk -f 查看

  1. git clone --single-branch --branch release-1.7 https://github.com/rook/rook.git
  2. cd rook/cluster/examples/kubernetes/ceph
  3. # 修改 operator.yaml 可替换为私有仓库镜像
  4. kubectl create -f crds.yaml -f common.yaml -f operator.yaml
  5. # 修改文件中的 storage 可指定硬盘添加到集群中,默认扫描所有节点的空磁盘
  6. kubectl create -f cluster.yaml
  7. # 运行 ceph 工具箱
  8. kubectl create -f toolbox.yaml
  9. # 创建存储类
  10. # https://github.com/rook/rook/blob/master/cluster/examples/kubernetes/ceph/csi/rbd/storageclass.yaml
  11. kubectl create -f csi/rbd/storageclass.yaml
  12. # 配置面板
  13. kubectl create -f dashboard-external-https.yaml
  14. # 获取密码,账户:admin,端口通过 svc 查看
  15. kubectl -n rook-ceph get secret rook-ceph-dashboard-password -o jsonpath="{['data']['password']}" | base64 --decode && echo
  16. kubectl -n rook-ceph get svc

image.png