k8s集群中部署Rook-Ceph高可用集群
先决条件
为确保您有一个准备就绪的 Kubernetes 集群Rook,您可以按照这些说明进行操作。
为了配置 Ceph 存储集群,至少需要以下本地存储选项之一:
- 原始设备(无分区或格式化文件系统)
- 这需要lvm2在主机上安装。为了避免这种依赖性,您可以在磁盘上创建一个完整的磁盘分区(见下文)
- 原始分区(无格式化的文件系统)
- block模式下存储类可用的持久卷
部署 Rook Operator
$ git clone --single-branch --branch release-1.7 https://gitee.com/Aaron-23/rook.git
cd rook/cluster/examples/kubernetes/ceph
第一步是部署 Rook 算子。检查您是否正在使用与您的 Rook 版本相对应的示例 yaml 文件。有关更多选项,请参阅示例文档。
cd cluster/examples/kubernetes/ceph
kubectl create -f crds.yaml -f common.yaml -f operator.yaml
# verify the rook-ceph-operator is in the `Running` state before proceeding
kubectl -n rook-ceph get pod
修改cluster.yaml文件中storage.node的相关信息,至少需要三个节点
kubectl create -f cluster.yaml
使用kubectl到列表荚的rook-ceph命名空间。一旦它们全部运行,您应该能够看到以下 pod。osd pod 的数量取决于集群中的节点数量和配置的设备数量。如果cluster.yaml上面没有修改,预计每个节点会创建一个OSD。
如果rook-ceph-mon,rook-ceph-mgr或rook-ceph-osd不创建豆荚,请参阅 Ceph的常见问题的详细信息和可能的解决方案。
$ kubectl -n rook-ceph get pod
NAME READY STATUS RESTARTS AGE
csi-cephfsplugin-provisioner-d77bb49c6-n5tgs 5/5 Running 0 140s
csi-cephfsplugin-provisioner-d77bb49c6-v9rvn 5/5 Running 0 140s
csi-cephfsplugin-rthrp 3/3 Running 0 140s
csi-rbdplugin-hbsm7 3/3 Running 0 140s
csi-rbdplugin-provisioner-5b5cd64fd-nvk6c 6/6 Running 0 140s
csi-rbdplugin-provisioner-5b5cd64fd-q7bxl 6/6 Running 0 140s
rook-ceph-crashcollector-minikube-5b57b7c5d4-hfldl 1/1 Running 0 105s
rook-ceph-mgr-a-64cd7cdf54-j8b5p 1/1 Running 0 77s
rook-ceph-mon-a-694bb7987d-fp9w7 1/1 Running 0 105s
rook-ceph-mon-b-856fdd5cb9-5h2qk 1/1 Running 0 94s
rook-ceph-mon-c-57545897fc-j576h 1/1 Running 0 85s
rook-ceph-operator-85f5b946bd-s8grz 1/1 Running 0 92m
rook-ceph-osd-0-6bb747b6c5-lnvb6 1/1 Running 0 23s
rook-ceph-osd-1-7f67f9646d-44p7v 1/1 Running 0 24s
rook-ceph-osd-2-6cd4b776ff-v4d68 1/1 Running 0 25s
rook-ceph-osd-prepare-node1-vx2rz 0/2 Completed 0 60s
rook-ceph-osd-prepare-node2-ab3fd 0/2 Completed 0 60s
rook-ceph-osd-prepare-node3-w4xyz 0/2 Completed 0 60s
验证集群是否处于健康状态
使用Rook tools并运行该 ceph status命令。
kubectl create -f toolbox.yaml
kubectl -n rook-ceph rollout status deploy/rook-ceph-tools
$ kubectl -n rook-ceph exec -it deploy/rook-ceph-tools -- bash
$ ceph status
[root@rook-ceph-tools-7869bc54f6-67rvk /]# ceph status
cluster:
id: 1f70694e-df88-4a1f-b77e-d2dd0ded9977
health: HEALTH_OK
services:
mon: 3 daemons, quorum a,b,c (age 23h)
mgr: a(active, since 20h), standbys: b
mds: 1/1 daemons up, 1 hot standby
osd: 3 osds: 3 up (since 20h), 3 in (since 20h)
data:
volumes: 1/1 healthy
pools: 3 pools, 192 pgs
objects: 25 objects, 50 KiB
usage: 107 MiB used, 300 GiB / 300 GiB avail
pgs: 192 active+clean
io:
client: 1.2 KiB/s rd, 2 op/s rd, 0 op/s wr
存储
有关 Rook 公开的三种存储类型的演练,请参阅以下指南:
Block:创建由 Pod (RWO) 使用的块存储
共享文件系统:创建一个跨多个 Pod 共享的文件系统 (RWX)
Object:创建一个可以在 Kubernetes 集群内部或外部访问的对象存储
创建共享文件系统
kubectl create -f filesystem.yaml
Rook operator将创建启动服务所需的所有池和其他资源。这可能需要一分钟才能完成。
# To confirm the filesystem is configured, wait for the mds pods to start
kubectl -n rook-ceph get pod -l app=rook-ceph-mds
NAME READY STATUS RESTARTS AGE
rook-ceph-mds-myfs-7d59fdfcf4-h8kw9 1/1 Running 0 12s
rook-ceph-mds-myfs-7d59fdfcf4-kgkjp 1/1 Running 0 12s
要查看文件系统的详细状态,请启动并连接到Rook tools。将ceph status为该mds服务显示一个新行。在此示例中,有一个 MDS 的活动实例已启动,其中一个 MDS 实例处于standby-replay模式以备故障转移。
$ ceph status
...
services:
mds: myfs-1/1/1 up {[myfs:0]=mzw58b=up:active}, 1 up:standby-replay
供应存储
在 Rook 开始供应存储之前,需要根据文件系统创建一个 StorageClass。这是 Kubernetes 与 CSI 驱动程序互操作以创建持久卷所必需的。
注意:此示例使用 CSI 驱动程序,它是 K8s 1.13 和更新版本的首选驱动程序。示例可以在CSI CephFS目录中找到。有关使用 flex 驱动程序(K8s 1.12 及更早版本需要)的卷的示例,请参阅下面的Flex 驱动程序部分。
kubectl create -f storageclass.yaml
存储配额
重要提示:CephFS CSI 驱动程序使用配额来强制执行请求的 PVC 大小。只有较新的内核支持 CephFS 配额(内核版本至少为 4.17)。如果您需要强制执行配额并且内核驱动程序不支持它,您可以禁用内核驱动程序并使用 FUSE 客户端。这可以通过CSI_FORCE_CEPHFS_KERNEL_CLIENT: false 在操作员部署 ( operator.yaml) 中设置来完成。但是,重要的是要知道,当 FUSE 客户端启用时,存在一个问题,即在升级过程中应用程序 pod 将与挂载断开连接,需要重新启动。有关 更多详细信息,请参阅升级指南。
dashboard
获取svc,在平台上代理
kubectl -n rook-ceph get service rook-ceph-mgr-dashboard
连接到仪表板后,您需要登录以进行安全访问。Rook 创建一个默认用户, admin并rook-ceph-dashboard-password在 Rook Ceph 集群运行的命名空间中生成一个名为的秘密。要检索生成的密码,您可以运行以下命令:
kubectl -n rook-ceph get secret rook-ceph-dashboard-password -o jsonpath="{['data']['password']}" | base64 --decode && echo
k8s集群中部署Rook-Ceph高可用集群的更多相关文章
- kubeadm部署k8s1.9高可用集群--4部署master节点
部署master节点 kubernetes master 节点包含的组件: kube-apiserver kube-scheduler kube-controller-manager 本文档介绍部署一 ...
- 使用二进制的方式部署 K8S-1.16 高可用集群
一.项目介绍 项目致力于让有意向使用原生kubernetes集群的企业或个人,可以方便的.系统的使用二进制的方式手工搭建kubernetes高可用集群.并且让相关的人员可以更好的理解kubernete ...
- kubernetes部署redis主从高可用集群
1.redis主从高可用集群结构 2.k8s部署有状态的服务选择 对于K8S集群有状态的服务,我们可以选择deployment和statefulset statefulset service& ...
- 基于zookeeper(集群)+LevelDB的ActiveMq高可用集群安装、配置、测试
一. zookeeper安装(集群):http://www.cnblogs.com/wangfajun/p/8692117.html √ 二. ActiveMq配置: 1. ActiveMq集群部署 ...
- 使用 Sealos 在 3 分钟内快速部署一个生产级别的 Kubernetes 高可用集群
本文首发于:微信公众号「运维之美」,公众号 ID:Hi-Linux. 「运维之美」是一个有情怀.有态度,专注于 Linux 运维相关技术文章分享的公众号.公众号致力于为广大运维工作者分享各类技术文章和 ...
- 搭建 RabbitMQ Server 高可用集群
阅读目录: 准备工作 搭建 RabbitMQ Server 单机版 RabbitMQ Server 高可用集群相关概念 搭建 RabbitMQ Server 高可用集群 搭建 HAProxy 负载均衡 ...
- 搭建 RabbitMQ Server 高可用集群【转】
阅读目录: 准备工作 搭建 RabbitMQ Server 单机版 RabbitMQ Server 高可用集群相关概念 搭建 RabbitMQ Server 高可用集群 搭建 HAProxy 负载均衡 ...
- harbor高可用集群搭建
高可用harbor集群搭建 一.安装部署 1.节点角色 角色 数量 名称 备注 harbor主节点 2 harbor-1 harbor-2 双主模式 haproxy 2 HA-1 HA-2 需要通过k ...
- corosync+pacemaker and drbd实现mysql高可用集群
DRBD:Distributed Replicated Block Device 分布式复制块设备,原理图如下 DRBD 有主双架构和双主架构的,当处于主从架构时,这个设备一定只有一个节点是可以读写的 ...
- spark高可用集群搭建及运行测试
文中的所有操作都是在之前的文章spark集群的搭建基础上建立的,重复操作已经简写: 之前的配置中使用了master01.slave01.slave02.slave03: 本篇文章还要添加master0 ...
随机推荐
- Maven还停留在导jar包?快来探索Nexus私服的新世界
写在前面 Maven,学习框架之前我们都会接触到的一个工具,感觉他的定位,似乎就跟git一样,只是方便我们开发?于是自然而然的,很多小猿对于Maven都只是停留在会用的阶段,利用他来构建,打包,引入j ...
- 矩阵n次幂的计算
1.归纳法 两大数学归纳法 题目一 2.递推关系 题目一 题目二 3.方阵 题目一 4.矩阵对角化(重点) 题目一 题目二 题目三 题目四 5.矩阵性质(综合) 题目一 题目二 对于副对角线: 题目三
- hdu 1856 More is better(并查集)
题意: Mr Wang wants some boys to help him with a project. Because the project is rather complex, the m ...
- POJ 1274 The Perfect Stall(二分图最大匹配)
题意: N头牛M个牛棚,每只牛都有它自己指定的若干个它愿意呆的牛棚. 每个牛棚最多呆一头牛. 问最多可以满足多少头牛的愿望. 思路: 裸二分图最大匹配. 代码: int n,m; vector< ...
- CSS 盒子的边距塌陷
tip:为能更直观地学习,本文章已省略部分 css 样式代码. 我相信下面的情形大家在日常工作中常常碰到:在制作静态页面中,为了页面整体的协调与美观,我们想让子盒子 image-div 的上边沿距离父 ...
- 使用Visual Studio 2019将ASP.NET Core发布为linux-arm64程序
前言 前段时间入手了一台树莓派4B,一直闲置未使用,最近工作需要,要在上面跑下.NET Core程序,由于树莓派4B使用的是ARM架构,并且支持64位操作系统,为了充分发挥树莓派性能,我的这台树莓派安 ...
- 攻防世界 Misc 新手练习区 ext3 bugku Writeup
攻防世界 Misc 新手练习区 ext3 bugku Writeup 题目介绍 题目考点 WinHex工具的使用 linux磁盘挂载mount命令 Writeup 下载附件拖进winhex分析一下,查 ...
- thread pool
thread pool import concurrent.futures import urllib.request URLS = ['http://www.foxnews.com/', 'http ...
- FZU ICPC 2020 寒假训练 4 —— 模拟(一)
P1042 乒乓球 题目背景 国际乒联现在主席沙拉拉自从上任以来就立志于推行一系列改革,以推动乒乓球运动在全球的普及.其中11分制改革引起了很大的争议,有一部分球员因为无法适应新规则只能选择退役.华华 ...
- Python 操作 Redis 发布订阅
Python 操作 Redis 发布订阅 介绍 Redis可以通过多个客户机订阅相同的频道,一个服务机在相应频道进行发布,从而实现在客户机收听服务机发布相应信息,可以利用这个机制实现多个客户机之间的信 ...