openEuler 版本号: 2209
前置条件 k8s集群版本
kubectl version
Server Version: version.Info{Major:"1", Minor:"22", GitVersion:"v1.22.12", GitCommit:"b058e1760c79f46a834ba59bd7a3486ecf28237d", GitTreeState:"clean", BuildDate:"2022-07-13T14:53:39Z", GoVersion:"go1.16.15", Compiler:"gc", Platform:"linux/amd64"}
没有被分区的磁盘, 清除各可用盘数据,这一步很重要
wipefs -af /dev/sdb
wipefs -af /dev/sdc 改用后面的清除磁盘命令比较好
安装证书管理
kubectl apply -f https://github.com/jetstack/cert-manager/releases/download/v1.7.1/cert-manager.yaml
modprobe rbd 测试没有报 "not found"即可
开始安装
下载配置
- git clone --single-branch --branch v1.10.6 https://github.com/rook/rook.git
-
- cd rook/deploy/examples
- kubectl create -f crds.yaml -f common.yaml -f operator.yaml
-
-
- 检查pod
- kubectl -n rook-ceph get pod
-
-
- 创建集群
- kubectl create -f cluster.yaml
安装工具箱
- kubectl create -f toolbox.yaml
-
-
- 检查状态?
- kubectl -n rook-ceph rollout status deploy/rook-ceph-tools
-
- 输出:
- deployment "rook-ceph-tools" successfully rolled out
-
-
- 使用ceph命令,先进容器
-
- kubectl -n rook-ceph exec -it deploy/rook-ceph-tools -- bash
-
-
- 样例命令
-
- ceph status
- ceph osd status
- ceph df
- rados df
-
- 可以删除工具箱
- kubectl -n rook-ceph delete deploy/rook-ceph-tools
遇到下载不了的情况,使用科学上网机器下载导出并导入
registry.k8s.io/sig-storage/csi-node-driver-registrar:v2.5.1
- docker 拉取镜像
- docker pull registry.k8s.io/sig-storage/csi-node-driver-registrar:v2.5.1
-
-
- docker 导出
- docker save -o csi-node-driver-registrar.tar registry.k8s.io/sig-storage/csi-node-driver-registrar:v2.5.1
-
- docker 导入
- docker load --input ./csi-node-driver-registrar.tar
-
-
-
- docker pull registry.k8s.io/sig-storage/csi-provisioner:v3.3.0
- docker save -o csi-provisioner.tar registry.k8s.io/sig-storage/csi-provisioner:v3.3.0
- 下载到本地并上传到目标机器
- sz csi-provisioner.tar
- docker load --input ./csi-provisioner.tar
-
-
- docker pull registry.k8s.io/sig-storage/csi-resizer:v1.6.0
- docker save -o csi-resizer.tar registry.k8s.io/sig-storage/csi-resizer:v1.6.0
- sz csi-resizer.tar
- docker load --input ./csi-resizer.tar
-
-
-
- docker pull registry.k8s.io/sig-storage/csi-snapshotter:v6.1.0
- docker save -o csi-snapshotter.tar registry.k8s.io/sig-storage/csi-snapshotter:v6.1.0
- 下载到本地并上传到目标机器
- sz csi-snapshotter.tar
- docker load --input ./csi-snapshotter.tar
-
-
- docker pull registry.k8s.io/sig-storage/csi-attacher:v4.0.0
- docker save -o csi-attacher.tar registry.k8s.io/sig-storage/csi-attacher:v4.0.0
- 下载到本地并上传到目标机器
- sz csi-attacher.tar
- docker load --input ./csi-attacher.tar
-
-
-
-
-
-
开始使用
首先检查状态, 发现不健康,如何解决?
只有一个osd, 其它节点都有可用磁盘,但是不自动创建osd (如果使用这个命令清空硬盘就不会出问题了,这个命令意思是使用整个盘,有分区的不要执行哦 wipefs -af /dev/sdb) 使用下面的清空磁盘更专业
解决办法: 将各点的磁盘格式化一下
使用下面的清空磁盘比较重要, 出问题基本上是这个磁盘没有清除的原因,如果重装,要记得删除 /var/lib/ceph 目录
- 清空磁盘
- yum install -y gdisk
-
- DISK="/dev/sdc"
- sgdisk --zap-all $DISK
- dd if=/dev/zero of="$DISK" bs=1M count=100 oflag=direct,dsync
- partprobe $DISK
-
- 如果是ssd,不使用dd,而使用这个命令比较好
- blkdiscard $DISK
处理后,会自动创建osd但是报错了, 启不来
** ERROR: unable to open OSD superblock on /var/lib/ceph/osd/ceph-2: (2) No such file or directory
通过搜索问题发现, 不如直接在主机上部署好管理osd, 这个原因就是没有mount上的原因(如果使用这个命令清空硬盘就不会出问题了,这个命令意思是使用整个盘,有分区的不要执行哦 wipefs -af /dev/sdb)使用上面的清空磁盘更专业
- bash-4.4$ ceph status
- cluster:
- id: d53f5e3b-08c9-473c-9d3b-bd6127fe2c82
- health: HEALTH_WARN
- OSD count 1 < osd_pool_default_size 3
-
- services:
- mon: 3 daemons, quorum a,b,c (age 2h)
- mgr: b(active, since 2h), standbys: a
- osd: 1 osds: 1 up (since 2h), 1 in (since 3d)
-
- data:
- pools: 0 pools, 0 pgs
- objects: 0 objects, 0 B
- usage: 5.2 MiB used, 5.5 TiB / 5.5 TiB avail
- pgs:
-
-
- 针对operator.yml修改
- ROOK_ENABLE_DISCOVERY_DAEMON: "true"
-

访问网址, 192.168.0.14 替换成对应主机的ip即可
https://192.168.0.14:32644/#/login?returnUrl=%2Fdashboard
账号是admin
密码通过如下命令查看
- kubectl -n rook-ceph get secret rook-ceph-dashboard-password -o jsonpath="{['data']['password']}" | base64 --decode && echo
-
-
- 看到的密码登陆不进去?怎么办
-
- 如下密码 %#/Z\?w}mccco/Ow#S@M
-
- F12查看实际上是登陆成功了,但是没有权限导致的