基于kubesphere的k8s环境部署三节点的rook-ceph集群

news2025/1/13 7:35:50

文章目录

  • 前言
    • 链接:[基于kubesphere的k8s环境部署单点版本的rook-ceph](https://blog.csdn.net/baidu_35848778/article/details/131050918)
  • 一、rook-ceph是什么?
  • 二、开始部署
    • 2.1 环境准备
    • 2.2 软件包准备,计算\存储节点执行
    • 2.3 下载rook-ceph文件
    • 2.4 部署operator
    • 2.5 创建ceph集群
    • 2.6 创建工具容器,检查集群状态
    • 2.7 准备dashboard的nodeport端口映射服务
    • 2.8 准备prometheus的metric端口映射服务
  • 三、创建存储类
    • 3.1 创建cephrbd存储类
    • 3.2 创建cephfs存储类
  • 3.3 查看创建结果
  • 总结


前言

这次实验记录的是使用虚拟机搭建的使用了三个计算\存储节点的rook-ceph集群,模拟真实的使用场景。补充之前发的只有单点的部署方式。

链接:基于kubesphere的k8s环境部署单点版本的rook-ceph

一、rook-ceph是什么?

Rook is an open source cloud-native storage orchestrator, providing the platform, framework, and support for Ceph storage to natively integrate with cloud-native environments.
Rook是一个开源的云原生存储编排器,为Ceph存储提供平台、框架和支持,以便与云原生环境进行本地集成。

二、开始部署

2.1 环境准备

虚拟机数量:四台
虚拟机镜像类型:CentOS-7-x86_64-Minimal-2009.iso
k8s环境:一套
k8s环境:1.23.6

机器列表如下

hostnameIP系统盘数据盘
kubeadmin192.168.150.61sda(50G)
kubeworker01192.168.150.62sda(20G)vda(20G),vdb(20G)
kubeworker02192.168.150.63sda(20G)vda(20G),vdb(20G)
kubeworker03192.168.150.64sda(20G)vda(20G),vdb(20G)

2.2 软件包准备,计算\存储节点执行

安装软件包,加载rbd模块

#软件包装备
yum install -y git lvm2 gdisk
#内核加载rbd模块
modprobe rbd
lsmod | grep rbd

备注:删除残留数据,如果部署失败,一定清理下数据,不清理的话会影响下一次的部署

删除配置文件目录
rm -rf /var/lib/rook/
格式化磁盘
gdisk --zap-all /dev/vda
gdisk --zap-all /dev/vdb
dd if=/dev/zero of=/dev/vda  bs=1M count=100 oflag=direct,dsync
dd if=/dev/zero of=/dev/vdb  bs=1M count=100 oflag=direct,dsync

2.3 下载rook-ceph文件

下载文件并提取核心文件到自己的部署文件夹

cd /data/
yum install -y git
git clone --single-branch --branch v1.11.6 https://github.com/rook/rook.git
# 提取部署文件
mkdir -p /data/rook-ceph/
cp /data/rook/deploy/examples/crds.yaml /data/rook-ceph/crds.yaml
cp /data/rook/deploy/examples/common.yaml /data/rook-ceph/common.yaml
cp /data/rook/deploy/examples/operator.yaml /data/rook-ceph/operator.yaml
cp /data/rook/deploy/examples/cluster.yaml /data/rook-ceph/cluster.yaml
cp /data/rook/deploy/examples/filesystem.yaml /data/rook-ceph/filesystem.yaml
cp /data/rook/deploy/examples/toolbox.yaml /data/rook-ceph/toolbox.yaml
cp /data/rook/deploy/examples/csi/rbd/storageclass.yaml /data/rook-ceph/storageclass-rbd.yaml
cp /data/rook/deploy/examples/csi/cephfs/storageclass.yaml /data/rook-ceph/storageclass-cephfs.yaml
cp /data/rook/deploy/examples/csi/nfs/storageclass.yaml /data/rook-ceph/storageclass-nfs.yaml

cd /data/rook-ceph

2.4 部署operator

修改镜像仓库信息,operator.yaml中镜像仓库修改为阿里云的镜像仓库配置

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

执行部署

# 开始部署
cd /data/rook-ceph
kubectl create -f crds.yaml
kubectl create -f common.yaml
kubectl create -f operator.yaml
# 检查operator的创建运行状态
kubectl -n rook-ceph get pod
# 输出
NAME                                 READY   STATUS    RESTARTS   AGE
rook-ceph-operator-585f6875d-qjhdn   1/1     Running   0          4m36s

2.5 创建ceph集群

修改cluster.yaml,配置osd对应的数据盘,这里截取修改的部分,主要是nodes这里的配置。我这里按照集群的现有硬盘,将三个节点的数据盘都直接配置上了。没有使用规则发现或是全部发现。

  priorityClassNames:
    mon: system-node-critical
    osd: system-node-critical
    mgr: system-cluster-critical
    useAllNodes: false
    useAllDevices: false
    deviceFilter: 
    config:
    nodes:
      - name: "kubeworker01"
        devices: 
          - name: "vda" 
          - name: "vdb" 
      - name: "kubeworker02"
        devices:
          - name: "vda" 
          - name: "vdb" 
      - name: "kubeworker03"
        devices:
          - name: "vda"           
          - name: "vdb"           

执行部署cluster-test.yaml

kubectl create -f cluster.yaml
# 会部署一段时间
kubectl -n rook-ceph get pod
# 查看部署结果,当全部为Running之后部署工具容器进行集群确认
NAME                                                     READY   STATUS      RESTARTS   AGE
csi-cephfsplugin-7qk26                                   2/2     Running     0          34m
csi-cephfsplugin-dp8zx                                   2/2     Running     0          34m
csi-cephfsplugin-fb6rh                                   2/2     Running     0          34m
csi-cephfsplugin-provisioner-5549b4bcff-56ntx            5/5     Running     0          34m
csi-cephfsplugin-provisioner-5549b4bcff-m5j76            5/5     Running     0          34m
csi-rbdplugin-d829n                                      2/2     Running     0          34m
csi-rbdplugin-provisioner-bcff85bf9-7thl7                5/5     Running     0          34m
csi-rbdplugin-provisioner-bcff85bf9-cctkc                5/5     Running     0          34m
csi-rbdplugin-rj9wp                                      2/2     Running     0          34m
csi-rbdplugin-zs6s2                                      2/2     Running     0          34m
rook-ceph-crashcollector-kubeworker01-794647548b-bdrcx   1/1     Running     0          91s
rook-ceph-crashcollector-kubeworker02-d97cfb685-ss2sl    1/1     Running     0          86s
rook-ceph-crashcollector-kubeworker03-9d65c8dd8-zrv5x    1/1     Running     0          22m
rook-ceph-mgr-a-6fccb8744f-5zdvf                         3/3     Running     0          23m
rook-ceph-mgr-b-7c4bbbfcf4-fhxm9                         3/3     Running     0          23m
rook-ceph-mon-a-56dc4dfb8d-4j2bz                         2/2     Running     0          34m
rook-ceph-mon-b-7d6d96649b-spz4p                         2/2     Running     0          33m
rook-ceph-mon-c-759c774dc7-8hftq                         2/2     Running     0          28m
rook-ceph-operator-f45db9b9f-knbx4                       1/1     Running     0          2m9s
rook-ceph-osd-0-86cd7776c8-bm764                         2/2     Running     0          91s
rook-ceph-osd-1-7686cf9757-ss9z2                         2/2     Running     0          86s
rook-ceph-osd-2-5bc55847d-g2z6l                          2/2     Running     0          91s
rook-ceph-osd-3-998bccb64-rq9cf                          2/2     Running     0          83s
rook-ceph-osd-4-5c7c7f555b-djdvl                         2/2     Running     0          86s
rook-ceph-osd-5-69976f85fc-9xz94                         2/2     Running     0          83s
rook-ceph-osd-prepare-kubeworker01-qlvcp                 0/1     Completed   0          104s
rook-ceph-osd-prepare-kubeworker02-mnhcj                 0/1     Completed   0          100s
rook-ceph-osd-prepare-kubeworker03-sbk76                 0/1     Completed   0          97s
rook-ceph-tools-598b59df89-77sm7                         1/1     Running     0          7m43s

2.6 创建工具容器,检查集群状态

# 创建工具容器
kubectl apply -f toolbox.yaml
# 执行命令查询
kubectl -n rook-ceph exec -it deploy/rook-ceph-tools -- ceph -s
# 输出:
  cluster:
    id:     3a04d434-a2ac-4f2a-a231-a08ca46c6df3
    health: HEALTH_OK
 
  services:
    mon: 3 daemons, quorum a,b,c (age 20m)
    mgr: a(active, since 4m), standbys: b
    osd: 6 osds: 6 up (since 3m), 6 in (since 4m)
 
  data:
    pools:   1 pools, 1 pgs
    objects: 2 objects, 449 KiB
    usage:   521 MiB used, 119 GiB / 120 GiB avail
    pgs:     1 active+clean

# 或是进入工具容器内执行命令
kubectl -n rook-ceph exec -it deploy/rook-ceph-tools -- bash
# 查看集群状态
bash-4.4$ ceph -s 
  cluster:
    id:     3a04d434-a2ac-4f2a-a231-a08ca46c6df3
    health: HEALTH_OK
 
  services:
    mon: 3 daemons, quorum a,b,c (age 21m)
    mgr: a(active, since 5m), standbys: b
    osd: 6 osds: 6 up (since 5m), 6 in (since 5m)
 
  data:
    pools:   1 pools, 1 pgs
    objects: 2 objects, 449 KiB
    usage:   521 MiB used, 119 GiB / 120 GiB avail
    pgs:     1 active+clean

2.7 准备dashboard的nodeport端口映射服务

cat > /data/rook-ceph/dashboard-external-https.yaml <<EOF
apiVersion: v1
kind: Service
metadata:
  name: rook-ceph-mgr-dashboard-external-https
  namespace: rook-ceph
  labels:
    app: rook-ceph-mgr
    rook_cluster: rook-ceph
spec:
  ports:
  - name: dashboard
    port: 8443
    protocol: TCP
    targetPort: 8443
    nodePort: 30808
  selector:
    app: rook-ceph-mgr
    rook_cluster: rook-ceph
  sessionAffinity: None
  type: NodePort

EOF

# 这里的nodeport端口建议更换为适合自己环境规划的端口
kubectl apply -f dashboard-external-https.yaml
# 输出
service/rook-ceph-mgr-dashboard-external-https created
# 获取admin用户密码
kubectl -n rook-ceph get secret rook-ceph-dashboard-password -o jsonpath="{['data']['password']}" | base64 --decode && echo

使用浏览器访问端口192.168.150.61:30808,使用admin用户登陆,登陆后可以修改密码,也可以新建用户
在这里插入图片描述

成功登陆
在这里插入图片描述

2.8 准备prometheus的metric端口映射服务

cat > /data/rook-ceph/metric-external-https.yaml <<EOF
apiVersion: v1
kind: Service
metadata:
  name: rook-ceph-mgr-metric-external-https
  namespace: rook-ceph
  labels:
    app: rook-ceph-mgr
    rook_cluster: rook-ceph
spec:
  ports:
  - name: metric
    port: 9283
    protocol: TCP
    targetPort: 9283
    nodePort: 30809
  selector:
    app: rook-ceph-mgr
    rook_cluster: rook-ceph
  sessionAffinity: None
  type: NodePort
EOF

# 这里的nodeport端口建议更换为适合自己环境规划的端口
kubectl apply -f metric-external-https.yaml
# 输出
service/rook-ceph-mgr-metric-external-https created

使用浏览器访问端口192.168.150.61:30809
在这里插入图片描述

三、创建存储类

3.1 创建cephrbd存储类

kubectl apply -f  storageclass-rbd.yaml

创建测试用的pvc

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: test-rbd-pv-claim
spec:
  storageClassName: rook-ceph-block
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 10G

3.2 创建cephfs存储类

kubectl apply -f filesystem.yaml
kubectl apply  -f storageclass-cephfs.yaml
# 创建filesystem.yaml之后会生成rook-ceph-mds-myfs的工作负载
kubectl -n rook-ceph get pod |grep mds
# 输出
rook-ceph-mds-myfs-a-5d5754b77-nlcb9                     2/2     Running     0               97s
rook-ceph-mds-myfs-b-9f9dd7f6-sc6qm                      2/2     Running     0               96s
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: test-cephfs-pv-claim
spec:
  storageClassName: rook-cephfs
  accessModes:
    - ReadWriteMany
  resources:
    requests:
      storage: 10G

3.3 查看创建结果

查询存储

kubectl get storageclass
# 输出
NAME              PROVISIONER                     RECLAIMPOLICY   VOLUMEBINDINGMODE      ALLOWVOLUMEEXPANSION   AGE
local (default)   openebs.io/local                Delete          WaitForFirstConsumer   false                  21d
rook-ceph-block   rook-ceph.rbd.csi.ceph.com      Delete          Immediate              true                   4s
rook-cephfs       rook-ceph.cephfs.csi.ceph.com   Delete          Immediate              true                   4m44s

查询pvc

kubectl  get pvc -o wide
# 输出
NAME                   STATUS   VOLUME                                     CAPACITY   ACCESS MODES   STORAGECLASS      AGE   VOLUMEMODE
test-cephfs-pv-claim   Bound    pvc-3cdd9e88-2ae2-4e23-9f23-13e095707964   10Gi       RWX            rook-cephfs       7s    Filesystem
test-rbd-pv-claim      Bound    pvc-55a57b74-b595-4726-8b82-5257fd2d279a   10Gi       RWO            rook-ceph-block   6s    Filesystem


总结

正式的集群版本用起来还是很方便的,后续会测试一些加盘和减盘的动作,模拟一下日常可能会遇到的问题。ceph只是初级使用还是很香的。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/696067.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

关于我想安装cuda11.8版本的torch

先开始去官网PyTorch 用这个官网的命令下&#xff0c;一直会把cpu版本的一起下下来&#xff0c;导致运行的时候一直cpu版本而不是gpu版本&#xff0c;torch.cuda.is_available()这个是false&#xff0c;问题很大。 重新去搜了个命令&#xff1a;pip install torch1.8.0cu111 t…

Vue+Element-ui实例_日历排班(自定义)

在日常开发需求中&#xff0c;可能会遇到给员工进行排班的需求&#xff0c;如果只是在table表格中显示&#xff0c;会显得枯燥、不直观&#xff0c;今天我们就来写一个可以自定义的日历排班功能&#xff0c;用的是vue2element-ui。 效果图如下&#xff1a; (图一)&#xff1a;…

输出流(写)学习

选择子类&#xff1a;FileOutputStream 文件输出字节流 看到的是d 说明会查询ASCII表 写入记事本时&#xff0c;一个字母是一个字节 public static void main(String[] args) throws Exception {FileOutputStream fos new FileOutputStream("e:\\asd.txt");byte[]…

☆Image captioning☆论文show,attend and tell的程序中create_input_files.py代码详解

手把手实现Image captioning,论文show,attend and tell的程序中create_input_files.py代码详解。如果感觉有用,不妨给博主来个一键三连,白天科研,晚上肝文,实属不易~ ~ ](https://imgse.com/i/p9FmMDK) 1. 代码解析(1) assert dataset in {coco, flickr8k, flickr30k…

【计算机网络】数据链路层--MAC媒体接入控制

1.概念 2.静态划分信道 2.1 频分复用 2.2 时分复用 2.3 波分复用 2.2 码分复用 2.3 习题1 2.4 应用举例 2.5 习题2 2.6 习题3 3.小结

服务器设置tomcat开机自启动(cmd命令行语句,tomcat注册到服务里)

1、找到tomcat安装目录&#xff0c;进入bin/文件夹下面&#xff0c;在此打开windows 命令行窗口。 2、输入 service install tomcatXXX 将tomcat注册成为windows服务&#xff0c;其中tomcatXXX为服务名。 3、查看刚刚注册的服务 “我的电脑”-》右键管理 发现刚刚的服务是手…

Stable Diffusion 无损放大图像和缩小图像

Stable Diffusion默认生成的图片尺寸为512512&#xff0c;这种尺寸的分辨率可能无法满足高质量的要求。若想生成大图&#xff0c;存在两种可选的方法&#xff0c;在显卡足够支撑的情况下可以将图像当打到8K。 文章目录 hires.fix高分辨率修复extras附加功能放大功能缩放功能 hi…

VirtualBox 开启硬件虚拟化

最近用VirtualBox开了一台centos7的虚拟机&#xff0c;想用虚拟机搭建一个KVM环境&#xff0c; 结果发现Virtualbox开启虚拟化的选项是灰色的&#xff0c;无法选择&#xff0c; 解决方法&#xff1a;进入virtualbox安装目录&#xff0c;打开cmd&#xff0c;进入命令行模式打开嵌…

使用NVM下载和安装NodeJS教程

NodeJS下载与安装教程 一、下载 NVM二、安装 NVM三、安装 Node四、配置 NVM 和 NodeJS4.1 配置环境变量4.2 配置node_global和node_cache 这里我是用的 NVM 下载&#xff0c;后期管理 Node 版本很方便&#xff0c;推荐这种方式&#xff0c;还有一种方式是直接下载 NodeJS 进行安…

PPT如何跨页让图像对齐?

例如&#xff1a; 第1页和第2页的图片&#xff0c;希望2张图片在ppt中是固定的位置。 选择视图菜单栏&#xff0c;勾选参考线。 页面空白处&#xff0c;鼠标右键点击&#xff0c;显示菜单栏&#xff0c;选择添加水平或垂直参考线。 拖动参考线到想要的位置&#xff0c…

elementUI表格勾选框判断选择相同的内容才能进行后续逻辑处理;否则拦截提示

需求是&#xff1a; 可多选需满足条件&#xff1a;同一个年级、同一个分数&#xff1b; 不满足条件给出提示&#xff1a;请选择同一个年级 、分数的学生 1、先对勾选数据进行赋值 /** 表格复选框勾选 */handleSelectionChange(val) {console.log(val)this.tableSelectArr va…

5.7.1 UDP概述

5.7.1 UDP概述 用户数据报UDP协议是在IP数据报服务之上增加了两个内容 端口的复用和分用差错控制 一、UDP特点 UDP特点TCP特点无连接面向连接不可靠的服务可靠的服务点到点和多点通信点到点的通信首部8字节首部固定部分20字节面向报文面向字节流 UDP是无连接的服务&#x…

想做一个简单功能小程序需要多久

对于小程序开发的新手来说&#xff0c;往往会有这样一个问题&#xff1a;想做一个简单功能的小程序&#xff0c;大概需要多久时间呢&#xff1f;实际上&#xff0c;这个问题的答案取决于许多因素&#xff0c;包括你的开发技能、你计划实现的功能以及你为项目投入的时间等。 首…

建筑企业缺成本票,怎么解决?学会这几招可胜券在握!

建筑企业缺成本票&#xff0c;怎么解决&#xff1f;学会这几招可胜券在握&#xff01; 《税筹顾问》专注于园区招商、企业税务筹划&#xff0c;合理合规助力企业节税&#xff01; 建筑行业业务流程的特点是一般建筑工期的周期长&#xff0c;涉及的施工人员构成十分复杂&#x…

Docker安装,常用命令,部署MySQL,Tomcat,nginx,redis

Docker简介 Docker是基于Go语言实现的云开源项目。 Docker的主要目标是“Build&#xff0c;Ship and Run Any App,Anywhere”&#xff0c;也就是通过对应用组件的封装、分发、部署、运行等生命周期的管理&#xff0c;使用户的APP&#xff08;可以是一个WEB应用或数据库应用等等…

Cocos Creator Node 旋转角度实现的几种方法

rotation 需要四元数进行旋转&#xff0c;具体旋转方法本博主直接绕开了&#xff0c;因为没给案例不太了解,知道的欢迎评论 1.在Cocos Creator v3.6中&#xff0c;要使用setRotation方法将节点旋转90度&#xff0c;可以使用以下代码&#xff1a; // 获取节点 var node this.n…

Grafana嵌入iframe,websoket连接报错400或403(nginx代理)

1、custom.ini配置文件修改allowed_origins* 2、 nginx中增加配置&#xff0c;如下&#xff1a;

Effective Modern C++ 笔记

Effective Modern C 本文是Effective Modern C学习笔记&#xff0c;以细碎的知识点记录的形式来记录学习过程。 简介&#xff1a; 1、Effective Modern C目标&#xff1a;学习怎样高效地使用新机能 2、移动语义&#xff08;C11&#xff09;&#xff1a; 右值表明这个对象适合…

Unable to Locate package python2 | Linux Ubuntu系统下python2和cif2cell的安装

Linux Ubuntu系统下python2的安装 安装键入命令和报错如下&#xff1a; 背景&#xff1a;官方早年前已经宣布停止 Python 2 的更新和服务&#xff0c;所以对于ubuntu20版本之后的&#xff0c;都是自带安装了python3&#xff0c;但是我们在处理安装某些大型科学计算程序的时候…

【python百炼成魔】python之字典详解

前言 今天我们一起来探讨python的另外一种类型&#xff1a; 字典&#xff0c;如果你没有看过列表和元组&#xff0c;建议先学习列表和元组。 【python百炼成魔】python之元组详解 【python百炼成魔】python之列表详解 文章目录 前言字典的概念语法格式及字典的创建字典的日常…