Implementación del clúster k8s y uso del sistema de almacenamiento rook-ceph

1. Introducción a Rook y ceph


Sistema de almacenamiento distribuido ceph

Ceph es una solución de almacenamiento distribuido altamente escalable que proporciona almacenamiento de objetos, archivos y bloques. En cada nodo de almacenamiento, encontrará el sistema de archivos donde Ceph almacena los objetos y el proceso Ceph OSD (Object Storage Daemon). En el clúster Ceph, también puede encontrar el demonio Ceph MON (supervisión), que garantiza que el clúster Ceph siga teniendo una alta disponibilidad.

Rook
Rook es una orquestación de almacenamiento nativo de la nube de código abierto que proporciona plataformas y marcos; proporciona plataformas, marcos y soporte para varias soluciones de almacenamiento para integrarse localmente con el entorno nativo de la nube.
Rook transforma el software de almacenamiento en servicios de almacenamiento autoadministrados, autoexpandibles y autorreparables. Logra este objetivo mediante implementación automatizada, orientación, configuración, aprovisionamiento, expansión, actualización, migración, recuperación ante desastres, monitoreo y administración de recursos.
Rook utiliza las herramientas proporcionadas por la plataforma de gestión, programación y orquestación de contenedores nativa de la nube subyacente para implementar sus propias funciones.
Actualmente, Rook es compatible con Ceph, NFS, Minio Object Store y CockroachDB.
Implementación del clúster k8s y uso del sistema de almacenamiento rook-ceph


2. Preparación preliminar

1. Ya existe un clúster k8s que puede ejecutar aplicaciones normalmente

2. Al menos tres nodos están disponibles en el clúster para cumplir con los requisitos de alta disponibilidad de ceph, y el servidor tiene un disco duro sin formato ni particiones.

3. Dirección del proyecto Rook-ceph: https://github.com/rook/rook

https://github.com/rook/rook/blob/master/Documentation/ceph-quickstart.md documento de implementación

4. Rook usa almacenamiento

Rook usa todos los recursos de todos los nodos de forma predeterminada. El operador de rook inicia automáticamente los dispositivos OSD en todos los nodos. Rook monitoreará y descubrirá los dispositivos disponibles utilizando los siguientes estándares:

  • El dispositivo no tiene partición
  • El dispositivo no tiene un sistema de archivos formateado
  • Rook no utilizará equipo que no cumpla con los estándares anteriores. Además, puede modificar el archivo de configuración para especificar qué nodos o dispositivos se utilizarán.

Tres, despliegue 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的状态:

Implementación del clúster k8s y uso del sistema de almacenamiento rook-ceph

#暴露方式有多种选择适合自己的一个即可
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

Implementación del clúster k8s y uso del sistema de almacenamiento rook-ceph
Implementación del clúster k8s y uso del sistema de almacenamiento rook-ceph


En cuarto lugar, acceda al panel de Web Ceph

Implementación del clúster k8s y uso del sistema de almacenamiento rook-ceph

访问地址,注意是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的密码

Implementación del clúster k8s y uso del sistema de almacenamiento rook-ceph

Cinco, uso de almacenamiento distribuido 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

Implementación del clúster k8s y uso del sistema de almacenamiento rook-ceph

3. Cree pvc y especifique storageClassName como rook-ceph-block

Implementación del clúster k8s y uso del sistema de almacenamiento rook-ceph

  • Instalación y uso de 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,删除存储卷,仅部分云端存储支持

Supongo que te gusta

Origin blog.51cto.com/14034751/2542998
Recomendado
Clasificación