容器模式应用
名词定义
- 容器应用:由容器服务配置和数据卷配置组成的应用。
- 函数应用:由函数服务配置和数据卷配置组成的应用。
功能简介
应用是用于定义在一个或一组边缘节点上的部署任务,会将服务配置及存储卷配置下发到匹配的目标设备上,并进行部署。应用根据边缘节点的标签来匹配目标设备,每一次应用信息的更改都会自动地下发到目标设备,并进行服务重部署及配置的更新。
应用分为容器应用和函数应用。一个应用对应端上一个pod。
使用流程
创建容器模式的应用流程有两种,分别为创建容器应用流程和创建函数应用流程。
应用列表
应用列表分页展示出当前实例下所有的应用信息。
在实例详情页的左侧菜单中点击应用部署,您将看到当前创建的所有应用列表。
右上角搜索框支持对应用名称进行模糊查询。
创建容器应用
基本信息
进入应用部署页面,选择容器模式,点击创建应用进入应用创建页面。填写应用基本信息:
- 【名称】表示应用的名称,不可为空,不可重复
- 【函数应用】选择否
- 【描述】表示应用的文字性描述
- 【标签】表示用来标识应用的信息
点击添加标签进入标签设置界面,填写应用标签。
服务配置
点击下一步进入服务配置界面。可进行如下相关配置:
-
【卷配置】在此创建pod需要的卷。支持hostPath、配置项、密文、证书和emptydir五种卷的挂载:
- 【容器】支持单应用多容器,容器分为标准容器和初始化容器。部署时可先按顺序运行初始化容器,再运行标准容器。如果有多个初始化容器,支持按顺序启动。标准容器不支持按顺序启动。
- 【镜像仓库凭证】若应用中的镜像来自私有镜像仓库,可配置私有镜像仓库凭证
- 【工作负载】支持服务以不同负载类型运行,包括Deployment、DaemonSet、Job
- 【副本数】表示服务启动的pod个数
- 【服务访问量监控】是否监控边缘服务调用统计QPS信息
- 【host网络】表示服务容器是否使用host网络,默认使用桥接网络
点击添加容器,进入容器配置界面:
- 【名称】表示服务的名称,不可为空。同一个应用中的服务名称不可重复,包含相同服务名称的不同应用部署到同一个节点会导致其中一个部署报错
- 【镜像地址】表示服务对应的镜像地址,不可为空。该地址应该填写在边缘节点(设备)上可以通过docker拉取的镜像地址
-
【卷配置】挂载前一个页面创建的容器卷
- 文件清理:后台每隔十分钟做一次检查,当检测到服务关闭或job类型服务执行完毕时,卷配置文件将被自动清理。
- 【端口映射】表示容器内与宿主机的端口映射,支持TCP和UDP两种端口映射。 单应用多容器场景,不允许多个容器使用相同的容器内端口。如果两个容器的容器内端口重复,需要放在不同的应用当中。
- 【环境变量】表示服务容器的环境变量
- 【启动命令】表示启动时服务需要执行的命令,对应kubernetes command,对应Docker Entrypoint
- 【启动参数】表示启动时服务的参数,对应kubernetes args,对应Docker Cmd
- 【资源限制】表示启动服务容器的资源限制,目前支持设置CPU和内存
- 【特权选项】表示是否使用特权模式挂载资源,一般在摄像头,GPU或FPGA等需要较高权限访问的特殊资源时,设置为是
GPU资源限制补充说明:
- 针对应用的GPU资源限制要求应用绑定的节点已经开启了GPU共享,如未开启会导致应用无法部署。相关操作可以参考单机节点或集群节点部分文档。此外,目前限制GPU显存时还需要对GPU算力进行限制。
- 限制GPU显存只能是整数,单位为256MB,对GPU算力限制也是整数,表示使用算力的百分比。
至此服务配置设置完成,点击确定关闭服务配置界面。
目标设备
服务配置设置完成之后,点击下一步进入目标设备匹配界面。
点击匹配标签,弹出标签匹配界面。输入想要匹配的node标签名称及值,点击确定,会自动匹配出符合条件的节点。
点击下一步,选择部署方式。支持立即部署和延时部署。当选择延时部署,到启动时间会自动触发部署任务。
点击创建完成应用的创建,跳转到应用列表界面,就可以看到刚才创建的应用信息了。
容器应用创建步骤到此全部完成。
创建函数应用
基本信息
在应用列表页面,点击创建应用进入应用创建页面。点击添加标签进入标签设置界面,填写应用标签。
填写应用基本信息:
- 【名称】表示应用的名称,不可为空,不可重复
- 【函数应用】是否为函数应用,此处选择 是
- 【描述】表示应用的文字性描述
- 【标签】表示用来标识应用的信息
函数服务
点击下一步进入函数服务配置界面。卷配置与非函数应用配置类似。点击添加标准容器,填写函数服务基本信息:
- 【名称】表示函数服务的名称,不可为空。同一个应用中的服务名称不可重复,包含相同服务名称的不同应用部署到同一个节点会导致其中一个部署报错
- 【函数配置项】表示选择配置管理里预先配置的函数,函数配置在这里创建
- 【运行时】表示需要选择的函数运行时环境,目前运行时环境支持python3,nodejs10和sql
- 【函数列表】表示设置函数配置项里选择的函数的函数调用入口,支持多个函数调用
其中【函数列表】中,函数名称列表内唯一,我们可以通过函数服务名称/函数名称访问到该函数服务;函数入口表示执行函数,对于Python/Node运行时来说,由函数脚本和处理函数名组成,对于Sql运行时来说,只有函数脚本组成,函数脚本内即是用户编写的Sql语句;容器目录表示代码所在路径。
比如,我们在函数配置项中编写如下配置:
其中 index.js 是函数脚本,hander 是处理函数,index.js 处于配置项的根目录下。然后我们在函数列表中引入此函数:
此后我们在端上可以通过 test-node/process 接口调用该函数,其中 test-node 是服务名,process 是函数列表中的函数名称。
对于 SQL 运行时,配置稍有不同,如下所示:
填写高级设置项
- 【卷配置】表示配置函数存储的容器的目录
- 【资源限制】表示启动服务容器的资源限制,目前支持设置CPU和内存
至此函数服务设置完成,点击确定关闭服务配置界面。
目标设备
点击下一步进入目标设备匹配界面。
点击匹配标签,弹出标签匹配界面。
输入想要匹配的node标签名称及值,点击确定,会自动匹配出符合条件的节点。
点击创建完成应用的创建,跳转到应用列表界面,就可以看到刚才创建的应用信息了。
函数应用创建步骤到此全部完成。
应用修改
在应用列表页面,点击准备修改应用名或查看,例如function-test,进入应用详情页面。
修改操作参考应用新建功能。
注意:应用修改后最新的应用配置会自动地下发到匹配的边缘节点,并进行更新。
应用删除
在应用列表页面,点击需要删除的应用后面的删除按钮。
应用部署
应用创建后,需要了解应用在边缘节点部署情况。打开应用详情页面。
点击目标节点里的节点名,跳转到节点详情页面。
点击应用部署菜单,可以看到应用的部署状态。
集群场景将应用部署至指定节点
针对集群多机场景,如果希望将应用部署到集群当中的某一个指定节点,则需要借助子节点标签来实现。首先参考容器模式节点当中的子节点标签编辑章节,给集群当中的子节点添加子节点标签。如下图所示:
在云端给子节点添加好标签以后,可以在边缘执行查看节点描述命令,查看节点的Labels:
kubectl describe node [node-name]
在确认这个子节点的标签以后,打开应用,找到目标节点,点击匹配标签,单机节点/集群标签是云端给边缘节点打的标签,我们这里就使用baetyl-node-name定位到一个边缘节点,然后在子节点标签处,添加目标标签demo=02,如下图所示:
执行上述操作以后,应用将部署至边缘集群的指定子节点当中。