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

k8s源码分析 pdf_rook源码分析之一:rook架构解析_第1张图片

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/ceph

kubectl 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          46h

rook-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架构

k8s源码分析 pdf_rook源码分析之一:rook架构解析_第2张图片

通过上一小节用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源码浅析

你可能感兴趣的:(k8s源码分析,pdf)