官网地址:Ceph.io — Home
Rook 是一个开源云原生存储编排器,为各种存储解决方案提供平台、框架和支持,以便与云原生环境原生集成。
Rook 将存储软件转变为自我管理、自我扩展和自我修复的存储服务。它通过自动化部署、引导、配置、预配、缩放、升级、迁移、灾难恢复、监视和资源管理来实现这一点。Rook 使用底层云原生容器管理、调度和编排平台提供的设施来履行其职责。
Rook 利用扩展点深度集成到云原生环境中,并为调度、生命周期管理、资源管理、安全性、监控和用户体验提供无缝体验。
确保您有一个准备好的 Kubernetes 集群,此次我使用的是k8s1.20.6版本集群
要配置 Ceph 存储集群,至少需要以下本地存储选项之一:
block
可以使用以下命令确认您的分区或设备是否格式化为文件系统。
lsblk -f
NAME FSTYPE LABEL UUID MOUNTPOINT
vda
└─vda1 LVM2_member >eSO50t-GkUV-YKTH-WsGq-hNJY-eKNf-3i07IB
├─ubuntu--vg-root ext4 c2366f76-6e21-4f10-a8f3-6776212e2fe4 /
└─ubuntu--vg-swap_1 swap 9492a3dc-ad75-47cd-9596-678e8cf17ff9 [SWAP]
vdb
如果该字段不为空,则相应设备顶部有一个文件系统。在这种情况下,您可以将 vdb 用于 Ceph,但不能使用 vda 及其分区
安装ceph至少需要三个节点,没有那么多工作节点的可以将master节点污点去除安装ceph。
下载地址:https://codeload.github.com/rook/rook/tar.gz/refs/tags/v1.6.3
国内无法下载k8s.gcr.io仓库的镜像,所以提前拉取镜像修改tag,在每个要安装ceph的节点上执行以下命令:
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/csi-provisioner:v2.0.4
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/csi-provisioner:v2.0.4 k8s.gcr.io/sig-storage/csi-provisioner:v2.0.4
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/csi-attacher:v3.0.2
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/csi-attacher:v3.0.2 k8s.gcr.io/sig-storage/csi-attacher:v3.0.2
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/csi-snapshotter:v4.0.0
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/csi-snapshotter:v4.0.0 k8s.gcr.io/sig-storage/csi-snapshotter:v4.0.0
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/csi-resizer:v1.0.1
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/csi-resizer:v1.0.1 k8s.gcr.io/sig-storage/csi-resizer:v1.0.1
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/csi-node-driver-registrar:v2.0.1
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/csi-node-driver-registrar:v2.0.1 k8s.gcr.io/sig-storage/csi-node-driver-registrar:v2.0.1
tar -zxvf rook-1.6.3.tar.gz
cd rook-1.6.3/cluster/examples/kubernetes/ceph
kubectl create -f crds.yaml -f common.yaml -f operator.yaml
kubectl -n rook-ceph get pod
注意:此次应等待所有Pod启动后再进行下一步,不然会报错
kubectl create -f cluster.yaml
kubectl -n rook-ceph get pod
遇到以上情况不要慌,先describe查看Pod详细信息
说明:我这里是没有提前拉取镜像导致的,拉取镜像打tag就好了,遇到问题不要怕,先看报错信息。
到这里咱们的rook-ceph集群就安装完成了。
要验证群集是否处于正常状态,创建Rook工具箱并运行命令:
kubectl apply -f toolbox.yaml
kubectl get pod -n rook-ceph
kubectl exec -it -n rook-ceph rook-ceph-tools-fc5f9586c-rxpbd -- /bin/bash
集群运行正常,上方的报警是node节点时间不同步导致的,后续已处理。
官网地址:Ceph 文档 (rook.io)
kubectl create -f dashboard-external-https.yaml
kubectl -n rook-ceph get service
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
rook-ceph-mgr ClusterIP 10.108.111.192 9283/TCP 4h
rook-ceph-mgr-dashboard ClusterIP 10.110.113.240 8443/TCP 4h
rook-ceph-mgr-dashboard-external-https NodePort 10.101.209.6 8443:31176/TCP 4h
现在,您可以在浏览器中输入URL,将会出现仪表板。