Nautilus新特性: Orchestrator
Orchestrator可以翻译为协调器或编排器,但在本文中为更准确地表达依旧采用Orchestrator。
1. Orchestrator是什么?
Ceph的Nautilus版本引入了一个新的Orchestrator接口,它提供控制外部部署工具(如ceph-ansible、DeepSea或Rook)的能力。希望在管理员、Ceph和外部部署系统之间提供一个桥梁。为了实现这一点,Orchestrator接口允许Ceph仪表板或CEPH命令行工具访问不同部署工具提供的数据,从而在Ceph Dashboard中启用基础设施管理功能。作为副作用,它将为不同的部署工具带来统一的安装体验。
展示Rook Orchestrator部署ceph服务,请观看如下示例:
https://asciinema.org/a/240964/embed?
启用后,Dashboard会使用Orchestrator接口管理iSCSI目标和NFS共享。
从体系结构的角度来看,Orchestrator接口是控制面板、命令行接口和Rook管理器模块之间的三者中的核心组件。例如,如果用户调用命令行接口向集群添加新的OSD,那么Orchestrator模块将指示外部Orchestrator在指定主机上调用ceph-volume。
以下是Orchestrator的体系结构视图,显示了不同组件之间如何交互:
2. 如何使用Orchestrator?
为了使用Orchestrator接口,CEPH集群需要与受支持的Orchestrator一起部署。要开始使用Orchestrator,只需要一个mon和一个mgr。
第二步是**后端Orchestrator模块:
ceph mgr module enable <module>
ceph orchestrator set backend <module>
其中module是ansible、deepsea、rook或ssh.
之后,需要正确配置Orchestrator模块本身。有关每个模块的详细信息,请参见下文。另外,请注意,Orchestrator模块可能只实现下面列出的命令的一个子集,这些命令的实现依赖于Orchestrator模块,并且在实现之间会有所不同。
最后,您可以检查是否使用status命令正确配置了后端,该命令显示当前的Orchestrator模式和高级状态。
ceph orchestrator status
另一个有趣的命令是device ls,可以查看已发现设备的列表,按节点分组并选择性地筛选到特定节点:
ceph orchestrator device ls
有关Orchestrator命令行界面的更多示例,请参阅官方文档。
https://docs.ceph.com/docs/nautilus/mgr/orchestrator_cli/
3. Rook Orchestrator模块
Rook是云原生计算基金会(CNCF)的孵化级项目,Rook是Kubernetes的开源云本地存储协调器,为各种存储解决方案提供平台,框架和支持,以便与云原生环境本地集成。
Rook通过一个操作器(operator)完成后续操作,只需要定义需要的状态就可以了。Rook通过操作器监控状态需求变化,并将配置文件分配到集群上生效。操作器关注包括各种集群运行和启停所需的状态信息。
描述ceph所需状态的主要对象是CephCluster CRD,它(除其他外)包括OSD应使用哪些设备、应运行多少MON以及应使用哪个版本Ceph的信息。Rook定义了其他几个CRD来描述RBD池、CEHFS文件系统等。
Rook Orchestrator模块是运行在ceph mgr守护进程中的粘合器,通过更改kubernetes中描述所需集群状态的CephCluster(和相关)对象来实现ceph Orchestration API。因为rook集群的ceph-mgr守护进程作为kubernetes pod运行,所以rook模块可以连接到kubernetes API,而无需任何显式配置。
例如,如果用户请求通过cli提供新的OSD,那么Orchestrator模块将通过调整rook针对该集群的CephCluster crd对象来响应,以指定给定设备包含OSD,rook将通过对ceph-volume和sta进行适当的调用来响应。为ceph-osd守护进程发送一个kubernetes pod。
ceph orchestrator osd create ....
4.SSH Orchestrator模块
SSH Orchestrator 是一个编排器模块,不依赖于单独的编排/部署系统(如Rook或Ansible),而是通过建立SSH连接并使用显式管理命令来管理集群中的节点。
SSH Orchestrator模块在语意上等同于以前的Ceph部署工具(实际上是使用相同的remoto库通过SSH连接在远程机器上执行代码),但重点是,SSH Orchestrator是按照安装Ceph集群标准方法来设计的,而不需要使用任何部署框架(如Ansible)。
其思想是为管理守护进程提供对SSH配置和**的访问,这些配置和**能够连接到集群中的所有节点以执行任何管理操作,例如创建存储设备清单、部署和替换OSD,或启动和停止Ceph守护进程。
此外,SSH Orchestrator将部署由systemd管理的容器映像,以允许独立升级服务。
SSH Orchestrator还可能突出显示一个工具,它封装了所有必要的操作,以便在当前主机上管理基于容器映像的服务的部署,包括一个引导运行mon和mgr的最小集群的命令。
6. Ansible Orchestrator模块
Ansible Orchestrator模块使用Ansible Runner服务来执行Ansible Playbook,以满足支持的不同操作。当调用编排API时,Ansible模块将在Ansible Runner服务上对任务进行排队,然后执行Ansible Playbook以执行该工作。
7. Deepea Orchestrator模块
Deepea是用于部署和管理CEPH的Salt状态文件、运行程序和模块的集合。
此模块连接到Salt rest API,以便与Salt master通信。然后它可以查询集群的状态或发出命令。
8. 现有集成
Dashboard和Rook集成已经完成,具体请参考Jeff Layton以前关于用Rook配置NFS的博客文章。
https://ceph.com/community/deploying-a-cephnfs-server-cluster-with-rook/
9. 未来
现在,Orchestrator将重点放在初始安装之后的day-2集群操作上。在未来的版本中,正在计划添加对day-1安装和设置操作的支持。
其次,libstoragemgmt插件支持启用标记指定磁盘和故障指示灯。在Orchestrator接口中,正在进行支持这些功能的工作。
最后,加强Dashboard功能,包括集成硬件的编目控制和部署服务等功能。