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