更新时间:2023-04-24 GMT+08:00
分享

批量部署

功能介绍

通过指定设备id列表或者设备标签将应用部署下发到多个设备上。

URI

PUT /v3/{project_id}/ai-mgr/deployments/{deployment_id}/nodes

表1 路径参数

参数

是否必选

参数类型

描述

deployment_id

String

部署ID

project_id

String

项目ID,获取方法请参见获取项目ID

表2 Query参数

参数

是否必选

参数类型

描述

provider

String

平台提供者,分别为hilens及ief。当为hilens时,请求部署在hilens平台的相关数据。

请求参数

表3 请求Header参数

参数

是否必选

参数类型

描述

X-Auth-Token

String

用户Token。获取方法请参见获取Token

表4 请求Body参数

参数

是否必选

参数类型

描述

node_ids

Array of strings

应用部署到指定节点

deployment_id

String

应用部署ID

node_tags

Array of DeploymentTag objects

添加节点的标签

node_num

Integer

添加的节点数量

表5 DeploymentTag

参数

是否必选

参数类型

描述

key

String

部署标签的key值,长度取值范围为1~36,由英文字母,数字,中划线和下划线组成,长度1到36个字符

value

String

部署标签的value值,长度取值范围为1~43,由英文字母,数字,下划线,点号和中划线组成,长度0到43个字符

响应参数

状态码: 200

表6 响应Body参数

参数

参数类型

描述

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

每个节点的部署结果

表7 template

参数

参数类型

描述

configs

PodConfig object

应用实例配置

apps

Array of AppDef objects

部署应用列表

表8 PodConfig

参数

参数类型

描述

host_network

Boolean

应用实例是否启用主机网络,不启用则使用端口映射,默认值false

host_pid

Boolean

应用实例是否与主机共PID命名空间,默认值false

migration

Boolean

应用实例故障是否迁移,指定节点组部署时必选,默认值false

restart_policy

String

应用实例重启策略,可选值Always、OnFailure、Never

toleration_seconds

Integer

应用实例故障容忍时间,容忍时间到达后迁移应用实例,只在指定节点组部署时生效

表9 AppDef

参数

参数类型

描述

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

表10 Env

参数

参数类型

描述

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必须三选一使用

表11 ValueFrom

参数

参数类型

描述

configmap

ConfigsMap object

环境变量引用配置项时使用。使用ValueFrom时,secret与configmap必须二选一

secret

DeploymentSecrets object

环境变量引用密钥时使用。使用ValueFrom时,secret与configmap必须二选一

表12 ConfigsMap

参数

参数类型

描述

key

String

配置项的名称,以英文字母或中划线开头,由英文字母、数字、点号、中划线和下划线组成,长度1到63个字符。

name

String

配置项的属性名,以英文小写字母开头,由中文字符,英文字母,数字,下划线和中划线组成,不能以中划线结尾,长度4-64位。

表13 DeploymentSecrets

参数

参数类型

描述

name

String

密钥的名称,以英文小写字母开头,由中文字符,英文字母,数字,下划线和中划线组成,不能以中划线结尾,长度4-64位

key

String

密钥的属性名,以英文字母和中划线开头,由英文字母、数字、点号、中划线和下划线组成,长度1-63位

表14 HostContainerPortMapping

参数

参数类型

描述

container_port

Long

容器端口,1到65535之间的整数

host_ip

String

对应主机网卡地址,形如192.168.0.1

host_port

Long

主机端口,1到65535之间的整数,与主机端口范围二选一

host_port_range

HostPortRange object

主机端口范围,在范围内为应用实例自动分配主机端口;与主机端口参数二选一

表15 HostPortRange

参数

参数类型

描述

max_port

Long

主机端口上限值,1到65535之间的整数;max_port需大于min_port

min_port

Long

主机端口下限制,1到65535之间的整数

表16 Probe

参数

参数类型

描述

exec

Exec object

执行命令检查,与http_get二选一

http_get

HttpGet object

执行http探测

initial_delay_seconds

Long

表示从工作负载启动后从多久开始探测,大于0且不大于3600的整数,默认为10

timeout_seconds

Long

表示探测超时时间,大于0且不大于3600的整数,默认为1

表17 Exec

参数

参数类型

描述

command

String

探针执行命令,最大长度10240个字符。不允许^#~^$|%&*<>()'"[]{}这些特殊字符

表18 HttpGet

参数

参数类型

描述

host

String

请求的主机地址,默认为容器IP

path

String

必须要以/开头,构造结果为:协议类型://主机地址:端口路径

port

Integer

探测的http端口,1到65535之间的整数

scheme

String

协议类型,HTTP或HTTPS,默认HTTP

表19 Volume

参数

参数类型

描述

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

表20 ResQuest

参数

参数类型

描述

limits

Res object

允许容器使用的最大资源

requests

Res object

容器需要使用的最小资源

表21 Res

参数

参数类型

描述

cpu

String

cpu数量,字符串所对应的数值在0.01到1000之间

gpu

String

gpu数量,值在0到1000

memory

String

内存数量,如果是资源限制,其值范围在4到1024000之间,否则在0.01到1024000之间

npu

String

npu数量,字符串所对应的数值在0.到1000之间

表22 NodeResult

参数

参数类型

描述

node_id

String

部署的节点ID

error_message

String

部署到该节点失败时,返回的错误信息

error_code

String

部署到该节点失败时,返回的错误码

状态码: 401

表23 响应Body参数

参数

参数类型

描述

request_id

String

请求ID

error_code

String

错误码

error_message

String

错误信息

状态码: 403

表24 响应Body参数

参数

参数类型

描述

request_id

String

请求ID

error_code

String

错误码

error_message

String

错误信息

状态码: 404

表25 响应Body参数

参数

参数类型

描述

request_id

String

请求ID

error_code

String

错误码

error_message

String

错误信息

状态码: 500

表26 响应Body参数

参数

参数类型

描述

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

服务器内部错误

错误码

请参见错误码

相关文档