rook+ceph

在这里插入图片描述

ceph简介

Rook 是 Kubernetes 的开源云原生存储编排器,为各种存储解决方案提供平台、框架和支持,以与云原生环境进行原生集成。

Rook
将存储软件转变为自我管理、自我扩展和自我修复的存储服务。它通过自动化部署、引导、配置、供应、扩展、升级、迁移、灾难恢复、监控和资源管理来实现这一点。
Rook 使用底层云原生容器管理、调度和编排平台提供的设施来履行其职责。

Rook 利用扩展点深度集成到云原生环境中,并为调度、生命周期管理、资源管理、安全、监控和用户体验提供无缝体验。

github地址
社区官网地址
ps:
rook称云原生编排器,ceph为分布式存储(rook为方法,ceph为功能)
ceph本身支持多种搭建方式
cephadm 搭建ceph集群方式

部署

环境准备:
最少三台机器,且已经是kuberneres集群,

角色ip
master1192.168.21.10
node1192.168.21.11
node2192.168.21.12

k8s搭建方式参照
回归主题:
首先把download下来的代码或二进制包解压并到指定目录
history记录:
执行yaml顺序

  1. 部署 Rook 的第一步是创建 CRD 和其他公共资源
kubectl create -f crds.yaml -f common.yaml
  1. 创建公共资源后,下一步是创建 Operator 部署
kubectl apply -f operator.yaml
  1. cluster.yaml:此文件包含生产存储集群的常用设置。至少需要三个工作节点。
kubectl apply -f cluster.yaml

这里cluster的角色是可以基于不同环境做配置的
要注意下,osd设备我是直接加磁盘设备,重启读取的,
rook逻辑是能读到你的裸盘的,也可以支持pv挂载,但我看官方其实目前是不建议这样的,大概意思就是后面可能会出各种各样的问题,不好解,所以不建议!

4 验证部署的集群

kubectl get po -n rook-ceph

在这里插入图片描述
图中的myfs的两个pod是后面创建的,是mds

5.部署存储类 这里也可以先跳过部署文件系统

kubectl create -f filesystem.yaml

可以观察下新创建包含得myfs的两个pod

6.创建dashborad

kubectl apply -f dashboard-external-https.yaml

1.8.6的这个版本mgr的原本的svc设置就8443端口,老版本是7001,
所以现在之前起这个yaml,看到关联到就可以了

访问ip+端口 参照
ps:注意访问时要加https,默认dashboard是经过443认证的
账号:admin
密码通过以下命令获取

kubectl -n rook-ceph get secret rook-ceph-dashboard-password -o jsonpath="{['data']['password']}" | base64 --decode && echo

在这里插入图片描述7.部署工具箱

kubectl create -f deploy/examples/toolbox.yaml
kubectl -n rook-ceph exec -it deploy/rook-ceph-tools -- bash
在pod中查看集群状态
ceph status
ceph osd status
ceph df
rados df

参照
8.demo测试
在这里插入图片描述

 kubectl apply -f storageclass.yaml 
 kubectl apply -f pvc.yaml 
 kubectl apply -f pod.yaml 

pvc.yaml

---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: cephfs-pvc
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 1Gi
  storageClassName: rook-cephfs
  

这里是不需要再手动创建pv的,会自己绑定创建

pod.yaml

apiVersion: v1
kind: Pod
metadata:
  name: csicephfs-demo-pod
spec:
  containers:
    - name: web-server
      image: nginx
      volumeMounts:
        - name: mypvc
          mountPath: /var/lib/www/html
  volumes:
    - name: mypvc
      persistentVolumeClaim:
        claimName: cephfs-pvc
        readOnly: false

执行下csi的demo测试,
并验证volume对应挂载,文件是否同步
在这里插入图片描述在pod的pv挂载路径写入文件
在这里插入图片描述pod所在宿主机本地磁盘路径验证ok

基本的环境就是这样,过于原理的东西没有介绍,可以参考下官方文档,
我们这边基本上就该测试 然后生产迁移了,肯定还会遇到问题,基于不同环境之类的 各种因素吧

先这样~

Logo

开源、云原生的融合云平台

更多推荐