创建应用部署
功能介绍
创建应用部署。
URI
POST /v3/{project_id}/ai-mgr/deployments
参数 |
是否必选 |
参数类型 |
描述 |
---|---|---|---|
project_id |
是 |
String |
项目ID,获取方法请参见获取项目ID |
参数 |
是否必选 |
参数类型 |
描述 |
---|---|---|---|
provider |
否 |
String |
平台提供者,分别为hilens及ief。当为hilens时,请求部署在hilens平台的相关数据 |
请求参数
参数 |
是否必选 |
参数类型 |
描述 |
---|---|---|---|
X-Auth-Token |
是 |
String |
用户Token。获取方法请参见获取Token |
X-Expired-Time |
否 |
Integer |
离线场景超期时间,单位分钟,范围在1-86400 |
参数 |
是否必选 |
参数类型 |
描述 |
---|---|---|---|
cluster_id |
否 |
String |
应用部署到指定集群,与node_ids二选一 |
deployment |
是 |
DeploymentRequest object |
部署参数配置 |
description |
否 |
String |
应用部署描述,最大长度255,不允许^ ~ # $ % & * < > ( ) [ ] { } ' " \ |
license_quota |
否 |
Integer |
本次部署所使用的license额度,配合订单中的计费量纲的实际计费类型,如:视频路数/实例数/QPS。 |
name |
是 |
String |
应用部署名称,只允许英文小写字母、数字、中划线,最大长度32, 英文小写字母或数字开头和结尾 |
node_ids |
否 |
Array of strings |
应用部署到指定节点,与cluster_id二选一 |
source |
是 |
String |
应用部署来源: HiLens市场(hlm) or aigallery(aig) or 自定义(userdefined) |
svc_order_id |
否 |
String |
购买应用管理服务的订单ID。 |
tags |
否 |
Array of DeploymentTag objects |
部署标签 |
node_tags |
否 |
Array of TagRequest objects |
部署节点标签列表,当通过节点标签进行部署的时候,需要下发该字段。 |
node_num |
否 |
Integer |
标签部署的设备数量 |
参数 |
是否必选 |
参数类型 |
描述 |
---|---|---|---|
replicas |
是 |
Integer |
应用部署副本数,小于100。 |
template |
是 |
PodRequest object |
应用部署模板 |
参数 |
是否必选 |
参数类型 |
描述 |
---|---|---|---|
affinity |
否 |
PodAffinity object |
应用部署亲和性规则 |
apps |
是 |
Array of AppDef objects |
应用部署业务容器或RPM程序包 |
configs |
是 |
PodConfig object |
应用实例配置 |
init_containers |
否 |
Array of AppDef objects |
应用部署初始化业务容器,容器部署有效。预留,暂不支持 |
参数 |
是否必选 |
参数类型 |
描述 |
---|---|---|---|
node_affinity |
否 |
Array of MatchExpression objects |
节点亲和规则 |
pod_affinity |
否 |
Array of MatchExpression objects |
Pod亲和规则 |
参数 |
是否必选 |
参数类型 |
描述 |
---|---|---|---|
key |
否 |
String |
规则的标签 |
operator |
否 |
String |
操作符,取值如下: In:标签值需要在values的列表中 NotIn:标签的值不在某个列表中 Exists:某个标签存在 DoesNotExist:某个标签不存在 Gt:标签的值大于某个值(字符串比较) Lt:标签的值小于某个值(字符串比较) |
values |
否 |
Array of strings |
一组标签值。 如果运算符为In或NotIn,则值数组必须非空。 如果运算符为Exists 或DoesNotExist,则值数组必须为空。 如果运算符是Gt或Lt,则值数组必须具有单个元素,该元素将被解释为整数 |
参数 |
是否必选 |
参数类型 |
描述 |
---|---|---|---|
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之间 |
响应参数
状态码: 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 |
错误信息 |
请求示例
创建部署,来源于自定义技能
https://{endpoint}/v3/{project_id}/ai-mgr/deployments { "name" : "create-deployment-from-market", "description" : "", "tags" : [ { "key" : "key", "value" : "value" } ], "source" : "userdefined", "deployment" : { "replicas" : "1", "template" : { "configs" : { "restart_policy" : "Always", "host_network" : false }, "apps" : [ { "skill_project_id" : "0c0e1e0f42e54119bf50d8b98aa3d71c", "app_url" : "https://test-sdk.obs.cn-north-x.myhuaweicloud.com/xxxx", "version" : "0.0.2", "name" : "skill-test-reject", "envs" : [ { "name" : "xxx", "value" : "xxx" } ], "privileged" : "false", "volumes" : [ { "type" : "configMap", "source" : "config001", "read_only" : true, "name" : "vol001", "key" : "key", "destination" : "xxx/xxxx" } ], "msgs" : [ { "name" : "xxx", "value" : "xxx" } ], "resources" : { "limits" : { "cpu" : "0.25", "memory" : "128" }, "requests" : { } } } ] } }, "node_ids" : [ "hilens-8c79e1e7ff39437680a67783feb0e815" ], "license_quota" : 1 }
响应示例
状态码: 200
请求成功,当批量部署节点个数小于20个的时候,返回结果result字段非空,当大于20个的时候,result字段为空,此时可通过回调机制获取部署结果。
{ "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 |
请求成功,当批量部署节点个数小于20个的时候,返回结果result字段非空,当大于20个的时候,result字段为空,此时可通过回调机制获取部署结果。 |
401 |
认证不通过 |
403 |
拒绝执行请求 |
404 |
请求的资源不存在 |
500 |
服务器内部错误 |
错误码
请参见错误码。