kubernetes 之战 基于 rook 搭建 ceph 分布式存储
概述
前文介绍了 kubernetes 实战 使用 nfs 作为动态 storageClass 存储,本文介绍 kubernetes 集群 使用 rook ceph 作为动态 storageClass 存储。ceph 搭建对于没有基础的童鞋来说还是比较困难的,之前做虚拟化时搞过几次,基本都是专业高存储的操作。现在 出现了rook帮助我们简化了这些过程,本文通过 rook 快速搭建ceph分布式存储。
ceph 简介:
Ceph 是一个开源的分布式存储系统,包括对象存储、块设备、文件系统。它具有高可靠性、安装方便、管理简便、能够轻松管理海量数据。Ceph 存储集群具备了企业级存储的能力,它通过组织大量节点,节点之间靠相互通讯来复制数据、并动态地重分布数据,从而达到高可用分布式存储功能
rook 简介:
Rook 是专用于 Cloud-Native 环境的文件、块、对象存储服务。它实现了一个自动管理的、自动扩容的、自动修复的分布式存储服务。Rook 支持自动部署、启动、配置、分配、扩容/缩容、升级、迁移、灾难恢复、监控以及资源管理。为了实现所有这些功能,Rook 需要依赖底层的容器编排平台,例如 kubernetes、CoreOS 等。Rook 目前支持 Ceph、NFS、Minio Object Store、Edegefs、Cassandra、CockroachDB 存储的搭建,后期会支持更多存储方案。
rook github 地址
Rook与Kubernetes结合的架构图如下:
Rook的主要组件有两个,功能如下:
Rook Operator:
Rook与Kubernetes交互的组件
整个Rook集群只有一个
Rook Agent:
与Rook Operator交互,执行命令
每个Kubernetes的Node上都会启动一个
不同的存储系统,启动的Agent是不同的
环境
- kubernetes 集群 or 高可用集群
- rook release-1.1
部署 rook operator
rook 官方操作步骤, 可以通过helm chart 方式部署 rook operator,这里不再赘述。
获取 rook 源码, 切换为release-1.1
git clone https://github.com/rook/rook.git
git checkout -b release-1.1 origin/release-1.1
部署 operator
cd cluster/examples/kubernetes/ceph
kubectl create -f common.yaml
kubectl create -f operator.yaml
验证 rook-ceph-operator 是否部署成功
[root@node3 ceph]# kubectl -n rook-ceph get pod
NAME READY STATUS RESTARTS AGE
csi-cephfsplugin-44269 3/3 Running 3 5h34m
csi-cephfsplugin-provisioner-b66d48bc8-6f6wl 4/4 Running 4 5h34m
csi-cephfsplugin-provisioner-b66d48bc8-c89dj 4/4 Running 4 5h34m
csi-rbdplugin-9hgbm 3/3 Running 3 5h34m
csi-rbdplugin-provisioner-95dd85d6-k74pk 5/5 Running 17 5h34m
csi-rbdplugin-provisioner-95dd85d6-sspfb 5/5 Running 19 5h34m
rook-ceph-agent-f9kpk 1/1 Running 1 5h34m
rook-ceph-mgr-a-85dbb977cd-5hxw9 1/1 Running 0 119m
rook-ceph-mon-a-756c9d7d7f-djc4s 1/1 Running 0 120m
rook-ceph-operator-6f556bcbff-qjr7h 1/1 Running 20 5h49m
rook-ceph-osd-0-54bb64bdcb-pjghp 1/1 Running 0 118m
rook-ceph-osd-prepare-node3-4k5pp 0/1 Completed 0 119m
rook-ceph-tools-868c87d5b9-rbgqt 1/1 Running 0 68m
rook-discover-thgf4
部署 ceph cluster
cluster-test.yaml 配置如下:
apiVersion: ceph.rook.io/v1
kind: CephCluster
metadata:name: rook-cephnamespace: rook-ceph
spec:cephVersion:# For the latest ceph images, see https://hub.docker.com/r/ceph/ceph/tagsimage: ceph/ceph:v14.2.3-20190904dataDirHostPath: /var/lib/rookmon:count: 3dashboard:enabled: truestorage:useAllNodes: trueuseAllDevices: false# Important: Directories should only be used in pre-production environmentsdirectories:- path: /var/lib/rook
部署:
kubectl apply -f cluster-test.yaml
部署 Ceph Dashboard
** 开启 dashboard **
上一步操作已经部署ceph cluster,确保 cluster-test.yaml 中 dashboard 开启 , dashboard 就会自动创建。
dashboard:enabled: true
确认是否创建成功
[root@node3 ceph]# kubectl get svc -n rook-ceph
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
csi-cephfsplugin-metrics ClusterIP 10.43.187.98 <none> 8080/TCP,8081/TCP 5h49m
csi-rbdplugin-metrics ClusterIP 10.43.120.23 <none> 8080/TCP,8081/TCP 5h49m
rook-ceph-mgr ClusterIP 10.43.93.116 <none> 9283/TCP 133m
rook-ceph-mgr-dashboard ClusterIP 10.43.90.79 <none> 8443/TCP 133m
rook-ceph-mgr-dashboard-external-https ClusterIP 10.43.230.64 <none> 8443/TCP 113m
rook-ceph-mon-a ClusterIP 10.43.104.11 <none> 6789/TCP,3300/TCP 4h9m
修改 service类型为NodePort:
service 默认类型为NodePort 只能在集群内部访问,将类型修改为 NodePort。
修改 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: 8443nodePort: 30007 # 固定端口访问selector:app: rook-ceph-mgrrook_cluster: rook-cephsessionAffinity: Nonetype: NodePort # 修改类型
部署
kubectl apply -f dashboard-external-https.yaml
确认 service 类型修改成功:
[root@node3 ceph]# kubectl get svc -n rook-ceph
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
csi-cephfsplugin-metrics ClusterIP 10.43.187.98 <none> 8080/TCP,8081/TCP 5h49m
csi-rbdplugin-metrics ClusterIP 10.43.120.23 <none> 8080/TCP,8081/TCP 5h49m
rook-ceph-mgr ClusterIP 10.43.93.116 <none> 9283/TCP 133m
rook-ceph-mgr-dashboard ClusterIP 10.43.90.79 <none> 8443/TCP 133m
rook-ceph-mgr-dashboard-external-https NodePort 10.43.230.64 <none> 8443:30007/TCP 113m
rook-ceph-mon-a ClusterIP 10.43.104.11 <none> 6789/TCP,3300/TCP 4h9m
测试dashboard是否可以访问:
获取密码:
用户名 admin
kubectl -n rook-ceph get secret rook-ceph-dashboard-password -o jsonpath="{['data']['password']}" | base64 --decode && echo
首页:
部署 Rook toolbox 测试
kubectl apply -f toolbox.yaml
验证是否部署成功:
注意本次演示是单节点的kubernetes 集群。
[root@node3 ceph]# kubectl -n rook-ceph get pod -l "app=rook-ceph-tools"
NAME READY STATUS RESTARTS AGE
rook-ceph-tools-868c87d5b9-rbgqt 1/1 Running 0 95m
进入pod:
错误提示不用care
[root@node3 ceph]# kubectl -n rook-ceph exec -it $(kubectl -n rook-ceph get pod -l "app=rook-ceph-tools" -o jsonpath='{.items[0].metadata.name}') bash
bash: warning: setlocale: LC_CTYPE: cannot change locale (en_US.UTF-8): No such file or directory
bash: warning: setlocale: LC_COLLATE: cannot change locale (en_US.UTF-8): No such file or directory
bash: warning: setlocale: LC_MESSAGES: cannot change locale (en_US.UTF-8): No such file or directory
bash: warning: setlocale: LC_NUMERIC: cannot change locale (en_US.UTF-8): No such file or directory
bash: warning: setlocale: LC_TIME: cannot change locale (en_US.UTF-8): No such file or directory
测试:
[root@node3 /]# ceph statuscluster:id: d693bbc6-5c4e-432c-b3ff-1e707cfdbb51health: HEALTH_WARNReduced data availability: 5 pgs inactiveDegraded data redundancy: 5 pgs undersizedtoo few PGs per OSD (5 < min 30)services:mon: 1 daemons, quorum a (age 2h)mgr: a(active, since 2h)osd: 1 osds: 1 up (since 2h), 1 in (since 2h)data:pools: 1 pools, 5 pgsobjects: 0 objects, 0 Busage: 14 GiB used, 21 GiB / 35 GiB availpgs: 100.000% pgs not active5 undersized+peered[root@node3 /]# ceph osd status
+----+-------+-------+-------+--------+---------+--------+---------+-----------+
| id | host | used | avail | wr ops | wr data | rd ops | rd data | state |
+----+-------+-------+-------+--------+---------+--------+---------+-----------+
| 0 | node3 | 14.3G | 20.7G | 0 | 0 | 0 | 0 | exists,up |
+----+-------+-------+-------+--------+---------+--------+---------+-----------+[[root@node3 /]# ceph df
RAW STORAGE:CLASS SIZE AVAIL USED RAW USED %RAW USEDhdd 35 GiB 21 GiB 14 GiB 14 GiB 40.86TOTAL 35 GiB 21 GiB 14 GiB 14 GiB 40.86POOLS:POOL ID STORED OBJECTS USED %USED MAX AVAILtest-pool 1 0 B 0 0 B 0 6.3 GiB[root@node3 /]# rados df
POOL_NAME USED OBJECTS CLONES COPIES MISSING_ON_PRIMARY UNFOUND DEGRADED RD_OPS RD WR_OPS WR USED COMPR UNDER COMPR
test-pool 0 B 0 0 0 0 0 0 0 0 B 0 0 B 0 B 0 Btotal_objects 0
total_used 14 GiB
total_avail 21 GiB
total_space 35 GiB
创建 pool :
ceph osd pool create pool1 5
查看 pool:
[root@node3 /]# ceph df
RAW STORAGE:CLASS SIZE AVAIL USED RAW USED %RAW USEDhdd 35 GiB 21 GiB 14 GiB 14 GiB 40.86TOTAL 35 GiB 21 GiB 14 GiB 14 GiB 40.86POOLS:POOL ID STORED OBJECTS USED %USED MAX AVAILtest-pool 1 0 B 0 0 B 0 6.3 GiBpool1 2 0 B 0 0 B 0 6.3 GiB
dashboard 查看pool:
kubernetes 之战 基于 rook 搭建 ceph 分布式存储相关推荐
- Kubernetes 集群基于 Rook 搭建 Ceph 分布式存储系统
文章目录 1.Rook & Ceph 介绍 1.1.Rook 1.2.Ceph 2.环境.软件准备 3.Kubernetes HA 集群搭建 4.部署 Rook Operator 5.配置 R ...
- Kubernetes 集群基于 Rook 的 Ceph 存储之块设备、文件系统、对象存储
文章目录 1.Rook & Ceph 介绍 2.环境.软件准备 3.Block 块存储 3.1.创建 CephBlockPool.StorageClass 3.2.验证并测试 4.File S ...
- K8s上使用rook搭建Ceph集群
目录 准备工作 一.安装kubectl 二:win10 安装Docker Desktop for Windows(非必须) 三.Harbor 知识补充: 1.Ceph mgr和mon 2:Ceph 中 ...
- Rook搭建Ceph
一.软件版本及先决条件 软件版本: 软件版本名称 软件版本号 Pacific 16.2.7 Rook V1.9 先决条件: • K8s集群,1.16版本+ • K8s至少3个工作节点 • ...
- K8S集群rook部署ceph集群
前言: 之前自己用rook部署过几次ceph集群,每次部署或多或少都会遇到一些问题.有些网上还能找到解决方法,有的只能靠自己去解决,毕竟每个人部署遇到的问题不一定都相同.因为每次部署完自己也没做记录, ...
- 最新版本 release版本 ceph分布式存储搭建(rook-1.8.6)
rook+ceph ceph简介: Rook 是 Kubernetes 的开源云原生存储编排器,为各种存储解决方案提供平台.框架和支持,以与云原生环境进行原生集成. Rook 将存储软件转变为自我管理 ...
- 基于Rook+Ceph的云原生存储架构剖析
[摘要]Rook 是一款云原生存储编排服务工具,Ceph 是一种广泛使用的开源分布式存储方案,通过 Rook 可以大大简化 Ceph 在 Kubernetes 集群中的部署和维护工作.本文重点介绍 ...
- 直播 | 基于kubeadm搭建Kubernetes HA集群
分享时间:6月18日 20:30 分享主题:基于kubeadm搭建Kubernetes HA集群 分享人介绍: 张炯,上汽集团下属赛可出行运维工程师.10年工作经验,曾任职于Ctrip.SNDA,作为 ...
- Ceph分布式存储实战:从0搭建一个存储集群,并把块设备镜像映射到CentOS 7系统上的步骤
本文配套视频和笔记: Ceph分布式存储实战(Ceph快速上手) B站视频在线观看链接:[千锋教育]Ceph分布式存储技术教程(进阶到实战) 百度网盘链接:2020全新_Ceph分布式存储技术-进阶到 ...
最新文章
- python怎么读取文件-python怎么读写文件操作
- kubesphere devops介绍、访问账密及nfs数据备份同步
- TMS320F28335时钟(1)
- Windows XP时代终结:假设你还在用它怎么办
- MySQL高级之查询优化(索引失效)
- Piggy-Bank POJ - 1384(完全背包+背包放满)
- 关于服务器虚化的优势,vmware虚化优势.docx
- Centos+Mysql+sphinx+mmseg(rhel4)
- 【操作系统】—操作系统的四个特征
- python画三维图-Python基于matplotlib实现绘制三维图形功能示例
- js排序算法详解-桶排序
- 七种qsort排序方法
- sqoop-1.4.7安装
- 算法导论 中+英 PDF分享 附书单
- HCIA-虚拟化与网络存储技术
- Ubuntu 无法复制大文件 卡死
- Linux CentOS 大数据集群的基础配置(3) CHD分布式环境搭建
- DDR2(SDRAM)初始化 28个步骤总结
- HTML中的meta标签
- 【How2RE】 UPX壳及脱壳方式