Rook概述

Ceph简介

Ceph是一种高度可扩展的分布式存储解决方案,提供对象、文件和块存储。在每个存储节点上,将找到Ceph存储对象的文件系统和Ceph OSD(对象存储守护程序)进程。在Ceph集群上,还存在Ceph MON(监控)守护程序,它们确保Ceph集群保持高可用性。

Rook简介

Rook 是一个开源的cloud-native storage编排, 提供平台和框架;为各种存储解决方案提供平台、框架和支持,以便与云原生环境本地集成。目前主要专用于Cloud-Native环境的文件、块、对象存储服务。它实现了一个自我管理的、自我扩容的、自我修复的分布式存储服务。
Rook支持自动部署、启动、配置、分配(provisioning)、扩容/缩容、升级、迁移、灾难恢复、监控,以及资源管理。为了实现所有这些功能,Rook依赖底层的容器编排平台,例如 kubernetes、CoreOS 等。。
Rook 目前支持Ceph、NFS、Minio Object Store、Edegefs、Cassandra、CockroachDB 存储的搭建。
Rook机制:
Rook 提供了卷插件,来扩展了 K8S 的存储系统,使用 Kubelet 代理程序 Pod 可以挂载 Rook 管理的块设备和文件系统。
Rook Operator 负责启动并监控整个底层存储系统,例如 Ceph Pod、Ceph OSD 等,同时它还管理 CRD、对象存储、文件系统。
Rook Agent 代理部署在 K8S 每个节点上以 Pod 容器运行,每个代理 Pod 都配置一个 Flexvolume 驱动,该驱动主要用来跟 K8S 的卷控制框架集成起来,每个节点上的相关的操作,例如添加存储设备、挂载、格式化、删除存储等操作,都有该代理来完成。

Rook架构

Rook架构如下:

环境:

192.168.200.3 master1
192.168.200.4 master2
192.168.200.5 master3
192.168.200.6 node1
192.168.200.7 node2
192.168.200.8 node3

1.三台node节点分别添加一块磁盘并输入以下命令识别磁盘(不用重启)

echo "- - -" >/sys/class/scsi_host/host0/scan
echo "- - -" >/sys/class/scsi_host/host1/scan
echo "- - -" >/sys/class/scsi_host/host2/scan

2.克隆github项目

git clone https://github.com/rook/rook.git

3.切换到需要的版本分支

cd rook
git checkout -b release-1.1 remotes/origin/release-1.1
git branch -a

4.使用node节点存储,在master1上需要修改参数

kubectl taint node master1 node-role.kubernetes.io/master="":NoSchedule
kubectl taint node master2 node-role.kubernetes.io/master="":NoSchedule
kubectl taint node master3 node-role.kubernetes.io/master="":NoSchedule
kubectl label nodes {node1,node2,node3} ceph-osd=enabled
kubectl label nodes {node1,node2,node3} ceph-mon=enabled
kubectl label nodes node1 ceph-mgr=enabled

5.进入项目路径安装operator

cd rook/cluster/examples/kubernetes/ceph
kubectl apply -f common.yaml
kubectl apply -f operator.yaml

6.配置cluster.yaml

apiVersion: ceph.rook.io/v1
kind: CephCluster
metadata:name: rook-cephnamespace: rook-ceph
spec:cephVersion:image: ceph/ceph:v14.2.4-20190917allowUnsupported: falsedataDirHostPath: /var/lib/rookskipUpgradeChecks: falsemon:count: 3allowMultiplePerNode: falsedashboard:enabled: truessl: truemonitoring:enabled: falserulesNamespace: rook-cephnetwork:hostNetwork: falserbdMirroring:workers: 0placement:#    all:#      nodeAffinity:#        requiredDuringSchedulingIgnoredDuringExecution:#          nodeSelectorTerms:#          - matchExpressions:#            - key: role#              operator: In#              values:#              - storage-node#      podAffinity:#      podAntiAffinity:#      tolerations:#      - key: storage-node#        operator: Existsmon:nodeAffinity:requiredDuringSchedulingIgnoredDuringExecution:nodeSelectorTerms:- matchExpressions:- key: ceph-monoperator: Invalues:- enabledtolerations:- key: ceph-monoperator: Existsods:nodeAffinity:requiredDuringSchedulingIgnoredDuringExecution:nodeSelectorTerms:- matchExpressions:- key: ceph-osdoperator: Invalues:- enabledtolerations:- key: ceph-osdoperator: Existsmgr:nodeAffinity:requiredDuringSchedulingIgnoredDuringExecution:nodeSelectorTerms:- matchExpressions:- key: ceph-mgroperator: Invalues:- enabledtolerations:- key: ceph-mgroperator: Exists   annotations:resources:removeOSDsIfOutAndSafeToRemove: falsestorage: useAllNodes: false                                     #关闭使用所有NodeuseAllDevices: false                                   #关闭使用所有设备deviceFilter: sdbconfig:metadataDevice: databaseSizeMB: "1024" journalSizeMB: "1024"  nodes:- name: "node1"                                        #指定存储节点主机config:storeType: bluestore                               #指定类型为裸磁盘devices:                                             #指定磁盘为sdb- name: "sdb"- name: "node2"config:storeType: bluestoredevices: - name: "sdb"- name: "node3"config:storeType: bluestoredevices:- name: "sdb"disruptionManagement:managePodBudgets: falseosdMaintenanceTimeout: 30manageMachineDisruptionBudgets: falsemachineDisruptionBudgetNamespace: openshift-machine-api

7.安装cluster.yaml

kubectl apply -f cluster.yaml

8.查看状态

kubectl get pod -n rook-ceph

9.安装Toolbox

toolbox是一个rook的工具集容器,该容器中的命令可以用来调试、测试Rook,对Ceph临时测试的操作一般在这个容器内执行。

kubectl apply -f toolbox.yaml
kubectl -n rook-ceph get pod -l "app=rook-ceph-tools"

10.测试Rook

kubectl -n rook-ceph exec -it $(kubectl -n rook-ceph get pod -l "app=rook-ceph-tools" -o jsonpath='{.items[0].metadata.name}') sh
  • ceph status

  • ceph osd status
  • ceph df

  • rados df
  • ceph auth ls

  • ceph version

11.创建StorageClass

在提供(Provisioning)块存储之前,需要先创建StorageClass和存储池。K8S需要这两类资源,才能和Rook交互,进而分配持久卷(PV)。
详解:如下配置文件中会创建一个名为replicapool的存储池,和rook-ceph-block的storageClass。

storageclass.yaml:

apiVersion: ceph.rook.io/v1
kind: CephBlockPool
metadata:name: replicapoolnamespace: rook-ceph
spec:failureDomain: hostreplicated:size: 3
---
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:name: rook-ceph-block
provisioner: rook-ceph.rbd.csi.ceph.com
parameters:clusterID: rook-cephpool: replicapoolimageFormat: "2"imageFeatures: layeringcsi.storage.k8s.io/provisioner-secret-name: rook-csi-rbd-provisionercsi.storage.k8s.io/provisioner-secret-namespace: rook-cephcsi.storage.k8s.io/node-stage-secret-name: rook-csi-rbd-nodecsi.storage.k8s.io/node-stage-secret-namespace: rook-cephcsi.storage.k8s.io/fstype: ext4
reclaimPolicy: Delete

12.安装storageclass.yaml

kubectl apply -f storageclass.yaml

13.创建PVC
详解:这里创建相应的PVC,storageClassName:为基于rook Ceph集群的rook-ceph-block。

pvc.yaml:

apiVersion: v1
kind: PersistentVolumeClaim
metadata:name: block-pvc
spec:storageClassName: rook-ceph-blockaccessModes:- ReadWriteOnceresources:requests:storage: 200Mi

14.安装pvc.yaml

kubectl apply -f pvc.yaml

15.已创建dashboard,但仅使用clusterIP暴露服务,用官方提供的默认yaml可部署外部nodePort方式暴露服务的dashboard。

kubectl apply -f dashboard-external-https.yaml

dashboard-external-https.yaml:

apiVersion: v1
kind: Service
metadata:name: rook-ceph-mgr-dashboard-external-httpsnamespace: rook-cephlabels:app: rook-ceph-mgrrook_cluster: rook-ceph
spec:ports:- name: dashboardport: 8443protocol: TCPtargetPort: 8443selector:app: rook-ceph-mgrrook_cluster: rook-cephsessionAffinity: Nonetype: NodePort

16.查看svc

kubectl get svc -n rook-ceph

17.查看密码并登陆

kubectl -n rook-ceph get secret rook-ceph-dashboard-password -o jsonpath='{.data.password}'  |  base64 --decode

https://ip:port


参考链接:
https://rook.io/docs/rook/latest/Getting-Started/quickstart/
https://blog.csdn.net/weixin_40212316/article/details/115400377

K8S通过rook部署rook ceph集群、配置dashboard访问并创建pvc相关推荐

  1. Ceph集群配置遇见的困难

    Ceph集群配置遇见的困难 首先按https://blog.csdn.net/aixiaoyang168/article/details/78788703 中进行配置 出现问题和些理解 说明管理节点和 ...

  2. k8s——kubernetes使用rook部署ceph集群

    kubernetes使用rook部署ceph集群 一:环境准备 1.安装时间服务器进行时间同步 所有的kubernetes的集群节点 [root@master ~]# yum -y install n ...

  3. K8S集群rook部署ceph集群

    前言: 之前自己用rook部署过几次ceph集群,每次部署或多或少都会遇到一些问题.有些网上还能找到解决方法,有的只能靠自己去解决,毕竟每个人部署遇到的问题不一定都相同.因为每次部署完自己也没做记录, ...

  4. 1.24版本k8s集群安装部署rook-ceph存储集群

    一.初始花基本环境 1.主机环境信息 系统 主机名 主机IP地址 配置说明 AlmaLinux release 8.6 (Sky Tiger) master01 192.168.3.31 k8s管理节 ...

  5. CentOS8离线安装部署ceph集群

    文章目录 1.概念简介 1.1 存储类型 1.1.1 DAS设备 1.1.2 NAS设备:文件服务 1.1.3 SAN设备:块服务 1.2 Ceph 架构简介 2.集群节点规划 3.准备工作 4.使用 ...

  6. 部署Ceph集群(块存储,文件系统存储,对象存储)

    一 前言 分布式文件系统(Distributed File System):文件系统管理的物理存储资源不一定直接连接在本地节点上,而是通过计算机网络与节点相连.分布式文件系统的设计基于C/S模式 1, ...

  7. Cluster04 - Ceph概述 部署Ceph集群 Ceph块存储

    ceph 快照:可用做备份 一.ceph概述 1.1 什么是分布式文件系统 •  分布式文件系统(Distributed File System)是指文 件系统管理的物理存储资源不一定直接连接在本地节 ...

  8. centos7 ceph 集群部署

    ceph 一种为优秀的性能.可靠性和可扩展性而设计的统一的.分布式文件系统 一.Ceph必备组件 OSD(Object Storage Device) Ceph OSD守护进程(Ceph OSD)的功 ...

  9. 「Ceph集群部署」多机离线部署

    存储系统:ceph-14.2.22 操作系统:ubuntu-server-18.04 集群组织架构 在ceph集群中,安装了ceph软件的并且部署了一系列ceph集群服务的主机被称之为ceph集群节点 ...

最新文章

  1. 微服务架构下的静态数据通用缓存机制!
  2. Centos-挂载和卸载分区-mount
  3. 【项目实战课】基于Pytorch的MTCNN与Centerloss人脸识别实战
  4. 让最新的 Android Q Beta 3 强制重启的 Project Mainline,到底是什么?
  5. 一次回母校教前端的经历
  6. python列表字符串转数字_python 将列表中的字符串转为数字
  7. k8s dashboard_windows10 部署 docker+k8s 集群
  8. MySQL按字符串hash分区_MySQL学习笔记(14):分区
  9. 怎么装python编译器_python编译器安装
  10. python安装及配置
  11. 同样可以建站,云服务器和虚拟主机的区别在哪?
  12. 【养生之道】电脑族必吃日常防辐射食品
  13. optistruct学习
  14. IT基础知识(精华版二)
  15. Word解决:以下内容无法保存在未启用宏的文档中: ●VBA工程 请单击“否“返回”另存为“对话框,然后在文件类型“下拉框中选择一种启用宏的文件类型。是否继续将其另存为未启用宏的文档?
  16. 如何开发Android手表界面ui,20款神奇的UI智能手表界面设计欣赏
  17. 【最实用的chrome插件】CSDN 浏览器插件:CSDN 开发者助手(测评手册1)
  18. 王叔叔用计算机,最潮养老 | 不服老的他比年轻人还惬意、还潮!
  19. 批量压缩图片大小 – Caesium简体中文
  20. 服务器维护中登录失败日语,Flutter从服务器中获取日语字符,解码错误

热门文章

  1. ipad必须要配原装的笔吗?开学季值得买电容笔推荐
  2. 7-1 厘米换算英尺英寸 (15分) 带注释
  3. steamvr自定义按键_SteamVR Plugin插件使用办法
  4. 123大学计算机,大学计算机及程序设计Ⅲ(贺兴亚)-中国大学mooc-题库零氪
  5. oracle项目案例脚本
  6. 自己攒一台SAP S4 HANA服务器硬件配置参考
  7. C语言中的强符号与弱符号(关于变量声明与定义的深入讨论)
  8. 蜡炬教育:如何准备大厂AI面试,这几个问题助你成功70%
  9. 多多的魔术盒子 拼多多[编程题]
  10. 【调剂】桂林电子科技大学 智能驾驶 景晖 课题组有2-3调剂名额!