一、先决条件

1.k8s集群要求:

  • 最低版本支持Kubernetes v1.21或更高版本
  • 至少五个节点,每个节点的内存不低于5G,CPU不低于2核
  • 至少有三个存储节点,并且每个节点至少有一个裸盘
  • K8s集群所有的节点时间必须一致

2.CPU架构:

  • amd64
  • x86_64
  • arm64

3.分区或设备不能使用文件系统进行格式化

[root@k8s-master01 ~]# lsblk -f
NAME            FSTYPE      LABEL           UUID                                   MOUNTPOINT
sdb
sr0             iso9660     CentOS 7 x86_64 2020-11-02-15-15-23-00
sda
├─sda2          LVM2_member                 lwte0g-uYRm-g35q-IUjr-H2Aa-NU7S-Wb3Ag8
 ├─centos-swap swap                        842f2feb-e334-45f6-be5b-2fddbcd72486
 └─centos-root xfs                         8739385b-6757-4209-94bf-ca84878fb961   /
└─sda1          xfs                         33acd5a3-ae42-4564-9243-124f7c4baf81   /boot

二、检查环境

1.检查污点以及node状态,确保无污点以及node是ready状态

[root@k8s-master01 ~]# kubectl describe node | grep Taint
Taints:             <none>
Taints:             <none>
Taints:             <none>
Taints:             <none>
Taints:             <none>

[root@k8s-master01 ~]# kubectl get node
NAME           STATUS   ROLES    AGE    VERSION
k8s-master01   Ready    <none>   103d   v1.23.17
k8s-master02   Ready    <none>   103d   v1.23.17
k8s-master03   Ready    <none>   103d   v1.23.17
k8s-node01     Ready    <none>   103d   v1.23.17
k8s-node02     Ready    <none>   103d   v1.23.17

2.查看时间是否同步

$ date

若没有同步

$ ntpdate time2.aliyun.com

3.查看三个存储节点上的磁盘挂载情况,保证三个节点每个都有一个裸盘

[root@k8s-node02 ~]# lsblk -f
NAME            FSTYPE      LABEL            UUID                                   MOUNTPOINT
sdb
sr0             iso9660     CentOS 7 x86_64 2020-11-02-15-15-23-00
sda
├─sda2          LVM2_member                 FwFkVh-KQZQ-jPVX-ZFhr-KWXw-apOr-qyTTNl
 ├─centos-swap swap                        f2ecae66-0aa8-4cd7-808f-137643a10360
 └─centos-root xfs                         5c040742-70c2-43bf-8923-e11c7b439723   /
└─sda1          xfs                         3f980dfc-fa56-4bfe-8f58-cd70fd4fc852   /boot

[root@k8s-node01 ~]# lsblk -f
NAME            FSTYPE      LABEL           UUID                                   MOUNTPOINT
sdb
sr0             iso9660     CentOS 7 x86_64 2020-11-02-15-15-23-00
sda
├─sda2          LVM2_member                 InPkzD-1116-NcSy-VYZ6-UqAo-Xi3e-TMcXgS
 ├─centos-swap swap                        94b48f88-4f53-42fc-899d-df8f10d32e57
 └─centos-root xfs                         eaefe8a0-c12d-47d5-8f73-f41e875d5102   /
└─sda1          xfs                         efc4bf10-7b41-41cb-9497-b4b0301615ef   /boot

[root@k8s-master03 ~]# lsblk -f
NAME            FSTYPE      LABEL           UUID                                   MOUNTPOINT
sdb
sr0             iso9660     CentOS 7 x86_64 2020-11-02-15-15-23-00
sda
├─sda2          LVM2_member                 6U2rVH-r90V-vRzK-1VAx-FQsH-XuSg-eRcwLe
 ├─centos-swap swap                        d198ed44-10f3-4359-b1b8-f715c39d414e
 └─centos-root xfs                         ae303dc0-0f2c-4536-a7af-e6ec9baa622f   /
└─sda1          xfs                         2b57b5d1-7634-4b16-9c28-2de601accd76   /boot

三、开始部署

1.克隆Rook相关代码

$ git clone --single-branch --branch v1.11.8 https://github.com/rook/rook.git

2.修改operator.yaml,替换国外镜像为国内镜像

$ cd rook/deploy/examples
$ vim operator.yaml

ROOK_CSI_CEPH_IMAGE: "registry.cn-hangzhou.aliyuncs.com/abroad_images/cephcsi:v3.8.0"
ROOK_CSI_REGISTRAR_IMAGE: "registry.cn-hangzhou.aliyuncs.com/abroad_images/csi-node-driver-registrar:v2.7.0"
ROOK_CSI_RESIZER_IMAGE: "registry.cn-hangzhou.aliyuncs.com/abroad_images/csi-resizer:v1.7.0"
ROOK_CSI_PROVISIONER_IMAGE: "registry.cn-hangzhou.aliyuncs.com/abroad_images/csi-provisioner:v3.4.0"
ROOK_CSI_SNAPSHOTTER_IMAGE: "registry.cn-hangzhou.aliyuncs.com/abroad_images/csi-snapshotter:v6.2.1"
ROOK_CSI_ATTACHER_IMAGE: "registry.cn-hangzhou.aliyuncs.com/abroad_images/csi-attacher:v4.1.0"

Rook部署-1

替换为rook/ceph:v1.11.8为registry.cn-hangzhou.aliyuncs.com/abroad_images/ceph:v1.11.8

Rook部署-2

另外需要开启 自 动 发 现 容 器,将ROOK_ENABLE_DISCOVERY_DAEMON 改成 true

Rook部署-3

3.部署Rook集群

$ cd rook/deploy/examples
$ kubectl create -f crds.yaml -f common.yaml -f operator.yaml

4.验证部署成功,观察到Ready为1/1,状态为Running

$ kubectl -n rook-ceph get po -owide
NAME                                 READY   STATUS    RESTARTS   AGE   IP               NODE           NOMINATED NODE   READINESS GATES
rook-ceph-operator-d68878968-n9spk   1/1     Running   0          13m   172.25.92.90     k8s-master02   <none>           <none>
rook-discover-4jsq2                  1/1     Running   0          13m   172.17.125.25    k8s-node01     <none>           <none>
rook-discover-bns2w                  1/1     Running   0          13m   172.25.92.91     k8s-master02   <none>           <none>
rook-discover-fw6gf                  1/1     Running   0          13m   172.27.14.223    k8s-node02     <none>           <none>
rook-discover-kkl6h                  1/1     Running   0          13m   172.18.195.23    k8s-master03   <none>           <none>
rook-discover-sv6zm                  1/1     Running   0          13m   172.25.244.225   k8s-master01   <none>           <none>