rook-ceph部署及使用k8s1.23&rook-ceph 1.13.2
PS:RADOS是 Ceph 存储集群的核心组件,它是一个高度可扩展、分布式的对象存储系统,用于存储和管理 Ceph 存储集群中的数据。kubectl logs -n rook-ceph rook-ceph-operator-123fajd查看operator部署的日志用于诊OSD激活情况。kubectl -n rook-ceph exec -it deploy/rook-ceph-tools –
概要
项目中帮助客户部署了一套k8s集群,但是苦于客户环境不存在持久化存储,这里在k8s集群里面部署一套rook-ceph用于持久化存储。
架构说明
3台Master(使用的是虚拟机)
3台worker(使用的是物理主机)
除开系统磁盘,worker主机每台有6块磁盘可以使用。
这里我们需要使用3*6总共18块磁盘用于ceph的pool。
步骤1
清除主机所有用于OSD的磁盘
fdisk /dev/sdb
下载rook-ceph的yaml包
$ git clone --single-branch --branch v1.13.2 https://github.com/rook/rook.git
进入目录
cd rook/deploy/examples
注:v1.13.2可以更改为需要安装rook-ceph实际版本
关闭自动发现新增磁盘
vim operator.yaml
ROOK_ENABLE_DISCOVERY_DAEMON: “false”
扫描发现磁盘间隔
- name: ROOK_DISCOVER_DEVICES_INTERVAL
value: “60s”
创建安装工具pod(这一步在步骤2镜像全部下载修改路径后执行)
执行create -f yaml创建operator工具
kubectl create -f crds.yaml -f common.yaml -f operator.yaml
查看创建的pod是否成功
kubectl -n rook-ceph get pod |grep operator
步骤2
查看rook-ceph所需的镜像版本
cat rook/deploy/examples/images.txt
拉取所需的镜像
镜像有两种方式,第一种直接拉取到本地的docker images 存放(docker pull),第二种拉取到harbor仓库统一管理。
示例:
本次采用通过拉取镜像存放到harbor仓库,这里不做过多叙述。
修改yaml的image路径为实际harbor的路径
vi /root/rook/deploy/examples/cluster.yaml
vi /root/rook/deploy/examples/operator.yaml
修改cluster.yaml的参数
vi /root/rook/deploy/examples/cluster.yaml
修改useAllNodes和useAllDevices的true为false
storage: # cluster level storage configuration and selection
useAllNodes: false
useAllDevices: false
#useAllNodes: true 表示将使用集群中的所有节点作为存储节点。这意味着存储将在集群中的每个节点上进行分布,以提供更好的容量和冗余。(比如有5台节点,只需要其中三台作为存储节点)
#useAllDevices: true 表示将使用节点上的所有设备作为存储设备。这包括节点上的所有硬盘、SSD 或其他可用的存储设备。通过使用所有设备,可以最大化存储资源的利用和性能。
添加OSD主机和主机磁盘
vi /root/rook/deploy/examples/cluster.yaml
创建ceph集群
kubectl create -f cluster.yaml
安装管理工具
kubectl create -f toolbox.yaml -n rook-ceph
进入管理工具查看ceph状态
kubectl -n rook-ceph exec -it deploy/rook-ceph-tools – bash
ceph -s
安装ceph dashboard
选择创建http或https
kubectl apply -f dashboard-external-https.yaml
kubectl apply -f dashboard-external-http.yaml
账户admin,获取密码
kubectl -n rook-ceph get secret rook-ceph-dashboard-password -o jsonpath=“{[‘data’][‘password’]}”|base64 --decode && echo
步骤3
使用块存储
创建存储类
kubectl create -f rook/deploy/examples/csi/rbd/storageclass.yaml
kubectl get CephBlockPool -n rook-ceph && kubectl get StorageClass | grep rook-ceph-block创建pv测试
kubectl create -f rook/deploy/examples/csi/rbd/pvc.yaml
kubectl create -f rook/deploy/examples/csi/rbd/pod.yaml
注:修改storageclass.yaml里副本为实际
使用文件存储
创建存储类
kubectl apply -f rook/deploy/examples/filesystem.yaml kubectl apply -f
rook/deploy/examples/csi/cephfs/storageclass.yaml
创建pvc测试
kubectl apply -f rook/deploy/examples/csi/cephfs/pvc.yaml
kubectl apply -f rook/deploy/examples/csi/cephfs/pod.yaml
kubectl -n rook-ceph get pod -l app=rook-ceph-mds
注:修改storageclass.yaml里副本为实际
常用命令
kubectl -n rook-ceph exec -it deploy/rook-ceph-tools – bash 进入tools维护ceph
kubectl logs -n rook-ceph rook-ceph-operator-123fajd 查看operator部署的日志用于诊OSD激活情况
kubectl -n rook-ceph delete pod -l app=rook-ceph-operator 通过 重启operator新增OSD
ceph crash ls 查看错误log
ceph crash info <错误> 查看详细错误
ceph crash rm <错误> 删除告警
ceph status #获取 Ceph 存储集群中 OSD 的状态信息
ceph osd status #查看osd的树状结构
ceph osd tree #查看osd详细信息,上一步查出来的,比如0,可以看到那块磁盘<bluestore_bdev_dev_node>
ceph osd metadata #获取 Ceph 存储集群的分布式文件系统(CephFS)的容量和使用情况
ceph df 获取 Ceph 存储集群中 RADOS的容量和使用情况。PS:RADOS是 Ceph 存储集群的核心组件,它是一个高度可扩展、分布式的对象存储系统,用于存储和管理 Ceph 存储集群中的数据
rados df #查看osd磁盘信息
ceph mgr module enable rook 开启Rook模块 (新版本rook-ceph存在文件存储写入mon崩溃需要开启rook模块解决)
ceph orch set backend rook 设置 orchestrator 后端为rook
排错路径
https://rook.io/docs/rook/latest-release/Getting-Started/intro/
更多推荐
所有评论(0)