1、k8s部署
部署完成后如下:
hostname | IPADDR |
---|---|
k8s-master | 192.168.1.11 |
k8s-node01 | 192.168.1.12 |
k8s-node02 | 192.168.1.13 |
[root@k8s-master ~]# kubectl get nodes
NAME STATUS ROLES AGE VERSION
k8s-master Ready master 9d v1.15.0
k8s-node01 Ready <none> 9d v1.15.0
k8s-node02 Ready <none> 9d v1.15.0
2、rook环境/工具准备(所有node)
2.1 、确保所有时间同步
2.2、安装git
yum install git
2.3、安装lvm2
yum -y install lvm2
2.4、启用rbd模块
# 加载rbd模块
modprobe rbd
# 创建系统启动时自动加载模块脚本
cat > /etc/rc.sysinit << EOF
#!/bin/bash
for file in /etc/sysconfig/modules/*.modules
do
[ -x \$file ] && \$file
done
EOF
# 创建一个 rbd_modules
cat > /etc/sysconfig/modules/rbd.modules << EOF
modprobe rbd
EOF
chmod 755 /etc/sysconfig/modules/rbd.modules
lsmod |grep rbd
2.5、查看系统版本内核,过低则升级,升级后需重启系统
参考网站:The Community Enterprise Linux Repository
2.6、ceph存储在每个节点要挂载第二块磁盘,在各node上均添加一块磁盘sdb 分区(我用的是VMware ,由于电脑配置问题,只能开三台虚拟机)
# VMware上选定虚拟机——右键——设置——添加——硬盘
# 此时通过lsblk命令查看发现并没有sdb分区
# 扫描 SCSI总线并添加 SCSI 设备
for host in $(ls /sys/class/scsi_host) ; do echo "- - -" > /sys/class/scsi_host/$host/scan; done
# 重新扫描 SCSI 总线
for scsi_device in $(ls /sys/class/scsi_device/); do echo 1 > /sys/class/scsi_device/$scsi_device/device/rescan; done
# 重新lsblk查看,发现存在sdb分区
[root@k8s-master ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sdb 8:16 0 50G 0 disk
sr0 11:0 1 4.5G 0 rom
sda 8:0 0 30G 0 disk
├─sda2 8:2 0 29G 0 part
│ ├─centos-swap 253:1 0 2G 0 lvm
│ └─centos-root 253:0 0 27G 0 lvm /
└─sda1 8:1 0 1G 0 part /boot
以上环境准备完成,建议在虚拟机上生成快照。后续踩坑清楚环境麻烦,而且重新安装会因上次安装后的清除不干净导致各种bug。
3、rook部署ceph集群
3.1、踩坑前序
作为一个小白,安装前先找了网上很多教程,由于国内外网络环境问题,安装起来各种坑。网上大多正常流程是:
# 安装rook
git clone https://github.com/rook/rook.git
cd rook/cluster/examples/kubernetes/ceph/
# 安装operator准备环境
kubectl apply -f common.yaml ##很多教程把这步都省略了,现在省略这步会直接报错没有rook-ceph文件目录
kubectl apply -f operator.yaml
# 查看创建状态
kubectl get pod -n rook-ceph -o wide
# 安装cluster.yml,此处需要修改cluster.yaml文件内容
kubectl apply –f cluster.yml
3.2、ceph正确打开方式
3.2.1、先拉取ceph所需images,并将镜像做tag
# 各个节点均拉取镜像
docker pull registry.cn-hangzhou.aliyuncs.com/vinc-auto/ceph:v1.2.6
docker pull registry.cn-hangzhou.aliyuncs.com/vinc-auto/ceph:v14.2.8
docker pull registry.cn-hangzhou.aliyuncs.com/vinc-auto/csi-node-driver-registrar:v1.2.0
docker pull registry.cn-hangzhou.aliyuncs.com/vinc-auto/csi-provisioner:v1.4.0
docker pull registry.cn-hangzhou.aliyuncs.com/vinc-auto/csi-attacher:v1.2.0
docker pull registry.cn-hangzhou.aliyuncs.com/vinc-auto/csi-snapshotter:v1.2.2
docker pull registry.cn-hangzhou.aliyuncs.com/vinc-auto/cephcsi:v1.2.2
# 需要手动将镜像做tag
docker tag registry.cn-hangzhou.aliyuncs.com/vinc-auto/csi-node-driver-registrar:v1.2.0 quay.io/k8scsi/csi-node-driver-registrar:v1.2.0
docker tag registry.cn-hangzhou.aliyuncs.com/vinc-auto/csi-provisioner:v1.4.0 quay.io/k8scsi/csi-provisioner:v1.4.0
docker tag registry.cn-hangzhou.aliyuncs.com/vinc-auto/csi-attacher:v1.2.0 quay.io/k8scsi/csi-attacher:v1.2.0
docker tag registry.cn-hangzhou.aliyuncs.com/vinc-auto/csi-snapshotter:v1.2.2 quay.io/k8scsi/csi-snapshotter:v1.2.2
docker tag registry.cn-hangzhou.aliyuncs.com/vinc-auto/cephcsi:v1.2.2 quay.io/cephcsi/cephcsi:v1.2.2
3.2.2、修改master节点,ceph使用三节点时,需要开通k8s master节点的容忍,因为master节点默认会有污点,mon 、osd 等pod不会自动部署到这个节点。
# 修改master节点,使其能够创建pod
kubectl get no -o yaml | grep taint -A 5
kubectl taint nodes --all node-role.kubernetes.io/master-
3.2.3、rook-ceph部分参数介绍