更新时间:2022-05-16 GMT+08:00
分享

批量应用部署

使用场景

在某些场景下,您可能需要对大量的边缘节点部署相同的应用,IEF提供批量应用部署功能。

  • 节点架构必须全部是同一架构的节点,比如全部为x86或arm。
  • 容器镜像的架构必须与节点架构一致,比如节点为x86,那容器镜像的架构也必须是x86。

操作步骤

  1. 登录IEF管理控制台,在“总览”页面切换实例为铂金版。
  2. 选择左侧导航栏的批量管理 > 应用部署,单击页面右上角的“批量应用部署”
  3. 配置应用部署作业基本信息。

    图1 创建批量应用部署作业
    • 名称:创建的应用部署作业名称。
    • 描述:应用部署作业描述。
    • 部署对象:需要部署容器应用的边缘节点。

      单击“选择边缘节点”,勾选需要选择的边缘节点。

      您还可以单击页面右上角的“标签搜索”,输入标签名和标签值,单击“搜索”,筛选出指定标签的边缘节点。然后勾选边缘节点,单击“确定”

      图2 选择标签
    • 重启策略
      • 总是重启:当应用容器退出时,无论是正常退出还是异常退出,系统都会重新拉起应用容器。
      • 失败时重启:当应用容器异常退出时,系统会重新拉起应用容器,正常退出时,则不再拉起应用容器。
      • 不重启:当应用容器退出时,无论是正常退出还是异常退出,系统都不再重新拉起应用容器。
    • Host PID:容器与宿主机共享PID命名空间,启用此选项要求边缘节点软件版本大于等于2.8.0。

  4. 单击“下一步”,配置容器信息。

    图3 容器信息
    • 名称前缀:应用部署的名称前缀。IEF会根据前缀生成完整的名称。
    • 实例数量:应用部署的实例数量。
    • 配置方式
      • 自定义配置:即从零开始配置容器应用,具体请参见5
      • 应用模板配置:选择一个已经定义好的应用模板,可以在模板的基础上进行修改,使用应用模板能够帮助您省去重复的工作量。模板的定义与5需要的配置相同,创建模板的方法请参见应用模板

  5. 配置容器。

    选择需要部署的镜像,单击“使用镜像”
    • 我的镜像:展示了您在容器镜像服务中创建的所有镜像。
    • 他人共享:展示了其他用户共享的镜像,共享镜像是在SWR中操作的,具体请参见共享私有镜像

    选择镜像后,您可以配置容器的规格。

    • 镜像版本:请选择需要部署的镜像版本。

      在生产环境中部署容器时,应避免使用latest版本。因为这会导致难以确定正在运行的镜像版本,并且难以正确回滚。

    • 容器规格:根据需要选择容器CPU、内存、AI加速卡的配额,注意一个容器应用只能使用一种昇腾芯片。
      图4 容器配置

    您还可以对容器进行如下高级配置。

    • 运行命令

      容器镜像拥有存储镜像信息的相关元数据,如果不设置生命周期命令和参数,容器运行时会运行镜像制作时提供的默认的命令和参数,Dockerfile这两个字段为“Entrypoint”和“CMD”。

      如果在创建容器应用时填写了容器的运行命令和参数,将会覆盖镜像构建时的默认命令"Entrypoint"、"CMD",规则如下:

      表1 容器如何执行命令和参数

      镜像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]

      图5 运行命令
      • 运行命令

        输入可执行的命令,例如/run/start

        若可执行命令有多个,多个命令之间用空格进行分隔。若命令本身带空格,则需要加引号("")。

        多命令时,运行命令建议用/bin/sh或其他shell,其他全部命令作为参数来传入。

      • 运行参数

        输入控制容器运行命令的参数,例如--port=8080

        若参数有多个,多个参数以换行分隔。

    • 选项配置

      可以通过开启“特权选项”,使容器拥有root权限,可以访问主机上的设备(如GPU、FPGA)。

    • 环境变量配置

      容器运行环境中设定的变量。可以在应用部署后修改,为应用提供极大的灵活性。当前支持手动添加、密钥导入、配置项导入和变量引用方式。

      • 手动添加支持自定义变量名称和变量值。
      • 使用密钥导入,环境变量名称可自定义输入,环境变量值支持引用密钥的属性值,密钥创建方法请参见密钥
      • 使用配置项导入,环境变量名称可自定义输入,环境变量值支持引用配置项的属性值,配置项创建方法请参见配置项
      • 变量引用支持引用“hostIP”,即边缘节点的IP地址。

      IEF不会对用户输入的环境变量进行加密。如果用户配置的环境变量涉及敏感信息,用户需要自行加密后再填入,并在应用中自己完成解密过程。

      IEF也不提供任何加解密工具,如果您需要设置加密密文,可以使用其他加解密工具。

    • 数据存储

      您可以通过定义本地卷,将边缘节点本地存储目录挂载到容器中,以实现数据文件的持久化存储。

      当前支持如下四种类型的本地卷。

      • hostPath:将主机某个目录挂载到容器中。hostPath是一种持久化存储,应用删除后hostPath里面的内容依然存在于边缘节点本地硬盘目录中,如果后续重新创建应用,挂载后依然可以读取到之前写入的内容。

        您可以将应用日志目录挂载到主机的“/var/IEF/app/log/{appName}”目录,“{appName}”是应用名,边缘节点会将“/var/IEF/app/log/{appName}”目录下后缀为log和trace的文件上传到AOM。

        图6 日志卷挂载
      • emptyDir:一种简单的空目录,主要用于临时存储,支持在硬盘或内存中创建。emptyDir挂载后就是一个空目录,应用程序可以在里面读写文件,emptyDir的生命周期与应用相同,应用删除后emptyDir的数据也同时删除掉。
      • configMap:存储应用所需配置信息的资源类型,创建方法请参见配置项
      • secret:密钥是一种用于存储应用所需的认证信息、证书、密钥等敏感信息的资源类型,创建方法请参见密钥
      • 请不要挂载在系统目录下,如“/”、“/var/run”等,会导致容器异常。建议挂载在空目录下,若目录不为空,请确保目录下无影响容器启动的文件,否则文件会被替换,导致容器启动异常,应用创建失败。
      • 当使用Atlas 500等NPU时,请勿挂载在“/var/dlog”目录,因为这个目录被Atlas的NPU-Plugin容器挂载占用。
      • 挂载高危目录的情况下,建议使用低权限帐号启动,否则可能会造成宿主机高危文件被破坏。
    • 健康检查

      健康检查是指容器运行过程中根据用户需要定时检查容器健康状况或是容器中负载的健康状况。

      • 应用存活探针:应用存活探针用于探测容器是否正常工作,不正常则重启实例。当前支持发送HTTP请求和执行命令检查,检测容器响应是否正常。
      • 应用业务探针:应用业务探针用于探测业务是否就绪,如果业务还未就绪,就不会将流量转发到当前实例。

      详细的配置说明请参见健康检查配置说明

  6. 单击“下一步”,进行访问配置。

    容器访问支持主机网络和端口映射两种方式。

    • 端口映射

      容器网络虚拟化隔离,容器拥有单独的虚拟网络,容器与外部通信需要与主机做端口映射。配置端口映射后,流向主机端口的流量会映射到对应的容器端口。例如容器端口80与主机端口8080映射,那主机8080端口的流量会流向容器的80端口。

      端口映射可以选择主机网卡,请注意端口映射不支持选择IPv6地址类型的网卡。

      图7 端口映射
    • 主机网络

      使用宿主机(边缘节点)的网络,即容器与主机间不做网络隔离,使用同一个IP。

  7. 单击“下一步”,确认容器应用的规格,确认无误后单击“创建”

状态说明

批量应用部署作业有以下八种状态。

  • 排队中:作业等待执行
  • 执行中:作业处于执行状态
  • 成功:全部任务执行成功
  • 部分成功:部分任务执行成功
  • 失败:全部任务执行失败
  • 停止中:作业处于停止中
  • 已停止:作业已停止
  • 更新超时:作业排队和执行时间超过10分钟仍未完成

批量作业执行过程中可以停止,停止后可以继续。

如果批量作业执行失败、部分成功或更新超时,可以重试执行作业,将未执行成功的作业再次执行一遍。

分享:

    相关文档

    相关产品

close