批量部署
功能介绍
通过指定设备id列表或者设备标签将应用部署下发到多个设备上。
URI
PUT /v3/{project_id}/ai-mgr/deployments/{deployment_id}/nodes
参数 |
是否必选 |
参数类型 |
描述 |
---|---|---|---|
deployment_id |
是 |
String |
部署ID |
project_id |
是 |
String |
项目ID,获取方法请参见获取项目ID |
参数 |
是否必选 |
参数类型 |
描述 |
---|---|---|---|
provider |
否 |
String |
平台提供者,分别为hilens及ief。当为hilens时,请求部署在hilens平台的相关数据。 |
请求参数
参数 |
是否必选 |
参数类型 |
描述 |
---|---|---|---|
X-Auth-Token |
是 |
String |
用户Token。获取方法请参见获取Token |
参数 |
是否必选 |
参数类型 |
描述 |
---|---|---|---|
node_ids |
否 |
Array of strings |
应用部署到指定节点 |
deployment_id |
是 |
String |
应用部署ID |
node_tags |
否 |
Array of DeploymentTag objects |
添加节点的标签 |
node_num |
是 |
Integer |
添加的节点数量 |
响应参数
状态码: 200
参数 |
参数类型 |
描述 |
---|---|---|
template |
template object |
部署模板信息 |
reason |
String |
部署成功失败的理由 |
ready_replicas |
Integer |
已经就绪的实例节点数 |
replicas |
Integer |
实例节点节点数 |
description |
String |
应用部署描述,最大长度255,不允许^ ~ # $ % & * < > ( ) [ ] { } ' " \ |
created_at |
String |
创建时间 |
source |
String |
应用部署来源: HiLens市场(hlm) or aigallery(aig) or 自定义(userdefined) |
api_version |
String |
应用部署版本 |
node_ids |
Array of strings |
应用部署的指定节点,与clouster_id二选一 |
cluster_id |
String |
应用部署的集群ID,与node_id二选一 |
updated_at |
String |
更新时间 |
project_id |
String |
项目ID |
name |
String |
部署名称 |
id |
String |
部署ID |
state |
String |
RUNNING:运行, FREEZE:冻结, UNFREEZE: 解冻, CREATING:创建中, CREATE_FAILED:创建失败, STARTING:启动中, START_FAILED:启动失败, STOPPING:停止中 STOP_FAILED:停止失败 DELETING:删除中 DELETE_FIALED:删除失败 HIBERNATED:休眠 |
node_num |
Integer |
部署的节点数,最小为1,集群部署也为1 |
result |
Array of NodeResult objects |
每个节点的部署结果 |
参数 |
参数类型 |
描述 |
---|---|---|
host_network |
Boolean |
应用实例是否启用主机网络,不启用则使用端口映射,默认值false |
host_pid |
Boolean |
应用实例是否与主机共PID命名空间,默认值false |
migration |
Boolean |
应用实例故障是否迁移,指定节点组部署时必选,默认值false |
restart_policy |
String |
应用实例重启策略,可选值Always、OnFailure、Never |
toleration_seconds |
Integer |
应用实例故障容忍时间,容忍时间到达后迁移应用实例,只在指定节点组部署时生效 |
参数 |
参数类型 |
描述 |
---|---|---|
app_order_id |
String |
app应用的订单ID,技能来源是市场时,如果不填,则自动选择默认订单。 |
app_url |
String |
app应用的地址,可以是镜像地址或者OBS地址 |
channel_limit |
Integer |
路数限制,添加作业的时候,摄像头和VCN的最大路数不超过该值,范围是0到1000 |
channel_upper_limit |
Integer |
用户可以指定的路数限制上限,范围是0到1000 |
args |
Array of strings |
容器启动参数,字符总长度最大为65536,不允许^#~^$|%&*<>()'"[]{}]等特殊字符 |
command |
Array of strings |
容器启动命令,字符总长度最大为65536。 command支持使用数组定义多条命令,但在IEF控制台界面只会显示第一条命令。不允许^#~^$|%&*<>()'"[]{}]等特殊字符 |
envs |
Array of Env objects |
环境变量 |
is_modelbox |
Boolean |
是否是modelbox镜像 |
liveness_probe |
Probe object |
探针配置 |
msgs |
Array of Env objects |
消息变量 |
name |
String |
应用名字,只允许英文小写字母、数字、中划线,最大长度32, 英文小写字母或数字开头和结尾。该名称同时对应技能名称,当不传订单id的时候,默认通过该名称和版本号version字段,选择指定技能版本,进行部署,并选择可用的订单(默认订单优先)扣除份额。 |
npu_type |
String |
npu类型,支持D310类型和D910类型。D310表示D310类型。 D910表示D910类型。不填表示为D310类型 |
ports |
Array of HostContainerPortMapping objects |
容器端口映射值 |
privileged |
Boolean |
是否启用特权容器,默认值false |
readiness_probe |
Probe object |
探针配置 |
resources |
ResQuest object |
创建应用时使用的资源 |
version |
String |
版本号,长度不操作128,支持大小写数字,下划线,点,中划线 |
volumes |
Array of Volume objects |
卷配置 |
start_resources |
ResQuest object |
创建部署所需要的起始资源 |
channel_resources |
ResQuest object |
每增加一路所需要资源 |
skill_project_id |
String |
技能管理ID,技能来源source是skill的时候,需要传入该ID |
参数 |
参数类型 |
描述 |
---|---|---|
name |
String |
环境变量的key,由大小写字母或下划线开头,由数字、大小写字母、下划线组成,最大长度2048个字符,不允许重复 |
value |
String |
环境变量的value,最大长度20480个字符。value、value_from和field_path必须三选一使用 |
value_from |
ValueFrom object |
环境变量可使用配置项和密钥导入。value、value_from和field_path必须三选一使用 |
field_path |
String |
该参数目前只支持赋值"status.hostIP",即引用边缘节点的IP地址作为环境变量。value、value_from和field_path必须三选一使用 |
参数 |
参数类型 |
描述 |
---|---|---|
configmap |
ConfigsMap object |
环境变量引用配置项时使用。使用ValueFrom时,secret与configmap必须二选一 |
secret |
DeploymentSecrets object |
环境变量引用密钥时使用。使用ValueFrom时,secret与configmap必须二选一 |
参数 |
参数类型 |
描述 |
---|---|---|
key |
String |
配置项的名称,以英文字母或中划线开头,由英文字母、数字、点号、中划线和下划线组成,长度1到63个字符。 |
name |
String |
配置项的属性名,以英文小写字母开头,由中文字符,英文字母,数字,下划线和中划线组成,不能以中划线结尾,长度4-64位。 |
参数 |
参数类型 |
描述 |
---|---|---|
name |
String |
密钥的名称,以英文小写字母开头,由中文字符,英文字母,数字,下划线和中划线组成,不能以中划线结尾,长度4-64位 |
key |
String |
密钥的属性名,以英文字母和中划线开头,由英文字母、数字、点号、中划线和下划线组成,长度1-63位 |
参数 |
参数类型 |
描述 |
---|---|---|
container_port |
Long |
容器端口,1到65535之间的整数 |
host_ip |
String |
对应主机网卡地址,形如192.168.0.1 |
host_port |
Long |
主机端口,1到65535之间的整数,与主机端口范围二选一 |
host_port_range |
HostPortRange object |
主机端口范围,在范围内为应用实例自动分配主机端口;与主机端口参数二选一 |
参数 |
参数类型 |
描述 |
---|---|---|
max_port |
Long |
主机端口上限值,1到65535之间的整数;max_port需大于min_port |
min_port |
Long |
主机端口下限制,1到65535之间的整数 |
参数 |
参数类型 |
描述 |
---|---|---|
exec |
Exec object |
执行命令检查,与http_get二选一 |
http_get |
HttpGet object |
执行http探测 |
initial_delay_seconds |
Long |
表示从工作负载启动后从多久开始探测,大于0且不大于3600的整数,默认为10 |
timeout_seconds |
Long |
表示探测超时时间,大于0且不大于3600的整数,默认为1 |
参数 |
参数类型 |
描述 |
---|---|---|
host |
String |
请求的主机地址,默认为容器IP |
path |
String |
必须要以/开头,构造结果为:协议类型://主机地址:端口路径 |
port |
Integer |
探测的http端口,1到65535之间的整数 |
scheme |
String |
协议类型,HTTP或HTTPS,默认HTTP |
参数 |
参数类型 |
描述 |
---|---|---|
destination |
String |
卷挂载路径,必须是合法的路径 |
key |
String |
卷的类型,支持configMap,secret,emptyDir,hostPath |
name |
String |
卷名称,小写字母或数字,最长63个字符 |
read_only |
Boolean |
读写权限,configMap和secret类型只支持读权限 |
source |
String |
卷来源,type为hostPath时输入路径,要求以/开头,后面可包含中划线,反斜杠,下划线,点号,字母,数字; secret时输入secret名称,configMap时输入configMap名称,emptyDir时输入disk或memory |
type |
String |
卷的类型,支持configMap,secret,emptyDir,hostPath |
参数 |
参数类型 |
描述 |
---|---|---|
cpu |
String |
cpu数量,字符串所对应的数值在0.01到1000之间 |
gpu |
String |
gpu数量,值在0到1000 |
memory |
String |
内存数量,如果是资源限制,其值范围在4到1024000之间,否则在0.01到1024000之间 |
npu |
String |
npu数量,字符串所对应的数值在0.到1000之间 |
参数 |
参数类型 |
描述 |
---|---|---|
node_id |
String |
部署的节点ID |
error_message |
String |
部署到该节点失败时,返回的错误信息 |
error_code |
String |
部署到该节点失败时,返回的错误码 |
状态码: 401
参数 |
参数类型 |
描述 |
---|---|---|
request_id |
String |
请求ID |
error_code |
String |
错误码 |
error_message |
String |
错误信息 |
状态码: 403
参数 |
参数类型 |
描述 |
---|---|---|
request_id |
String |
请求ID |
error_code |
String |
错误码 |
error_message |
String |
错误信息 |
状态码: 404
参数 |
参数类型 |
描述 |
---|---|---|
request_id |
String |
请求ID |
error_code |
String |
错误码 |
error_message |
String |
错误信息 |
状态码: 500
参数 |
参数类型 |
描述 |
---|---|---|
request_id |
String |
请求ID |
error_code |
String |
错误码 |
error_message |
String |
错误信息 |
请求示例
-
发送往部署添加节点请求,把已有的部署下发到指定的节点。
PUT https://{endpoint}/v3/{project_id}/ai-mgr/deployments/{deployment_id}/nodes { "node_num" : 2, "node_ids" : [ "hilens-d087f32be2c641278bfc4c4d071b86ef", "hilens-d087f32be2c641278bfc4c4d071b86eg" ], "deployment_id" : "hilens-d087f32be2c641278bfc4c4d071b86ef" }
-
往指定部署添加含有指定标签的设备
PUT https://{endpoint}/v3/{project_id}/ai-mgr/deployments/{deployment_id}/nodes Request Header: Content-Type: application/jsonX-Auth-Token: MIINRwYJKoZIhvcNAQcCoIINODCCDTQCAQExDTALBglghkgBZQMEAgEwgguVBgkqhkiG...Request Body:{ "node_num": 1, "node_tags": [ { "key": "tag1", "value": "val1" } ], "deployment_id": "hilens-d087f32be2c641278bfc4c4d071b86ef"}
响应示例
状态码: 200
请求成功
{ "template" : { "configs" : { "migration" : false, "host_network" : false, "host_pid" : false, "restart_policy" : "Always", "toleration_seconds" : 0 }, "apps" : [ { "name" : "example1-skill-name", "args" : [ ], "command" : [ "--log_dir=/train --learning_rate=0.01 --batch_size=150" ], "resources" : { "limits" : { "cpu" : "0.25", "memory" : "128" }, "requests" : { } }, "envs" : [ { "name" : "IVA_SVC_CONFIG", "value" : "{\"algorithm\":{\"multiTask\":\"no\",\"algType\":\"hilens\"},\"cloud\":{\"disEndpoint\":\"https://dis.cn-north-7.myhuaweicloud.com\",\"region\":\"cn-north-7\"},\"svcInstanceId\":\"modelbox-instance-xxxx\"}" } ], "msgs" : [ ], "ports" : [ { "container_port" : 10, "host_port" : 23, "host_ip" : "10.10.10.10" } ], "privileged" : false, "volumes" : [ { "name" : "tmp", "type" : "emptyDir", "source" : "memory", "destination" : "/tmp", "read_only" : false }, { "name" : "run", "type" : "emptyDir", "source" : "memory", "destination" : "/run", "read_only" : false }, { "name" : "cgroup", "type" : "hostPath", "source" : "/sys/fs/cgroup", "destination" : "/sys/fs/cgroup", "read_only" : true } ], "app_url" : "xxx", "is_modelbox" : true } ] }, "reason" : null, "ready_replicas" : 0, "replicas" : 1, "description" : "", "created_at" : "2022-01-25 15:57:07 GMT+08:00", "source" : "userdefined", "api_version" : null, "node_ids" : [ "hilens-e17b497c3a00406f89f605e5c16b40d7" ], "result" : [ { "node_id" : "hilens-e17b497c3a00406f89f605e5c16b40d7" } ], "cluster_id" : "", "updated_at" : "2022-01-25 15:57:07 GMT+08:00", "project_id" : "fff47e1722f94c4e98531bae56821372", "name" : "example1", "id" : "hilens-9eebd2c03a2e48a6a47949fcb4f3f66f", "state" : "CREATING" }
状态码
状态码 |
描述 |
---|---|
200 |
请求成功 |
401 |
认证不通过 |
403 |
拒绝执行请求 |
404 |
请求的资源不存在 |
500 |
服务器内部错误 |
错误码
请参见错误码。