Rainbond API接口详解:从节点管理到任务调度
Rainbond作为一款开源的云原生应用管理平台,提供了丰富的API接口来管理集群节点、调度任务以及获取服务端点信息。本文将深入解析Rainbond的核心API功能,帮助开发者更好地理解和使用这些接口。
一、License管理接口
1. 提交License
POST /license
这是Rainbond的授权管理接口,用于提交license并获取访问令牌。开发者需要将license以表单形式提交,成功后将返回一个包含token的JSON响应。
参数说明:
- license:必填参数,以字符串形式传递license内容
典型响应:
{
"bean": {
"token": "Q3E5OXdoZDZDX3drN0QtV2gtVmpRaGtlcHJQYmFK"
}
}
二、服务端点管理
1. 获取服务端点
GET /v2/apps/{app_name}/discover
此接口用于查询指定应用的端点(endpoints)信息,包括服务实例的地址和端口等。
响应示例:
{
"list": [
{
"name": "d275f5b34faf",
"url": "10.0.55.72:6363",
"weight": 0
}
]
}
三、任务(Job)管理
Rainbond提供了完整的任务调度API,包括任务的增删改查、状态变更和执行控制。
1. 任务基础操作
获取任务列表
GET /v2/job
支持按节点(node)和组(group)过滤任务列表。
添加/更新任务
PUT /v2/job
需要以JSON格式提交完整的任务配置,包括:
- 任务名称(name)
- 所属组(group)
- 执行命令(cmd)
- 调度规则(rules)
- 重试策略(retry)
- 超时设置(timeout)等
获取所有任务组
GET /v2/job/group
返回所有已存在的任务组名称列表。
2. 任务细粒度控制
获取特定任务
GET /v2/job/{id}/group/{group}
通过任务ID和组名获取特定任务的详细信息。
变更任务状态
POST /v2/job/{id}/group/{group}
可用于暂停或恢复任务的执行。
删除任务
DELETE /v2/job/{id}/group/{group}
立即执行任务
PUT /v2/job/{id}/group/{group}/node/{name}
在指定节点上立即执行一次任务。
获取任务可执行节点
GET /v2/job/{id}/groups/{group}/nodes
返回可以运行该任务的所有节点IP列表。
四、节点管理
Rainbond提供了完整的节点生命周期管理API。
1. 节点基础操作
获取节点列表
GET /v2/nodes
从etcd获取所有节点的概要信息,包括:
- 节点UUID
- 主机名和内/外网IP
- 可用资源(内存、CPU)
- 角色(role)
- 状态(status)
- 标签(labels)
- 调度状态(unschedulable)
添加新节点
POST /v2/nodes
需要提交完整的节点信息JSON。
获取节点基本信息
GET /v2/nodes//{node}/basic
通过节点UUID获取特定节点的详细信息。
2. 节点初始化与安装
SSH连接测试
PUT /v2/nodes/login
测试与目标节点的SSH连接,需要提供:
- 主机地址和端口(hostport)
- 节点类型(hosttype)
- 登录凭证(pwd)
- 登录类型(type)
基础初始化
PUT /v2/nodes/{ip}/init
对指定IP的节点执行基础初始化操作。
安装管理
GET /v2/nodes/{ip}/install
PUT /v2/nodes/{ip}/install
开始执行内置安装任务或检查安装状态。
安装状态检查
GET /v2/nodes/{ip}/install/status
获取安装任务的执行状态和结果。
3. 节点状态管理
重新上线节点
PUT /v2/nodes/{node}
将指定UUID的节点重新上线。
更新节点信息
POST /v2/nodes/{node}
更新节点的配置信息,包括资源、标签等属性。
五、使用建议
-
任务调度:Rainbond的任务调度系统支持复杂的调度规则,包括定时执行、节点过滤等,适合用于集群内的定时维护任务。
-
节点管理:通过API可以实现节点的全自动化部署和配置,适合大规模集群的管理。
-
服务发现:服务端点API可以帮助应用实现服务发现功能,动态获取后端服务实例。
-
错误处理:所有API都返回标准化的响应,包含状态码和消息,便于错误处理。
Rainbond的API设计遵循RESTful风格,提供了完整的集群管理能力。开发者可以根据实际需求组合使用这些API,实现自动化运维和资源管理。