应用模板
容器应用模板用于定义用户的边缘应用,用户需要指定容器应用的容器镜像、配置信息、磁盘挂载信息以及资源占用信息。
应用需要基于镜像创建,用户首先需要先制作镜像并上传至镜像仓库。
创建应用模板
- 登录IEF管理控制台,在“总览”页面切换实例为铂金版。
- 选择左侧导航栏“边缘应用 > 应用模板”,单击页面右上角“创建应用模板”。
- 填写基本信息。
- 名称(必填):应用模板名称。
- 版本(必填):版本号。
- 别名:应用模板名称以外的一种名称。
- 架构:选择应用支持的架构。
- 描述:模板的描述信息。
- 标签:标签可用于对应用模板进行标记,方便分类管理。此处的标签只用于标识应用模板,可以在搜索时使用标签过滤应用模板。
- 单击“下一步”,添加容器。
- 选择需要部署的镜像,单击“使用镜像”。
- 我的镜像:展示了您在容器镜像服务中创建的所有镜像。
- 他人共享:展示了其他用户共享的镜像。
- 单击“下一步”,配置容器规格。
图1 镜像信息
- 镜像版本:请选择需要部署的镜像版本。
- 容器规格:据需要选择容器CPU、内存、昇腾AI加速卡和GPU的配额。
- 昇腾AI加速卡
容器应用选择的AI加速卡配置与实际部署的边缘节点配置的AI加速卡必须一致,否则会创建应用失败,详见注册边缘节点。
虚拟化切分后的NPU类型,一个容器只能挂载一个虚拟化NPU,只有当该容器退出后,该虚拟化NPU才能分配给其他容器使用。
昇腾AI加速卡支持的NPU类型,如下表。
表1 NPU类型说明 类型
描述
昇腾310
昇腾310芯片
昇腾310B
昇腾310B芯片
- 选择需要部署的镜像,单击“使用镜像”。
- 单击“下一步”,配置应用信息。
- 启动命令
容器镜像拥有存储镜像信息的相关元数据,如果不设置生命周期命令和参数,容器运行时会运行镜像制作时提供的默认命令和参数,Dockerfile中这两个字段为“Entrypoint”和“CMD”。
如果在创建容器应用时填写了容器的运行命令和参数,将会覆盖镜像构建时的默认命令"Entrypoint"、"CMD",规则如下:
表2 容器如何执行命令和参数 镜像Entrypoint
镜像CMD
容器运行命令
容器运行参数
最终执行
[touch]
[/root/test]
未设置
未设置
[touch /root/test]
[touch]
[/root/test]
[mkdir]
未设置
[mkdir]
[touch]
[/root/test]
未设置
[/opt/test]
[touch /opt/test]
[touch]
[/root/test]
[mkdir]
[/opt/test]
[mkdir /opt/test]
图2 启动命令
- 运行命令
输入可执行的命令,例如/run/start。
若可执行命令有多个,多个命令之间用空格进行分隔。若命令本身带空格,则需要加引号("")。
多命令时,运行命令建议用/bin/sh或其他的shell,其他全部命令作为参数来传入。
- 运行参数
输入控制容器运行命令的参数,例如--port=8080。
若参数有多个,多个参数以换行分隔。
- 运行命令
- 环境变量
容器运行环境中设定的变量。可以在部署应用时修改。
单击“添加环境变量”,输入变量名称,变量值支持手动添加、密钥导入、配置项导入和变量引用方式。
- 手动添加支持自定义变量名称和变量值。
- 使用密钥导入,环境变量名称可自定义输入,环境变量值支持引用密钥的属性值,密钥创建方法请参见密钥。
- 使用配置项导入,环境变量名称可自定义输入,环境变量值支持引用配置项的属性值,配置项创建方法请参见配置项。
- 变量引用支持引用“hostIP”,即边缘节点的IP地址。
IEF不会对用户输入的环境变量进行加密。如果用户配置的环境变量涉及敏感信息,用户需要自行加密后再填入,并在应用中自己完成解密过程。
IEF也不提供任何加解密工具,如果您需要设置加密密文,可以使用其他平台的加解密工具。
- 卷
卷是指容器运行过程中使用的存储卷,当前支持如下四种类型。
- hostPath:将主机某个目录挂载到容器中。hostPath是一种持久化存储,应用删除后hostPath里面的内容依然存在于边缘节点本地硬盘目录中,如果后续重新创建应用,挂载后依然可以读取到之前写入的内容。
您可以将应用日志目录挂载到主机的“/var/IEF/app/log/{appName}”目录,“{appName}”是应用名,边缘节点会将“/var/IEF/app/log/{appName}”目录下后缀为log和trace的文件上传到AOM。
图3 日志卷挂载
- emptyDir:一种简单的空目录,主要用于临时存储,支持在硬盘或内存中创建。emptyDir挂载后就是一个空目录,应用程序可以在里面读写文件,emptyDir的生命周期与应用相同,应用删除后emptyDir的数据也同时删除掉。
- configMap:存储应用所需配置信息的资源类型,创建方法请参见配置项。
- secret:密钥是一种用于存储应用所需的认证信息、证书、密钥等敏感信息的资源类型,创建方法请参见密钥。
- 请不要挂载在系统目录下,如“/”、“/var/run”等,会导致容器异常。建议挂载在空目录下,若目录不为空,请确保目录下无影响容器启动的文件,否则文件会被替换,导致容器启动异常,应用创建失败。
- 挂载高危目录的情况下,建议使用低权限账号启动,否则可能会造成宿主机高危文件被破坏。
- hostPath:将主机某个目录挂载到容器中。hostPath是一种持久化存储,应用删除后hostPath里面的内容依然存在于边缘节点本地硬盘目录中,如果后续重新创建应用,挂载后依然可以读取到之前写入的内容。
- 选项
- 特权选项
可以通过开启“特权选项”,使容器拥有root权限,可以访问主机上的设备(如GPU、FPGA)。
- 指定运行用户
IEF默认不改变容器运行的用户,以构建镜像时定义的运行用户来运行。
打开开关后,下方出现运行用户的输入框,可输入范围为0~65534的整数。指定了运行用户后,应用将以该运行用户来运行。如果镜像的操作系统中没有该用户ID,将导致容器应用启动失败。
- 重启策略
总是重启:当应用容器退出时,无论是正常退出还是异常退出,系统都会重新拉起应用容器。
失败时重启:当应用容器异常退出时,系统会重新拉起应用容器,正常退出时,则不再拉起应用容器。
不重启:当应用容器退出时,无论是正常退出还是异常退出,系统都不再重新拉起应用容器。
- 容器网络
主机网络:使用宿主机(边缘节点)的网络,即容器与主机间不做网络隔离,使用同一个IP。
端口映射:容器网络虚拟化隔离,容器拥有单独的虚拟网络,容器与外部通信需要与主机做端口映射。配置端口映射后,流向主机端口的流量会映射到对应的容器端口。例如容器端口80与主机端口8080映射,那主机8080端口的流量会流向容器的80端口。
- 特权选项
- 健康检查
- 应用存活探针:应用存活探针用于探测容器是否正常工作,不正常则重启实例。当前支持发送HTTP请求和执行命令检查,通过检测容器响应是否正常。
- 应用业务探针:应用业务探针用于探测业务是否就绪,如果业务还未就绪,就不会将流量转发到当前实例。
详细的配置说明请参见健康检查配置说明。
- 启动命令
- 配置完成后,单击“创建”。
创建新的应用模板版本
边缘应用模板支持创建多个应用版本,方便您管理边缘应用。
- 登录IEF管理控制台,在“总览”页面切换实例为铂金版。
- 选择左侧导航栏的“边缘应用 > 应用模板”。
- 单击需要增加新版本的应用模板,进入“应用模板详情”页面。
- 单击页面左下角的“创建应用版本”。
图4 创建应用版本
- 填入应用版本,单击“下一步”,填写模板详细信息,具体请参照创建应用模板,完成新版本的应用模板创建。
共享模板
边缘应用模板可以共享给同区域的其他服务实例使用。
v2 及以上铂金版实例版本和旧版本之间无法共享应用模板。
- 登录IEF管理控制台,在“总览”页面切换实例为铂金版。
- 选择左侧导航栏的“边缘应用 > 应用模板”。
- 单击需要共享的应用模板,进入“应用模板详情”页面。
- 选择“共享”页签,单击“共享应用模板”,勾选服务实例。
- 单击“确定”。