创建服务
此接口用于根据镜像和相关配置信息创建一个服务。
接口描述
通信协议:HTTP
URL:POST /api/v1/service
传参方式:body
请求参数
字段名 | 类型 | 是否必填 | 说明 |
---|---|---|---|
name | string | 是 | 服务名称 |
image | Image | 是 | 镜像信息及其容器启动配置 |
node | Node | 是 | 指定目标节点信息 |
factor | number | 否 | 动态部署时的容器实例个数 |
policy | enum | 否 | 服务部署类型。dynamic 表示动态部署;static 表示静态部署。默认为静态部署 |
prepull | boolean | 否 | 是否开启镜像预热。开启后会在部署时向所有节点同步镜像,以加速动态部署时故障迁移的速度。默认为 false |
Image
字段名 | 类型 | 是否必填 | 说明 |
---|---|---|---|
ref | string | 是 | 镜像标识符,形式为:name@tag#os |
action | enum | 是 | 服务启动类型。load 表示只创建不启动服务;run 表示创建且启动服务 |
config | DockerImageConfig | EcsImageConifg | 是 | 镜像配置信息,其中 DockerImageConfig 为 Linux 系统镜像配置信息,EcsImageConifg 为 SylixOS 系统镜像配置信息 |
vsoa | ImageVsoa | 否 | VSOA 容器配置 |
pullPolicy | enum | 否 | 镜像拉取策略,各策略说明如下:
|
autoUpgrade | enum | 否 | 服务自动更新策略,各策略说明如下:
|
ImageVsoa
字段名 | 类型 | 是否必填 | 说明 |
---|---|---|---|
password | string | 否 | VSOA 服务密码 |
port | number | 否 | VSOA 服务映射的宿主机端口,如果不填或填 0 则表示动态获取 |
healthPath | string | 否 | 健康检查路径 |
healthTimeout | number | 否 | 健康检查超时时间,单位为 ms |
healthRetries | number | 否 | 健康检查重复次数 |
healthStartPeriod | number | 否 | 健康检查延时启动时间,单位为 ms |
healthInterval | number | 否 | 健康检查间隔时间,单位为 ms |
Node
字段名 | 类型 | 是否必填 | 说明 |
---|---|---|---|
names | string[ ] | 是 | 节点名称列表 |
响应参数
响应体 data 字段参数说明请参见 CreateProvisionResponses。
CreateProvisionResponses
字段名 | 类型 | 说明 |
---|---|---|
id | string | 服务 ID |
containers | string[ ] | 服务下每个容器实例的名称 |
请求示例
curl --location --request POST 'http://localhost:3001/api/v1/service' \
--header 'Content-Type: application/json' \
--data-raw '{
"name": "Test-node11_12-factor5-dynamic",
"image": {
"ref": "image@2.0.0#sylixos",
"action": "run",
"pullPolicy": "IfNotPresent",
"autoUpgrade": "Never",
"config": {
"platform": {},
"process": {
"args": [],
"env": [
"PATH=/usr/bin:/bin:/usr/pkg/sbin:/sbin:/usr/local/bin",
"LD_LIBRARY_PATH=/usr/lib:/lib:/usr/local/lib"
]
},
"root": {},
"hostname": "sylixos_ecs",
"mounts": [
{
"destination": "/etc/lic",
"source": "/etc/lic",
"options": [
"ro"
]
}
],
"sylixos": {
"devices": [
{
"path": "/dev/fb0",
"access": "rw"
},
{
"path": "/dev/input/xmse",
"access": "rw"
},
{
"path": "/dev/input/xkbd",
"access": "rw"
},
{
"path": "/dev/net/vnd",
"access": "rw"
}
],
"resources": {
"cpu": {
"highestPrio": 160,
"lowestPrio": 250,
"defaultPrio": 200
},
"memory": {
"kheapLimit": 2097152,
"memoryLimitMB": 512
},
"disk": {
"limitMB": 2048
},
"kernelObject": {
"eventLimit": 32768,
"eventSetLimit": 500,
"msgQueueLimit": 8192,
"partitionLimit": 6000,
"regionLimit": 50,
"threadLimit": 4096,
"threadPoolLimit": 100,
"timerLimit": 64
}
},
"network": {
"ftpdEnable": true,
"telnetdEnable": true
}
}
},
"vsoa": {
"port": 0,
"password": "123445",
"healthPath": "/health",
"healthTimeout": 3000,
"healthRetries": 3,
"healthStartPeriod": 5000,
"healthInterval": 5000,
"livenessProbe": false
}
},
"node": {
"names": [
"192.168.64.112"
]
},
"policy": "dynamic",
"factor": 5
}'
响应示例
{
"status": 200,
"message": "success",
"fieldErrors": null,
"data": {
"id": "06c6d07c10021705042799949b5a923fe",
"containers": [
"instance_8ebPz2MiCRuNseDV",
"instance__EcxMMJGAtgfWnm7",
"instance_0Inp4lkLfyxaUanl",
"instance_G1QLCPgnrs9HX2GS",
"instance_HkRvp6V5kzW5QAr_"
]
}
}
错误码
具体请参见 错误码说明。