k8s源码分析 pdf_rook源码分析之一:rook架构解析

cbdf705e17a6f7620ca4c90215ba6442.png

rook简介

Rook是一款云原生环境下的开源分布式存储编排系统,目前支持 Ceph、NFS、Edegefs、Cassandra、CockroachDB等存储系统。它实现了一个自动管理的、自动扩容的、自动修复的分布式存储服务。Rook 支持自动部署、启动、配置、分配、扩容/缩容、升级、迁移、灾难恢复、监控以及资源管理。

Rook依赖底于编排平台kubernetes的operate提供服务。

当前,Rook是CNCF的incubating project项目。

rook部署ceph实例

为了让大家先感受下rook,这里先利用rook来部署一个ceph集群。

应该来说rook的部署还是非常方便容易的,即使不懂ceph的朋友,也可以利用rook为kubernetes快速搭建一个ceph后端存储基座。

// clone rook代码
git clone --single-branch --branch release-1.3 https://github.com/rook/rook.git
cd rook/cluster/examples/kubernetes/cephkubectl create -f common.yaml
kubectl create -f operator.yaml// 该条命令执行前可用"kubectl -n rook-ceph get pod"命令查看""rook-ceph-operator "是否已经是running状态了
kubectl create -f cluster.yaml// 为ceph集群创建一个工具pod,有了该工具pod就可以在该pod里基于该ceoh集群执行ceph相关命令了
kubectl create -f toolbox.yaml

以下便是本次创建成功的所有pod:

usrname@hostname:~$ kubectl get pods -n rook-ceph
NAME                                                 READY     STATUS      RESTARTS   AGE
rook-ceph-mgr-a-76c494c8c-mmcb9                      1/1       Running     0          47h
rook-ceph-mon-a-59899574c-bph5d                      1/1       Running     0          47h
rook-ceph-mon-b-5c8467b4b8-kwzhn                     1/1       Running     1          46h
rook-ceph-mon-c-77c9b7987c-s924g                     1/1       Running     0          47h
rook-ceph-osd-1-5dcf569f54-s9m2b                    1/1       Running     0          46h
rook-ceph-osd-2-69f59fd7db-6nrkl                    1/1       Running     0          46h
rook-ceph-osd-3-79d856fbdc-vlrq6                    1/1       Running     0          46h
// 工具pod,通过进入工具pod后便可以对该ceph集群执行ceph命令了
rook-ceph-tools-686b8cdf49-56jl9                     1/1       Running     1          46hrook-ceph-operator-564464fc86-2j664                  1/1       Running     0          47h
rook-ceph-agent-4bzh2                                1/1       Running     0          47h
rook-ceph-agent-5gplk                                1/1       Running     0          47h
rook-ceph-agent-lx8sl                                1/1       Running     1          47h
rook-discover-hdb62                                  1/1       Running     1          47h
rook-discover-l4n4h                                  1/1       Running     0          47h
rook-discover-wf47r                                  1/1       Running     0          47h

通过查看上述pod信息,我们发现ceph中的元素,比如osd,mon以及mgr都是通过pod的形式存在的(更准确来说应该是deployment),每个osd和mon都对应着一个pod。

除了ceph相关的pod,我们发现还有3个agent,3个discover以及1个operate相关pod。这几类pod就是rook的核心,agent和discovery是以daemonset形式部署在所有的存储机上的,operater是rook的大脑,以deployment形式存在。

rook架构

bc1142b28a4122ff9b832e1675f5e71b.png

通过上一小节用rook部署ceph,我们知道了rook有3个核心概念,也即operate,discover以及agent。在rook这幅架构图中我们便能发现他们的踪迹。

1)Rook Operator

Rook Operater是rook的大脑,以deployment形式存在

  • 其利用k8s的controller-runtime框架实现了CRD,并进而接受k8s创建资源的请求并创建相关资源(集群,pool,块存储服务,文件存储服务等)。
  • Rook Operate监控存储守护进程,来确保存储集群的健康。
  • 监听Rook Discovers收集到的存储磁盘设备,并创建相应服务(ceph的话就是osd了)。

可以通过修改operate.yaml中的replicas的副本数来保证Operate的高可用(默认为1)。

2)Rook Discover

Rook Discover是以daemonset形式部署在所有的存储机上的,其检测挂接到存储节点上的存储设备。把符合要求的存储设备记录下来,这样Rook Operate感知到以后就可以基于该存储设备创建相应服务了。

3)Rook Agent

Rook Agent是以daemonset形式部署在所有的存储机上的,其处理所有的存储操作,例如挂卸载存储卷以及格式化文件系统等。

最近开始接触到Rook源码相关工作,因为觉得Rook确实挺好用的,所以后面希望能逐步聊聊自己的理解。

接下来应该会从以下几方面展开:

  • rook源码分析之2:rook源码目录架构以及框架浅析
  • rook源码分析之3:operate源码浅析
  • rook源码分析之4:discover源码浅析
  • rook源码分析之5:agent源码浅析

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/366621.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

24 python异常机制

1 --------------------捕获多个异常-------------------------------------------2 try:3 pass4 except Exception1 as e:5 raise 6 except Exception2 as e:7 raise 8 except Exception3 as e:9 raise 10 。。。。等等 11 12 ##--- 其实等同于以下&#xf…

.net压缩文件夹

1&#xff0c;引用&#xff1a;using System.IO.Packaging; 2&#xff0c;压缩文件的方法&#xff1a; /// <summary>/// 压缩文件夹到制定的路径/// </summary>/// <param name"folderName">要压缩的文件物理路径</param>/// <param nam…

weex eros框架源码解析

weex eros是基于alibaba weex框架进行二次封装的客户端跨平台开发框架&#xff0c;主要是为前端开发者&#xff08;可以不用熟悉客户端开发)提供的一站式客户端app开发解决方案。官网地址为&#xff1a;https://bmfe.github.io/eros-docs/#/。为了方便前端开发者和客户端开发者…

什么是可重入锁?

在Java 5.0中&#xff0c;增加了一个新功能以增强内部锁定功能&#xff0c;称为可重入锁定。 在此之前&#xff0c;“同步”和“易失性”是实现并发的手段。 public synchronized void doAtomicTransfer(){//enter synchronized block , acquire lock over this object.operat…

多选一的图片和文字

利用 radio 做单选事件&#xff0c;js 兄弟选择 nextSibling 获取邻近的图片对象&#xff0c;然后进行改变 例子&#xff1a; CSS <style type"text/css">input[type"radio"] {display: none;}label{font-size: 16px;}.choose_or{width: 1.2rem;heig…

【每日一题】收集足够苹果的最小花园周长

文章目录 Tag题目来源解题思路方法一&#xff1a;二分枚举答案 写在最后 Tag 【二分枚举答案】【二维网格】【2023-12-24】 题目来源 1954. 收集足够苹果的最小花园周长 解题思路 方法一&#xff1a;二分枚举答案 思路 通过如下过程&#xff0c;我们可以求出边长为 2n 时&…

小数前的0在html不显示,jsp小数显示问题 例如 我在oracle 数据库中查询出来的是 0.01 但是在jsp页面上就显示成 .01 没有前面的0...

满意答案1234junling2013.08.28采纳率&#xff1a;56% 等级&#xff1a;12已帮助&#xff1a;6022人控制保留几位有效小数的js函数//Code CreateBy abandonship 2007.03.12function FormatAfterDotNumber( ValueString, nAfterDotNum ){var ValueString,nAfterDotNum ;var r…

word文档图标变成白纸_word文档图标变为白纸

请不要盗用我的答案&#xff01;&#xff01;一号方案【新P】注意【原创】&#xff1a;1&#xff0e;安全模式下&#xff0c;效果更好&#xff01;2. 以下所要使用的软件&#xff0c;都要安装或升级到最新版本&#xff0c;以保证使用的效果。3. 不杀毒&#xff0c;直接使用以下…

Jira filter subscribe issues

Jira & filter & subscribe & issues https://confluence.atlassian.com/search/?querysubscribeissues&productNameJiraCore&productVersion7.3]https://confluence.atlassian.com/jiracoreserver073/saving-your-search-as-a-filter-861257224.html 转载…

iView 一周年了,同时发布了 2.0 正式版,但这只是开始...

两年前&#xff0c;我开始接触 Vue.js 框架&#xff0c;当时就被它的轻量、组件化和友好的 API 所吸引。之后我将 Vue.js 和 Webpack 技术栈引入我的公司&#xff08;TalkingData&#xff09;可视化团队&#xff0c;并经过一年多的实践&#xff0c;现已成为整个公司的前端开发规…

Hawtio和Apache JClouds

介绍 我最近花了一些时间为Hawtio开发 Apache Jclouds插件。 尽管还有很多待完成的工作&#xff0c;但我无法激动&#xff0c;想分享…… 这个Hawtio到底是什么&#xff1f; 每当我注意到一个很酷的开源项目时&#xff0c;我通常都会订阅邮件列表&#xff0c;以便我可以更好地…

【转】安全加密(一):这些MCU加密方法你都知道吗?

本文导读 随着物联网和边缘计算的出现&#xff0c;五花八门的MCU也被应用其中&#xff0c;如何保证我们的程序安全和知识产权不受侵犯呢&#xff0c;本文我们将对主流MCU的程序加密进行讲解&#xff0c;希望能够帮助你选择最适合自己应用的微处理器。 1. MCU加密 通常所说的MC…

检验杜宾 瓦森检验法R语言_EVIEWS序列相关检验2.pdf

EVIEWS序列相关检验2序列相关检验、处理及案例内蒙古科技大学经济与管理学院边璐 2011.11.10内容安排• 自相关性的检验• 自相关性的解决方法• 案例分析自相关性的检验• 1、图示法(上节课已说过)• 2、DW检验• 3、回归检验法• 4、高阶自相关性检验2、杜宾-瓦森(Durbin-Wat…

连续出现最长次数

输入第一行有一个整数n(n < 1000)&#xff0c;为数组元素的个数。第二行有n个整数&#xff0c;整数之间以一个空格分开。输出输出最长平台的长度。样例输入 10 1 2 2 3 3 3 4 5 5 6 样例输出 3 #include<iostream> using namespace std; int main() {int a[1001],n;ci…

家用计算机机箱怎么选,一般家用电脑主机买什么配置的比较好

组装台式电脑配置最好的方法&#xff1a;实用性机型建议&#xff1a;首选1&#xff1a;intel G1620双核H61M主板。(价格低廉性能不弱&#xff0c;超值)首选2&#xff1a;intel G1840双核H81M主板。(核心显卡性能比G1620更强)中级机型建议&#xff1a;首选1&#xff1a;intel G3…

浅谈Vue内置component组件的应用场景

官方的说明 渲染一个“元组件”为动态组件。依 is 的值&#xff0c;来决定哪个组件被渲染。 <!-- 动态组件由 vm 实例的属性值 componentId 控制 --> <component :is"componentId"></component>具体可以官网文档中的 动态组件内置的组件compone…

angular路由传递参数_在angular4.0路由传递获取参数的最优方案

这次给大家带来在angular4.0路由传递获取参数的最优方案&#xff0c;在angular4.0路由传递获取参数的注意事项有哪些&#xff0c;下面就是实战案例&#xff0c;一起来看一下。研究ng4的官网&#xff0c;终于找到了我想要的方法。我想要的结果是用‘&拼接参数传送&#xff0…

计算机基础及ms应用在线,全国一级计算机基础及MS Office应用课件 (2).pdf

全国计算机等级考试一级教程计算机基础及MS Office应用考试大纲考试大纲考试大纲考试大纲考试大纲考试大纲考试大纲考试大纲考点1 &#xff1a;计算机组成结构1946年世界上第一台名为ENIAC的电子计算机诞生于美国宾夕法尼亚大学。考点2 &#xff1a;冯诺依曼概念 冯诺依曼理论…

破坏您的JVM

正如我们最近发现的那样&#xff0c;全面测试可能有害。 扩展测试覆盖范围导致我们仅花费一行代码就进行了几个小时的调试会话。 使调试特别令人不愉快的是&#xff0c;该代码不仅崩溃了所部署的JVM&#xff0c;而且还破坏了其下的虚拟机和/或物理机。 因此&#xff0c;请自行…

ulli*3 实现翻书动画效果

按惯例&#xff0c;上GIF&#xff1a;重现&#xff1a;https://codepen.io/anon/pen/JJBxOm 这是我今天参加面试时候&#xff0c;面试官让我做的一道题&#xff0c;面试官坐我旁边看我现场做&#xff0c;然而我比较菜&#xff0c;回来后才做出来…… 来看看HTML部分&#xff1a…