k8s集群部署rook-ceph存储系统及使用(代码片段)

author author     2022-12-11     284

关键词:

一、Rook 、ceph简介


Ceph分布式存储系统

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

Rook
Rook 是一个开源的cloud-native storage编排, 提供平台和框架;为各种存储解决方案提供平台、框架和支持,以便与云原生环境本地集成。
Rook 将存储软件转变为自我管理、自我扩展和自我修复的存储服务,它通过自动化部署、引导、配置、置备、扩展、升级、迁移、灾难恢复、监控和资源管理来实现此目的。
Rook 使用底层云本机容器管理、调度和编排平台提供的工具来实现它自身的功能。
Rook 目前支持Ceph、NFS、Minio Object Store和CockroachDB。
技术图片


二、前期准备

1.已有一个可以正常跑应用的k8s集群

2.在集群中至少有三个节点可用,满足ceph高可用要求,并且服务器具备一块未格式化未分区的硬盘。

3.rook-ceph项目地址:https://github.com/rook/rook

https://github.com/rook/rook/blob/master/Documentation/ceph-quickstart.md 部署文档

4.rook使用存储方式

rook默认使用所有节点的所有资源,rook operator自动在所有节点上启动OSD设备,Rook会用如下标准监控并发现可用设备:

  • 设备没有分区
  • 设备没有格式化的文件系统
  • Rook不会使用不满足以上标准的设备。另外也可以通过修改配置文件,指定哪些节点或者设备会被使用。

三、部署Rook Operator

需要用到的镜像,部署服务前首先得将镜像导入
rook/ceph:v1.4.1

ceph/ceph:v15.2.4

quay.io/cephcsi/cephcsi:v3.1.0

#github clone项目部署文件,可以指定不同的版本,如果不指定默认则克隆Master分支测试1.4.1版本pv可以动态创建
git clone --single-branch --branch v1.4.1 https://github.com/rook/rook.git
#移动到项目目录下
cd rook/cluster/examples/kubernetes/ceph

#所有的pod都会在rook-ceph命名空间下创建
kubectl create -f common.yaml

#部署Rook操作员
kubectl create -f operator.yaml

#创建Rook Ceph集群
kubectl create -f cluster.yaml

#部署Ceph toolbox 命令行工具
#默认启动的Ceph集群,是开启Ceph认证的,这样你登陆Ceph组件所在的Pod里,是没法去获取集群状态,以及执行CLI命令,这时需要部署Ceph toolbox,命令如下
kubectl create -f toolbox.yaml

#进入ceph tool容器
kubectl exec -it pod/rook-ceph-tools-545f46bbc4-qtpfl -n rook-ceph bash

#查看ceph状态
ceph status

#至此已经部署完成了,查看rook-ceph命名空间下的pod,首先看pod的情况,有operator、mgr、agent、discover、mon、osd、tools,且osd-prepare是completed的状态,其它是running的状态:

技术图片

#暴露方式有多种选择适合自己的一个即可
https://github.com/rook/rook/blob/master/Documentation/ceph-dashboard.md

#执行完cluster.yaml后rook会自动帮我们创建ceph的Dashboard,pod及service如下图,默认dashboard为ClusterIP,需要我们改为NodePort对外暴露服务。
kubectl  edit svc rook-ceph-mgr-dashboard -n rook-ceph

技术图片
技术图片


四、访问Web Ceph Dashboard

技术图片

访问地址,注意是https,http会访问不成功
https://192.168.10.215:32111/#/dashboard

默认用户名为
admin

密码获取方式执行如下命令
kubectl -n rook-ceph get secret rook-ceph-dashboard-password -o jsonpath="[‘data‘][‘password‘]" | base64 --decode && echo

Ceph Dashboard首页,点击首页小齿轮修改admin的密码

技术图片

五、ceph分布式存储使用

  • RBD
1.安装rbd插件storageclass
 kubectl  apply -f /opt/k8s-install-tool/rook-ceph/rook/cluster/examples/kubernetes/ceph/csi/rbd/storageclass.yaml
2.查看创建rbd结果
kubectl  get storageclasses.storage.k8s.io

技术图片

3.创建pvc指定storageClassName为rook-ceph-block

技术图片

  • CEPHFS安装使用
1.安装cephfs元数据存储池及插件storageclass

kubectl  apply -f /opt/k8s-install-tool/rook-ceph/rook/cluster/examples/kubernetes/ceph/filesystem.yaml
kubectl  apply -f /opt/k8s-install-tool/rook-ceph/rook/cluster/examples/kubernetes/ceph/csi/cephfs/storageclass.yaml

2.以pod的形式部署在rook-ceph命名空间中,会有两个pod。
kubectl -n rook-ceph get pod -l app=rook-ceph-mds

NAME                                    READY   STATUS    RESTARTS   AGE
rook-ceph-mds-myfs-a-6b9cc74d4d-tgvv6   1/1     Running   0          14m
rook-ceph-mds-myfs-b-6b885f5884-qw8tk   1/1     Running   0          14m

3.查看创建rbd结果
kubectl  get storageclasses.storage.k8s.io

NAME              PROVISIONER                     RECLAIMPOLICY   VOLUMEBINDINGMODE   ALLOWVOLUMEEXPANSION   AGE
rook-ceph-block   rook-ceph.rbd.csi.ceph.com      Delete          Immediate           true                   18h
rook-cephfs       rook-ceph.cephfs.csi.ceph.com   Delete          Immediate           true                   13m

4.cephfs使用和rbd一样指定storageClassName的值即可,需要注意的是rbd只支持ReadWriteOnce,cephfs可以支持ReadWriteMany。

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  namespace: default
  name: "airflow-service-log-pvc"
spec:
  accessModes:
    #- ReadWriteOnce
    - ReadWriteMany
  resources:
    requests:
      storage: 2Gi
  storageClassName: rook-cephfs

知识点:

pv的三种访问模式
ReadWriteOnce,RWO,仅可被单个节点读写挂载
ReadOnlyMany,ROX,可被多节点同时只读挂载
ReadWriteMany,RWX,可被多节点同时读写挂载

pv回收策略
Retain,保持不动,由管理员手动回收
Recycle,空间回收,删除所有文件,仅NFS和hostPath支持
Delete,删除存储卷,仅部分云端存储支持

kubernetes概述和kubeadm方式集群搭建(代码片段)

kubernetes概述和kubeadm方式集群搭建kubernetes概述k8s的功能K8S集群架构组件K8S核心概念集群搭建kubeadm部署方式1.系统初始化2.master和node1,2安装Docker/kubeadm/kubelet3.部署KubernetesMaster4.加入KubernetesNode5.安装Pod网络插件(CNI)6.测试ku... 查看详情

部署k8s集群+ceph存储出现依赖性缺失的故障案例(最小化系统arm架构)(代码片段)

...最小化安装的系统(以redhat系为例)报障案例1故障:k8s集群拉起来了,ceph也起来了,但是在安装docker镜像仓库的时候,发现仓库一直处于pending的状态,重启也无法解决问题。```html/xml排障过程:首先是通过Kubectldescribepod-nnamespac... 查看详情

使用kubeadm快速部署一个k8s集群

kubeadm是官方社区推出的一个用于快速部署kubernetes集群的工具。这个工具能通过两条指令完成一个kubernetes集群的部署:#创建一个Master节点$kubeadminit#将一个Node节点加入到当前集群中$kubeadmjoin<Master节点的IP和端口>1.安装要求在... 查看详情

如何进行k8s存储系统

...杂可以分成三类:无状态服务、普通有状态服务和有状态集群服务。下面分别来看K8S是如何运行这三类服务的。无状态服务,K8S使用RC(或更新的ReplicaSet)来保证一个服务的实例数量,如果说某个Pod实例由于某种原因Crash了,RC... 查看详情

云原生之kubernetes实战使用sealos部署k8s集群环境

【云原生之kubernetes实战】使用Sealos部署k8s集群一、Sealos介绍1.Sealos简介2.Sealos特性3.Sealos图示二、本地k8s节点环境1.节点规划2.节点系统版本三、下载Sealos工具包四、初始环境配置1.关闭防火墙和selinux2.配置host文件解析3.配置时间... 查看详情

云原生之kubernetes实战使用sealos部署k8s集群环境

【云原生之kubernetes实战】使用Sealos部署k8s集群一、Sealos介绍1.Sealos简介2.Sealos特性3.Sealos图示二、本地k8s节点环境1.节点规划2.节点系统版本三、下载Sealos工具包四、初始环境配置1.关闭防火墙和selinux2.配置host文件解析3.配置时间... 查看详情

quartz使用-quartz的job存储及集群部署

1.Job的存储与持久化  Quartz的JobStore接口定义了作业Job、触发器trigger、调度器Scheduler等数据存储机制。Quartz主要有两种Job存储类型:内存存储RAMJobStore和持久化存储JDBCJobStore。下面将对其一一介绍。2.RAMJobStore  RAMJobStore是将Qu... 查看详情

azure部署k8s(代码片段)

 在"ChinaAzure中部署Kubernetes(K8S)集群"一文中,我们使用的ACSVersion及KuberneteVersion版本都比较低,ACSVersion为0.8.0,KuberneteVersion为1.6。随着ACS版本及Kubernete版本的不断跟新,我们会尽可能的采用新的version部署我们的集群服务。本... 查看详情

部署k8s集群及报错完美解决方案(代码片段)

目录部署环境一、master操作二、node01操作三、Kubernetes部署容器化应用部署环境Linux版本CPUMEMCentOS7双核4G/nodemasternode01172.16.0.168172.16.0.1691、更改主机名hostnamectlset-hostnamemasterhostnamectlset-hostnamenode012、添加对应域名解析cat>> 查看详情

使用kubeadm快速部署一个k8s集群(亲测有效)

kubeadm是官方社区推出的一个用于快速部署kubernetes集群的工具。这个工具能通过两条指令完成一个kubernetes集群的部署:#创建一个Master节点$kubeadminit#将一个Node节点加入到当前集群中$kubeadmjoin<Master节点的IP和端口>安装要求在... 查看详情

第二篇:二进制部署k8s集群进阶使用

二进制部署K8s集群进阶使用之第1节关于K8s证书二进制部署K8s集群进阶使用之第2节kubectl-陈述式资源管理二进制部署K8s集群进阶使用之第3节kubectl-声明式资源管理二进制部署K8s集群进阶使用之第4节pod控制器 查看详情

k8s高可用环境部署-1.17.3版本(代码片段)

准备在开始部署k8s高可用集群时,请先参考k8s高可用环境部署系统准备操作系统兼容性环境说明集群部署前系统环境装备,请参考k8s高可用环境部署系统准备.md本次高可用集群基本参照官网步骤进行部署,官网给出了两种拓扑结... 查看详情

linux企业运维——k8s高可用集群架构搭建详解(代码片段)

K8s高可用集群文章目录K8s高可用集群一、K8s高可用集群架构原理二、实验环境三、K8s高可用集群架构搭建3.1、负载均衡Loadbalancer部署—haproxy3.2、Docker部署3.3、K8s集群部署3.4、K8s集群添加worker节点四、集群高可用性能测试一、K8s... 查看详情

centoslinuxrelease7.9.2009(core)部署k8s集群及webui(代码片段)

系统配置(master和node节点都配置)修改yum源为阿里源备份本地yum源mv/etc/yum.repos.d/CentOS-Base.repo/etc/yum.repos.d/CentOS-Base.repo_bak获取阿里yum源配置文件wget-O/etc/yum.repos.d/CentOS-Base.repohttp://mirrors.aliyun.com/repo/Centos 查看详情

k8s介绍及部署方式(代码片段)

...5年7月发布第一个正式版本。kubernetes的本质是一组服务器集群,它可以在集群的每个节点上运行特定的程序 查看详情

k8s集群使用容器镜像仓库harbor(代码片段)

K8s集群使用容器镜像仓库HarborKubernetes集群使用容器镜像仓库Harbor一、容器镜像仓库Harbor部署1.1在docker主机部署harbor1.1.1docker-ce安装1.1.1.1获取YUM源1.1.1.2安装并设置启动及开机自启动1.1.2dockercompose安装1.1.3获取harbor安装文件1.1.4修改... 查看详情

k8s存储pv与pvc使用详解

一、前言在整个k8s集群中,有一些存储资源,比如说NFS、CIFS等存储,这些存储都是由集群管理人员提前去创建的,不同的存储方式不一样,如果都掌握才可以使用,则很不方便 ;所以在k8s中提供了新的对象资源叫做PV(Persiste... 查看详情

k8s重要概念及部署k8s集群

一.重要概念1.clustercluster是计算,存储和网络资源的集合,k8s利用这些资源运行各种基于容器的应用2.mastermaster是cluster的大脑,他的主要职责是调度,即决定将应用放在哪里运行。master运行linux操作系统,可以是物理机或者虚拟... 查看详情