• openEuler 通过Rook在k8s集群部署Ceph


    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"即可

    开始安装

    下载配置

    1. git clone --single-branch --branch v1.10.6 https://github.com/rook/rook.git
    2. cd rook/deploy/examples
    3. kubectl create -f crds.yaml -f common.yaml -f operator.yaml
    4. 检查pod
    5. kubectl -n rook-ceph get pod
    6. 创建集群
    7. kubectl create -f cluster.yaml

    安装工具箱

    1. kubectl create -f toolbox.yaml
    2. 检查状态?
    3. kubectl -n rook-ceph rollout status deploy/rook-ceph-tools
    4. 输出:
    5. deployment "rook-ceph-tools" successfully rolled out
    6. 使用ceph命令,先进容器
    7. kubectl -n rook-ceph exec -it deploy/rook-ceph-tools -- bash
    8. 样例命令
    9. ceph status
    10. ceph osd status
    11. ceph df
    12. rados df
    13. 可以删除工具箱
    14. kubectl -n rook-ceph delete deploy/rook-ceph-tools

    遇到下载不了的情况,使用科学上网机器下载导出并导入

    registry.k8s.io/sig-storage/csi-node-driver-registrar:v2.5.1

    1. docker 拉取镜像
    2. docker pull registry.k8s.io/sig-storage/csi-node-driver-registrar:v2.5.1
    3. docker 导出
    4. docker save -o csi-node-driver-registrar.tar registry.k8s.io/sig-storage/csi-node-driver-registrar:v2.5.1
    5. docker 导入
    6. docker load --input ./csi-node-driver-registrar.tar
    7. docker pull registry.k8s.io/sig-storage/csi-provisioner:v3.3.0
    8. docker save -o csi-provisioner.tar registry.k8s.io/sig-storage/csi-provisioner:v3.3.0
    9. 下载到本地并上传到目标机器
    10. sz csi-provisioner.tar
    11. docker load --input ./csi-provisioner.tar
    12. docker pull registry.k8s.io/sig-storage/csi-resizer:v1.6.0
    13. docker save -o csi-resizer.tar registry.k8s.io/sig-storage/csi-resizer:v1.6.0
    14. sz csi-resizer.tar
    15. docker load --input ./csi-resizer.tar
    16. docker pull registry.k8s.io/sig-storage/csi-snapshotter:v6.1.0
    17. docker save -o csi-snapshotter.tar registry.k8s.io/sig-storage/csi-snapshotter:v6.1.0
    18. 下载到本地并上传到目标机器
    19. sz csi-snapshotter.tar
    20. docker load --input ./csi-snapshotter.tar
    21. docker pull registry.k8s.io/sig-storage/csi-attacher:v4.0.0
    22. docker save -o csi-attacher.tar registry.k8s.io/sig-storage/csi-attacher:v4.0.0
    23. 下载到本地并上传到目标机器
    24. sz csi-attacher.tar
    25. docker load --input ./csi-attacher.tar

    开始使用

    首先检查状态, 发现不健康,如何解决?

    只有一个osd, 其它节点都有可用磁盘,但是不自动创建osd (如果使用这个命令清空硬盘就不会出问题了,这个命令意思是使用整个盘,有分区的不要执行哦 wipefs -af /dev/sdb) 使用下面的清空磁盘更专业

    解决办法: 将各点的磁盘格式化一下

    使用下面的清空磁盘比较重要, 出问题基本上是这个磁盘没有清除的原因,如果重装,要记得删除 /var/lib/ceph 目录

    1. 清空磁盘
    2. yum install -y gdisk
    3. DISK="/dev/sdc"
    4. sgdisk --zap-all $DISK
    5. dd if=/dev/zero of="$DISK" bs=1M count=100 oflag=direct,dsync
    6. partprobe $DISK
    7. 如果是ssd,不使用dd,而使用这个命令比较好
    8. 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)使用上面的清空磁盘更专业

    1. bash-4.4$ ceph status
    2. cluster:
    3. id: d53f5e3b-08c9-473c-9d3b-bd6127fe2c82
    4. health: HEALTH_WARN
    5. OSD count 1 < osd_pool_default_size 3
    6. services:
    7. mon: 3 daemons, quorum a,b,c (age 2h)
    8. mgr: b(active, since 2h), standbys: a
    9. osd: 1 osds: 1 up (since 2h), 1 in (since 3d)
    10. data:
    11. pools: 0 pools, 0 pgs
    12. objects: 0 objects, 0 B
    13. usage: 5.2 MiB used, 5.5 TiB / 5.5 TiB avail
    14. pgs:
    15. 针对operator.yml修改
    16. ROOK_ENABLE_DISCOVERY_DAEMON: "true"

    访问网址, 192.168.0.14 替换成对应主机的ip即可

    https://192.168.0.14:32644/#/login?returnUrl=%2Fdashboard

    账号是admin

    密码通过如下命令查看

    1. kubectl -n rook-ceph get secret rook-ceph-dashboard-password -o jsonpath="{['data']['password']}" | base64 --decode && echo
    2. 看到的密码登陆不进去?怎么办
    3. 如下密码 %#/Z\?w}mccco/Ow#S@M
    4. F12查看实际上是登陆成功了,但是没有权限导致的

  • 相关阅读:
    【iOS】—— ViewController生命周期
    C 学生管理系统_添加学生
    【脑机接口论文与代码】High-speed spelling with a noninvasive brain–computer interface
    logging日志及其使用代码
    一文带你走进JS语法(最全笔记)
    慢性子的网易,走不快的B端?
    基于SpringBoot+Redis实现接口限流
    基于群智能算法的TSP问题求解
    多站点用户数据同步实现
    第十四届蓝桥杯模拟赛第一期试题与题解Java
  • 原文地址:https://blog.csdn.net/gs80140/article/details/127923941