边缘应用
边缘应用部署介质支持两种:镜像(默认镜像仓库、第三方镜像仓库等)和应用包(应用包管理的jar、war等)。
镜像方式就是从镜像仓库中直接部署Docker Images;应用包部署需要选择运行环境镜像,部署时将应用包上传到运行环境的对应目录下。
创建边缘应用
如上节所述,可通过2种交付介质创建容器应用:镜像和应用包。下面分别叙述通过两种介质创建容器应用。
通过镜像仓库创建边缘应用
(1) 进入应用列表,统一导航容器服务模块,进入[容器应用/应用]菜单。
(2) 选择应用部署项目和集群,点击侧边菜单上方下拉框,选择部署项目和集群。
(3) 点击列表左上角<创建应用>按钮,进入应用创建页面。
(4) 填写应用名称,然后配置服务对应参数,各参数配置要求如下所示。
- 服务名称:服务名称由小写字母、数字和“-”组成,3-56位,且开头必须是小写字母,结尾必须是小写字母或数字。
- 服务版本:可由1~15位小写字母、数字和中划线组成,且开头和结尾必须是小写字母或数字。
- 部署网络:当集群安装多个网络插件时,部署应用时可以选择多网卡,程序不同接口可以走不同网卡。使用时主网络必选,附加网络可选。使用场景主要两个:支持特定应用的分网络管理,主要目的是为提高性能(如Ceph);支持网络划分后隔离,主要目的是为了安全(如业务网,管理网)。
(5) 基本信息配置完成后,单击<下一步>按钮。
向容器组添加容器,并配置各容器参数,同一容器组内一般部署强相关的组件,比如应用程序组件和代理组件等,同一容器组内的容器始终一起调度,并可以使用本地通信。
添加容器支持两种介质类型,当容器的介质是镜像时,配置页面如下图所示。
(6) 配置运行环境的镜像,用户可以从镜像仓库中复制镜像地址输入,或根据需要从镜像仓库中选择要使用的镜像和版本,单击<确定>按钮即可。
(7) 配置其他“基本配置”参数,各参数的说明如下所示。
- 容器名称:容器组内容器的名称。
- 容器类型:应用程序容器,或者初始化容器。应用程序容器就是一般业务程序,初始化容器是在应用程序容器之前运行的容器,可以包含应用程序镜像中不存在的实用程序或设置脚本。例如,服务A依赖于服务B,部署服务A时可以增加一个初始化容器,初始化容器可以是一个脚本,用于检测服务B是否已运行,如果服务B已运行,初始化容器就会结束,然后启动服务A的应用程序容器。
- 特权容器:配置允许当前容器获取Linux内核特权,使得该容器可以比较高的权限操作Linux。
- 容器规格:x86计算或者高性能计算GPU,其中x86计算可提供了5种标准容器配置,并且支持自定义配置,内存步长100MB,CPU步长0.1核。高性能计算GPU支持自定义整数GPU核数,用户可以部署高性能计算、机器学习、人工智能、自动驾驶、虚拟现实、自然语言处理等需要GPU的应用,k8s自动调度GPU计算资源。
(8) 配置“启动设置”相关参数,该参数主要用于配置常用的启动设置,例如:配置容器进入点命令(Entrypoint),启动命令(CMD),重新部署时选择本地镜像还是始终拉取云端该版本镜像,设置使用所在主机节点的时区,是否允许TTY连接和STDIN输入。
启动设置各参数说明如下所示。
- 容器进入点:修改
Docker File
中的默认Entrypoint
命令,用来配置容器启动后执行的指令。 - 启动执行命令:修改CMD命令,该设置可以改变容器启动后的执行指令;在该配置页面,我们可以自定义执行命令。下面我们将定义一个可执行脚本。运行一个容器,然后在容器中创建脚本文件,并添加以下内容。如
my-run.sh
。
#!/bin/sh
echo this is my-run.sh
echo "========================================"
./run.sh
确保该脚本有执行权限,如在容器中执行 chmod 755 my-run.sh
,这时就可点击“自定义”,键入自定义的命令。
CMD和Entrypoint都可以执行exec或者shell,CMD一般用作容器默认启动命令,Entrypoint是容器进入点,具体用法请参考docker相关文档。
- 重新部署所用镜像:某些配置参数修改、手动重新部署、调度策略变化或故障导致的重启,优先使用宿主机本地镜像或始终拉取云端该版本镜像。优先使用宿主机本地镜像,重启速度快;拉取云端镜像,可以使用更新后的镜像版本,但是启动速度较慢。
- 容器时区设置:用来设置容器运行时的时区。未勾选时,容器运行时使用系统默认时区。勾选时,容器运行时使用所在节点时区,如北京节点会将容器设置为东八区。
- 容器钩子:开启后可以在容器运行后执行命令。
(9) 配置健康检查相关参数,系统提供健康检查配置项功能,除了TCP、HTTPS、HTTP,还支持执行命令脚本检查,如果检查项不满足,系统为了保证服务的高可用,将自动重启该服务。支持就绪状态检查和存活状态检查,两种检查可以独立设置,互不影响。
各参数的对应的说明如下所示。
- HTTP:通过HTTP GET请求进行健康检查。如果响应状态码小于400,则认为容器健康。
- HTTPS:通过HTTPS GET请求进行健康检查。如果响应状态码小于400,则认为容器健康。
- TCP:检测端口是否为打开状态,若端口为关闭或进程停止关闭状态,则健康检查不通过。
- 执行命令:通过在容器内执行命令进行检查,进程退出状态码为0,则认为容器健康。
(10) 配置环境变量相关参数,环境变量的配置支持两种方式:
- 支持导入镜像内置的环境变量
- 支持导入配置文件环境变量
其中导入镜像内置的变量是指选择镜像自带的环境变量,配置文件环境变量,用户可以在服务配置板块进行相应 配置。环境变量的值可以使用secret加密。
(11) 配置日志采集相关的参数,平台默认提供Docker标准日志输出采集和查询分析能力,如果其它目录有日志输出,并且希望平台提供采集、查询分析能力,可以设置日志采集。该属性用于采集应用的运行日志,同时对日志进行分析,页面如下图所示。该设置可以实现应用的运行日志采集,结合平台的日志查询功能提供托管式、一站式日志采集、查询服务。
进行以下配置,即可完成应用的日志采集。
- 日志目录,要采集的应用产生的日志的目录,例如“/var/log”。
- 采集规则,要采集的文件正则表达式,保证正则可以避免采集比如temp这类正在写入的文件,例如“^access.log.[0-9-]{10}$”。
- 排除规则,可以进一步实现采集策略挖洞,屏蔽部分不需要采集的文件,例如“^access.log.[0-9-]{10}$”。
采集好的日志,可以在[运维中心/应用监控/日志管理/日志查询]页面查看,选中采集日志,即可根据关键字、日期等条件过滤查询。
(12) 设置配置管理对应参数,用户可以根据需求,统一管理服务配置文件,用户不用停止服务,即可变更多个容器内的配置文件。可在[容器服务/服务配置]下创建配置组,从中选择所需的配置组,并自定义挂载目录,页面如下图所示。
现已提供通过文件导入或git触发更新的方式来更新配置文件内容,或直接创建配置文件。详细内容查看服务配置小节。
(13) 容器组配置完成后,单击<下一步>,进入常用设置页面。
常用设置页面参数详细说明如下所示。
- 端口设置:平台默认读取镜像manifest中的端口配置,并填充到界面上,用户可以根据需要选择需要暴露的容器端口。服务端口一般默认使用容器端口,容器组内容器暴露端口不能重复,服务名类似传统域名,服务名+端口可以提供集群内访问。
- 存储卷:用户可以根据业务需求相应的存储卷,支持使用已有存储卷、新建临时卷、本地存储(hostpath)。
- 服务发现网络类型:系统支持IPv6/IPv4协议,容器服务支持双栈。
- 地址池/固定IP:选择一个集群内已配置的IP地址池,并确认是否为此服务固定IP。固定容器组IP后,副本数只能为1(暂只支持服务单实例固定IP)。
- 副本数:填写需要启动的容器组数量。
- 升级策略:升级策略创建应用时不生效,当修改版本控制器配置(除升级策略)和容器配置时,将会按照更新策略重启服务,升级策略共4种。
- 先启动新Pod,再停止旧Pod:使用该策略可以保证更新过程中服务负载能力不降低,但会有一定的资源冗余。
- 先停止旧Pod,再启动新Pod:使用该策略没有冗余资源,但是更新过程服务负载能力会降低。
- 先全部删除,再启动新Pod:使用该策略更新速度较快,且可以用于独享存储、固定IP等特殊服务的升级。
- 自定义:用户设置最大超量和最大不可用,系统将自动分组更新。适用于副本数较大的服务更新。
- 如果项目指定了地址池,这里只能选择指定的地址池。
- 如果项目没有指定地址池,租户指定了地址池,这里只能选择租户地址池。
- 如果项目、租户都未指定地址池,可以选择集群所有地址池。
(14) 常用设置配置完成后,展开高级设置页面,如下图所示。

- 调度策略:节点调度策略包括使用系统默认调度、指定主机名及IP上运行和定义亲和性,调度选择支持搜索和排序。
- 系统默认调度策略指的是不允许节点端口被其他容器实例占用,不允许容器实例创建在空闲资源不足的节点。
- 指定主机名及IP上运行是指应用运行在用户选择的主机节点上。
- 服务实例与节点亲和性
亲和性定义有两个等级,必须表示强限制性的硬策略,如果没有符合条件的节点,会一直重试,一般用于服务必须满足一定运行条件,不满足就会出问题的场景。最好表示优先调度到符合条件的节点,如果没有符合条件的节点,就忽略该条件,按照正常情况调度。
- 亲和性规则可以设置多个,单次添加的亲和性规则之间是“且”的关系,必须同时满足设定所有的规则,每个亲和性规则之间是“或”的关系,满足其中一个亲和性规则即可。
- 当亲和性条件选择“最好”时,显示权重,默认设为1,范围是1-100的整数。
服务与节点亲和的规则如下所示。
- “in”表示调度到满足主机标签的节点,主机标签值可以多选。
- “Notin”表示不能调度到满足主机标签的节点,主机标签值可以多选。
- “>”表示容器服务调度到int型键值大于设定标签键值的节点上
- “<”表示容器服务调度到int型键值小于设定标签键值的节点上。
- “Exists”表示调度到存在该主机标签键的节点。
- “DoesNotExists”表示调度到不存在该主机标签键的节点。
- 服务与服务亲和性
决定当前服务实例(容器组)与其它服务实例的是否可以部署在同一拓扑域上。可以是当前服务的容器组标签,也可以是其它服务的容器组标签;可以是已存在的标签,也可以是暂未设置的标签。想设置当前服务A的容器组最好分散在不同节点上,设置如下。

限制等级选择“最好”,容器组标签输入 app in a
,拓扑域可不填(默认全局),这条策略的含义是“在全局拓扑域上,存在app=a的容器组的节点,最好不要调度当前服务”,也就是说没有其它干扰时,一个节点上最多调度一个当前服务的容器组。
例2,服务A与服务B通信比较频繁,需要设置当前服务A与服务B必须调度到相同节点上,设置如下所示。
拓扑域可以是节点、机架、分区、地域、可用区等各种基础设施概念,通过主机节点标签识别,一个节点标签键是一个拓扑域。
服务与服务亲和的规则如下所示。
- in表示调度到满足主机标签的节点,主机标签值可以多选。
- Notin表示不能调度到满足主机标签的节点,主机标签值可以多选。
- Exists表示存在该主机标签键的节点。
- DoesNotExists表示不存在该主机标签键的节点。
容忍
勾选允许设置容忍,则创建服务/编辑时显示增加容忍相关的调度策略。
- 创建服务、编辑服务时支持修改调度策略。
- 高级设置增加,容忍调度策略。
输入后,点击<添加>按钮,显示在下方输入框中,支持添加多个容忍。
不需要用户访问当前边缘应用时,需要设置如下所示的容忍策略。
- node-taint.kubernetes.io/edge=NoSchedule
- node.kubernetes.io/not-ready=NoExecute
- node.kubernetes.io/unreachable=NoExecute
- 容忍的设置,可以让云端和边缘端重连的时候,pod不重启
- 安全设置:容器开启特权模式,输入容器的User ID和分配拥有pod卷的fsGroup。
- 安全组:系统将不同服务分成若干个安全组,安全组内默认放通服务相互访问,安全组外默认隔离(假设每个服务都只属于一个安全组的情况)。
- 容器组DNS设置:可以设置容器组的主机名和子域,可通过“主机名.子域.my-namespace.svc.cluster-domain.example”域名在集群内直接访问容器组。
- 历史版本上限:用户可以设置的deployment历史版本个数,最大支持1000。
- 带宽限制:设置服务上传、下载带宽。
(15) 用户可根据实际的业务需求配置是否“获取自定义监控数据”,如果选择获取自定义监控数据,则需填写对应的path和port值。
(16) 高级设置的相关参数配置完成后,可以单击<创建>按钮,部署应用。或点击右上角“添加服务”,继续添加服务。
(17) 服务添加完成后,单击<创建>按钮,应用新建成功。
通过应用包文件创建应用
当容器组的介质是应用包时,配置步骤如下所示。
(1) 点击“应用包”(创建应用前,需[交付中心/应用包管理]上传应用包),弹框如下图所示。

(2) 查找并选择需要使用的应用包,根据包类型,支持不同的运行环境,选择自己需要的运行环境版本,点击<确定>即可。
通过应用包添加容器,容器类型只能是应用程序容器,不能是初始化容器,其它参数与通过镜像添加一致,详细参见通过镜像仓库创建边缘应用。
应用包文件具体指 .jar
和 .war
文件,用户可通过[交付中心/应用包管理]上传本地 jar
和 war
包。创建应用时选择需要部署的应用包,然后选择 Java
、Tomcat
、Weblogic
等运行环境,其它配置同镜像方式,系统将会自动部署为容器应用,无需用户容器化。
应用包容器化部署,会在启动时先将应用包文件上传到服务器(tomcat
、weblogic
等)对应目录上,然后才能启动成功。用户自定义运行环境时,请注意页面提示默认路径。
如果使用 weblogic
运行环境部署 jar
包,用户打包时请在 WEB-INF
目录下创建一个 weblogic.xml
文件,在 weblogic.xml
文件中设置一下根的上下文,如:
<weblogic-web-app>
`<context-root >`/`</context-root>`
</weblogic-web-app>
否则部署的应用包无法直接访问,必须在系统生成访问地址后面,增加应用包名称作为路径。例如应用包为 web-app
,访问地址类似 http://192.168.1.103:39524/web-app/
。
应用变更
用户可以在应用列表页对应用进行查看拓扑图、启动/停止操作、重新部署和删除操作。
- 勾选已停止的应用,可以查看拓扑、启动或删除应用。
- 勾选运行中的应用,可以查看拓扑、停止、重新部署或删除应用。
具体可执行的操作如下所示。
- 查看拓扑:点击查看拓扑,该拓扑只有只读权限。
- 启动操作:选择目标应用并单击启动,在弹出的对话框中,单击<确定>。
- 停止操作:选择目标应用并单击停止,在弹出的对话框中,单击<确定>。
- 重新部署:一般用于因为宿主机或其它未知因素导致的服务异常,可以通过手动重新部署,将服务实例部署到其它宿主机上,完成故障恢复。重新部署需要在运行中状态下才可以操作,选择目标应用并单击重新部署按钮,在弹出的对话框中,单击<确定>按钮。
- 删除操作:选择所要删除的应用并单击删除,在弹出的对话框中,单击<确定>。
查看应用详情
单击左侧导航栏中的[容器应用/应用]。
选择所要查看详情的应用,点击应用名称进入应用详情页面;用户可以查看服务实例、审计日志和拓扑图。
查看服务实例
进入应用详情页,用户可操作内容如下。
- 查看在该应用中添加的所有服务实例。
- 可在该界面添加服务,具体步骤参考上边创建应用-通过镜像仓库创建应用-添加服务。
- 可对服务进行启动/停止、重新部署、删除、编辑YAML等操作,具体步骤参考下面服务部分即将介绍的服务-服务变更。
- 查看所需要查看的服务详情,具体步骤参考下边服务部分即将介绍的服务-查看服务详情。
查看审计日志
在应用详情页,点击审计日志,可以查看该应用的操作审计记录。
拓扑图
在应用详情页,点击拓扑图;即可展示容器的拓扑图,包括容器名称、IP地址等字段展示。