使用Rook安装Ceph
Ceph是一种开源的分布式存储解决方案;Rook是一个开源的云原生存储编排,可以使得分布式集群更加适应云原生环境。
1. 准备安装环境
为保证集群的高可用,最好至少准备一个三主三从的k8集群。
Ceph安装的前提条件是需要一个空的硬盘(或分区),且无格式化文件系统。所以为每个node节点均挂载一个空磁盘,且不安装任何文件系统。
如果使用minikube安装:
需要先配置好kvm驱动,参考CubeUniverse文档“安装minikube集群”。
使用
minikube start -n 5 --driver=kvm2
来启动包含五个节点的minikube集群。接下来使用qemu-img 为四个虚拟节点加上磁盘空间:
sudo qemu-img create -f qcow2 /var/lib/libvirt/images/minikube-m02.qcow2 20480M -o preallocation=full sudo qemu-img create -f qcow2 /var/lib/libvirt/images/minikube-m03.qcow2 20480M -o preallocation=full sudo qemu-img create -f qcow2 /var/lib/libvirt/images/minikube-m04.qcow2 20480M -o preallocation=full sudo qemu-img create -f qcow2 /var/lib/libvirt/images/minikube-m05.qcow2 20480M -o preallocation=full
这里每个节点留20G空间,可以自由调整。
然后给kvm挂在上刚刚创建的磁盘镜像:
sudo virsh attach-disk --domain minikube-m02 /var/lib/libvirt/images/minikube-m02.qcow2 --target vdb --persistent --config --live sudo virsh attach-disk --domain minikube-m03 /var/lib/libvirt/images/minikube-m03.qcow2 --target vdb --persistent --config --live sudo virsh attach-disk --domain minikube-m04 /var/lib/libvirt/images/minikube-m04.qcow2 --target vdb --persistent --config --live sudo virsh attach-disk --domain minikube-m05 /var/lib/libvirt/images/minikube-m05.qcow2 --target vdb --persistent --config --live
挂载完成后重启minikube:
minikube stop && minikube start
2. 安装rook-ceph
在k8s的主节点执行:
git clone --single-branch --branch v1.6.3 https://github.com/rook/rook.git
cd rook/cluster/examples/kubernetes/ceph/
由于在部署过程中可能因网络问题导致镜像拉取错误,所以先修改operator.yaml
的下述字段:
ROOK_CSI_REGISTRAR_IMAGE: "registry.cn-beijing.aliyuncs.com/dotbalo/csi-node-driver-registrar:v2.0.1"
ROOK_CSI_RESIZER_IMAGE: "registry.cn-beijing.aliyuncs.com/dotbalo/csi-resizer:v1.0.1"
ROOK_CSI_PROVISIONER_IMAGE: "registry.cn-beijing.aliyuncs.com/dotbalo/csi-provisioner:v2.0.4"
ROOK_CSI_SNAPSHOTTER_IMAGE: "registry.cn-beijing.aliyuncs.com/dotbalo/csi-snapshotter:v4.0.0"
ROOK_CSI_ATTACHER_IMAGE: "registry.cn-beijing.aliyuncs.com/dotbalo/csi-attacher:v3.0.2"
同时修改cluster.yaml
:
image: registry.cn-hangzhou.aliyuncs.com/lfy_k8s_images/ceph-ceph:v15.2.11
下载接下来在主节点让k8s执行operator完成ceph部署:
kubectl create -f crds.yaml -f common.yaml -f operator.yaml
kubectl create -f cluster.yaml
之后rook-ceph的operator就会依次操作自动创建ceph所需要的pod。可能会需要一定时间。
3. 查看安装情况
查看ceph的pod运行情况:
kubectl -n rook-ceph get pod
预计整个集群的安装过程需要几十分钟,时间受网速和节点配置影响。
当看到osd相关pod成功运行,说明集群已经成功启动:
常见问题
rook-ceph-operator 长时间处于Creating状态
检查k8s基础pod和网络插件是否运行正常,检查各节点ip-forward:
echo "echo 1 > /proc/sys/net/ipv4/ip_forward" >> /etc/rc.d/rc.local \
&& echo 1 > /proc/sys/net/ipv4/ip_forward \
&& chmod +x /etc/rc.d/rc.local \
&& ll /etc/rc.d/rc.local \
&& cat /proc/sys/net/ipv4/ip_forward
rook-ceph-operator 处于ImagePullBackOff 或 CrashLoop状态
检查docker kubectl是否运行正常;
检查是否给docker分配了国内镜像/检查网络、防火墙;
删除所有防火墙规则:
iptables -F