创建应用

创建应用的方式包括如下三种。本节将介绍最后从应用列表创建应用的方式,其余两种方式请查看对应服务中的介绍。

操作步骤

  1. 将鼠标悬浮于[产品与服务]图标之上,在右边窗口选择[企业应用/企业应用]菜单项。

  1. 在左侧导航树中单击[应用管理/应用列表]菜单项,进入应用列表管理页面。

  1. 单击<创建应用>按钮,进入基础设置页面。具体配置步骤与参数,请参见基础配置

  1. 单击<下一步>按钮,进入应用配置页面,具体配置步骤与参数,请参见应用配置

  1. 单击<下一步>按钮进入部署确认页面,确认部署信息,如需修改单击<上一步>按钮返回修改,如无问题单击<创建>按钮完成操作。

基础配置

基础配置参数如下表所示:

参数

说明

应用名称

自定义应用名称,可包含小写字母、数字、-,且只能以小写字母开始,以小写字母或数字结尾,长度1-40个字符。

版本号

为应用指定版本号,当应用回滚时,可通过版本号选择回滚至哪一应用版本。

应用组

应用所属的逻辑分组,即创建应用组中创建的应用组。若未创建,也可单击参数旁的<创建应用组>按钮进行创建。

软件包类型

包括容器镜像、Jar包、War包、Helm包和前端资源包等五种类型,请根据实际情况选择:

  • 容器镜像是指存储于软件中心-镜像仓库中的镜像。

  • Jar包、War包、Helm包和前端资源包是指存储于软件中心-应用仓库中的应用包。

  • 对于边缘节点仅支持容器镜像、Jar包、War包和前端资源包四种类型。

部署方式

可以选择如下两种部署方式:

  • 传统方式部署:选择通过传统方式部署时,可以选择资源配置为共享集群或者独享集群,然后选择应用部署的节点。

  • 通过环境部署:选择通过环境部署时,可以选择系统内已创建好的环境,并在该环境内添加云主机或者容器集群(必选),并添加微服务引擎。具体可见【企业应用指南-环境管理】。

资源类型

 

承载应用的资源所属类型,包括容器集群、主机和边缘节点三种资源类型。容器应用需选择容器集群承载应用。

容器镜像、Helm包、Jar包、War包和前端资源包部署到容器集群时,容器内部时间和容器集群时间将保持一致。

应用类型

(传统方式部署)

  • 无状态应用:即KubernetesDeployment,是最常用的Controller定义一组完全相同的Pod,如Pod名称、副本数、端口等,Deployment控制器会保证集群中的Pod与定义一致,故障时可以自动恢复。

  • 有状态应用:即KubernetesStatefuleSet,能够保证Pod的顺序和唯一性。Deployment一样基于一组完全相同的容器定义,但不同的是,StatefulSet为每个Pod维护一个具有黏性的身份标志,使他们不随重启改变。

  • 守护进程:即KubernetesDaemonset,它在集群的每个节点上运行一个Pod,且保证只有一个Pod。这非常适合一些系统层面的应用,例如日志收集、资源监控等,这类应用需要每个节点都运行,且不需要太多实例。

说明

  • 守护进程只支持容器镜像、jarwar、前端资源包四种类别的容器应用部署。

  • 守护进程不支持弹性伸缩,不支持灰度升级。

集群(传统方式部署)

应用选择容器集群资源,边缘节点需选择已经纳管边缘节点的CCE容器集群,关于边缘节点的内容,请参见【容器服务-云容器引擎】。

当应用类型为守护进程,并且资源配置为独享集群时,可以选择是否运行在控制节点,默认为开启。

选择环境

(通过环境部署)

选择已创建好的环境。关于创建环境,请参见:【企业应用指南-环境管理-创建环境】

选择资源

(通过环境部署)

必须添加一个容器集群或边缘节点。

固定IP

为应用绑定在Pod初始化时分配的IP地址。

 

  • 默认情况下,Kubernetes管理的容器实例重启或升级均会导致对应的容器Pod重新分配IP地址。在配置了路由网络的独享集群中,若是创建单Pod容器的有状态应用,可以在此将Pod初始化时获取的IP地址固定分配给该Pod。这样即使是应用重启或者升级,用户也可以通过固定IP地址访问应用。

  • 固定了IP地址的有状态应用,不支持弹性伸缩。

  • 只有在固定网络模式(calico模式)下的Kubernetes容器集群上部署应用,才会出现这个选项

边缘节点组

资源类型为边缘节点时可配置此参数,可以选择一个或多个边缘节点组。

 

应用配置

1.      一般配置参数

应用配置-一般配置参数如下表所示:

参数

说明

配置方式

当软件包类型选择“容器镜像”,且资源配置选择“独享集群”时,支持两种应用配置方式:

  • 表单配置:即下表所述参数配置。

  • Yaml配置:通过编辑Yaml文件进行应用配置。关于Yaml部署应用,请参考附录Yaml部署应用示例

说明

不支持通过Yaml在边缘节点上对边缘应用进行配置。

镜像安装包

根据选择的软件包类型此处展示对应参数。

选择镜像或应用包所在的仓库类型:私有仓库、公有仓库或者第三方仓库。目前仅边缘节点支持第三方仓库。

单击<选择安装包>按钮,选择应用包或镜像名称及待部署的版本,单击<确定>按钮完成选择。

若未上传镜像或应用包可单击<上传应用包>按钮进行上传,相关操作请参见【企业应用指南-软件中心】。

环境变量

用户自定义容器运行环境中的一些变量,方便部署后灵活变更容器配置。自定义环境变量不可与系统内置的环境变量重复,系统内置的环境变量如-1所示。自定义环境变量支持如下配置方式:

  • 手动输入:手动添加变量名与值的方式添加环境变量。

  • 单击<+添加>按钮,可以添加更多的变量名和值;单击<快速添加>按钮,可以打开一个文本输入框,输入多行变量名和值后,单击<确定>按钮,即可一次添加多个变量名和值。

容器规格

容器的启动限制和运行限制。启动限制参数应小于运行限制参数。

  • 启动限制:容器“启动限制”的缺省值。容器启动时,服务器可分配给容器的资源(包括CPU和内存)不能低于“启动限制”中指定的数量。

  • 运行限制:容器“运行限制”的缺省值。容器运行时,占用的服务器资源(包括CPU和内存)不能高于容器“运行限制”中指定的数量。

  • 开启GPU配额:配置容器使用的GPU资源。当目标集群安装了gpu-manager插件之后,企业应用在部署时支持配置GPU资源(包括显卡和显存,其中显卡1张卡划分为100,可以为0-100内的整数或100的倍数;显存一份是256Mi,配置必须为整数)。允许容器使用的所有GPU资源的上限(即运行限制,注意此项必须为整数,且设备支持GPU时才可配置此项)。平台版本升级后,应用对GPU资源的使用方式和限制方式发生改变,导致新的配置参数为空,请以新平台版本对于GPU资源的使用方式,在弹性伸缩窗口对GPU进行配置,弹性伸缩的配置请参见应用弹性伸缩

标签

为应用创建标签,可以通过标签来标识一类应用。

nginx版本

部署前端资源包,利用nginx做反向代理前端资源。当前仅支持1.20版本。

是否开启HTTPS

部署前端资源包可见。如果开启,需要上传配对的公钥证书和私钥证书。

公钥证书/私钥证书

单击<上传>按钮,弹出窗口,将文件拖至窗口的对应区域,或单击<点击上传>,上传证书。

nginx配置

单击<上传>按钮,弹出窗口,将配置文件拖至窗口的对应区域,或单击<点击上传>,上传配置文件。

 

表-1 系统内置环境变量列表

容器软件包类型

系统内置环境变量

WAR

  • JAR_PARM

  • H3CLOUD_APM_TRIGGER

  • H3CLOUD_SW_AGENT_NAMESPACE

  • H3CLOUD_SW_AGENT_NAME

  • H3CLOUD_SW_AGENT_COLLECTOR_BACKEND_SERVICES

  • SW_AGENT_VERSION

  • TOMCAT_UPGRADE

  • SW_AGENT_CONFIG

  • BASE_JDK_VERSION

  • NAMESPACE

  • SERVICE_NAME

  • JAEGER_AGENT_COMPACT

  • JAEGER_AGENT_BINARY

  • JAEGER_AGENT_ZIPKIN

  • EUREKA_URL

  • CONFIG_URL

  • GRAY_VERSION

  • REGISTRY_TYPE

JAR

  • JAR_PARM

  • JAR_NAME

  • H3CLOUD_APM_TRIGGER

  • H3CLOUD_SW_AGENT_NAMESPACE

  • H3CLOUD_SW_AGENT_NAME

  • H3CLOUD_SW_AGENT_COLLECTOR_BACKEND_SERVICES

  • SW_AGENT_VERSION

  • SW_AGENT_CONFIG

  • NAMESPACESERVICE_NAME

  • JAEGER_AGENT_COMPACT

  • JAEGER_AGENT_BINARY

  • JAEGER_AGENT_ZIPKIN

  • EUREKA_URL

  • CONFIG_URL

  • GRAY_VERSION

  • REGISTRY_TYPE

容器镜像

  • GRAY_VERSION

  • REGISTRY_TYPE

  • EUREKA_URL

  • CONFIG_URL

  • SERVICE_NAME

  • NAMESPACE

  • JAEGER_AGENT_COMPACT

  • JAEGER_AGENT_ZIPKIN

  • JAEGER_AGENT_BINARY

   

2.      应用高级配置

在界面上单击<显示高级配置>,打开高级配置界面。

应用配置-高级配置参数如下表所示:

参数

说明

服务访问设置

配置容器集群内/外访问、负载均衡访问的端口映射。

  • 名称:端口映射名称是访问应用的标识。可包含小写字母、数字、- ,且只能以小写字母或数字开始和结尾,长度1-32个字符。

  • 协议:目前支持TCPUDP

  • 容器端口:设置容器端口。

  • 集群内/外端口:设置集群内/外端口。

单击<+添加>按钮,可以设置多个端口映射。

标签

为服务创建标签,可以通过标签来标识一类服务。

会话保持(集群内外访问时可以配置此参数)

选中时,保证在设置的会话超时时间内,来自同一IP的请求始终是同一pod进行响应。

选择负载均衡

  • 已有LB

  • 自动创建LB

设置负载均衡参数

分别设置external:南北向LBLB IDLB的租户ID的值。

便于服务能通过这些参数值使用负载均衡。

访问路由

配置容器共享集群的访问路由之前,需配置服务访问设置(参见添加服务),否则访问路由不生效。

  • 域名:配置该访问路由适配的容器外部访问域名,如btv.com

  • 负载均衡:支持负载均衡算法,支持轮转调度、最小连接、散列求余算法三种。

  • 轮转调度:每个endpoint根据其权重依次被使用(roundrobin)。

  • 最小连接:具有最少连接数的endpoint接受请求(leastconn)。

  • 散列求余:根据原ip进行散列,然后根据所有server的总权重进行求余,得到哪个endpoint响应请求(source)。

  • 启用安全路由:是否启用https访问模式。

  • 启用sticky sessionsticky session(粘性session),开启后,可保证来自于同一client的请求始终是同一pod进行响应。

提示部署在独享集群上的应用,无须配置访问路由。

应用访问路径

容器镜像、Jar包、War包、前端资源包可在此处配置应用的访问路径。应用部署成功后,可通过“IP(域名):端口号/path(即应用访问路径)”访问应用。

启动命令

设置容器启动和运行命令。

存储卷

给容器挂载额外存储,适用于需持久化存储,高磁盘IO等应用场景。如需使用,需提前创建存储卷。关于存储卷创建步骤请参考“初始配置-Paas服务-系统管理员配置-对接资源-配置存储卷”。

说明  因各存储服务器对于创建存储的限制规则不同,所以请用户根据实际使用的存储服务器的规则,合理安排存储规划。

  • 本地存储:即应用利用应用所在那台主机的硬盘的存储。注意使用本地存储时,切换节点会丢失数据。

  • 静态供给:指使用在资源菜单处创建好的对应的PV

  • 动态供给:指使用在资源菜单处创建好的对应的动态供给类,根据应用所需的大小等的自动划分需要的PV

  • 已有PVC:指使用在资源菜单创建好的PVC

  • 临时存储:即不映射任何持久化存储。

  • 容器路径是指在容器里面的应用所使用的,在容器内部独立的路径。

  • 主机路径指映射到对应宿主机上宿主机的目录。

配置项(ConfigMap

选择应用需要使用的配置项,即配置项中创建的配置。

  • 配置/版本:通过配置项名称和版本筛选配置项。

  • Key:通过key匹配配置数据,支持单选,也支持选择“所有key”,一次性挂载全部配置数据。

  • 挂载路径:指定配置数据在应用中挂载的路径,即目录。

密钥(Secret)

选择应用需要使用的密钥,即密钥中创建的密钥。

  • 密钥文件:通过密钥名称匹配密钥文件。

  • 挂载路径:指定密钥在应用中挂载的路径,即目录。

节点亲和性(Node Affinity

一种容器的调度策略,通过判定规则、操作符、节点的标签之间的关系,用户可以约束Pod可以被调度到哪些节点。支持必须满足规则(硬需求)和尽量满足规则(软需求)。

应用亲和性(Pod Affinity/应用反亲和性(Pod Anti-Affinity

一种容器的调度策略,通过判定规则、操作符、命名空间、Pod标签之间的关系,决定工作负载的Pod和哪些工作负载的Pod部署在同一个拓扑域。

健康检查

用于判断容器和业务是否正常运行,包括存活性检查和可用性检查:

  • 存活性检查:用于检测容器是否存活,类似于执行ps命令检查进程是否存在。如果存活性检查失败,集群会对容器执行重启操作;反之则不执行任何操作。

  • 可用性检查:用于检测容器是否准备好开始处理用户请求。如果容器的就绪检查成功,集群会开放对该容器的访问;若检查失败,集群会屏蔽该容器。

可使用的检查策略包括:

  • Command:执行一个命令,如果命令返回为0,则说明容器正常;如果返回非0,则说明容器异常。该方式需要在容器中集成相关脚本或程序。

  • httpGet:执行一个http请求,如果返回的http状态码介于200400之间,则说明容器正常;否则则说明容器异常。httpGet检查方式适用于容器可以提供http服务的场景。

  • tcpSocket:该方式通过对TCP服务的连通状态进行检测,与容器内的应用建立Socket连接,如果可以建立成功则说明容器正常;否则说明容器异常。

通用参数包括:

  • 初次启动时间:执行第一次健康检查前等待的时间。

  • 超时时间:执行健康检查的超时时间。

  • 探测频率:执行检查策略进行健康检查的频率。

  • 成功次数阈值:判定健康检查成功的阈值,默认1次探测成功即判定容器和业务运行正常。

  • 失败次数阈值:判定健康检查失败的阈值,可自定义几次探测失败后,判定容器和业务运行失败。

容器权限

配置容器的权限。

  • 特权容器:选择是否开启特权。在特权模式下运行的容器,容器中的进程实质上等同于主机上的以root身份运行。

  • Host Network/PID/IPC:选择是否使用主机的网络/PID/IPC命名空间。

  • Read Only Root Filesystem:是否开启根文件系统只读权限。

  • 运行用户Uid:配置用户的Uid,容器以该用户的权限运行。

  • Linux内核能力:在下拉框中选择Linux内核支持的权限,如修改文件属主的权限等。

自动伸缩

配置自动伸缩阈值。当容器的CPU使用率或内存使用率超过该阈值,系统将执行自动伸缩策略,增减Pod实例的个数。部署完成后,支持通过应用空间对该参数进行修改,即重新配置自动伸缩阈值。

支持应用诊断

应用诊断指从业务应用全局视角,基于业务整体的健康度对系统运行状态进行全方位监控和统计,包括基础设施、微服务、基础中间件、服务网关、链路架构等,为企业运维人员提供指标分析型工具。当本系统已部署“技术组件”云服务时,可配置本参数。

  • 当部署软件包类型为War包、Jar包和前端资源包,且本系统已部署应用诊断服务时需配置此参数。选择“是”,将支持通过[云服务/应用服务/应用诊断]对部署后的应用及其所在应用组进行运行情况监控。

  • 当部署软件包类型为容器镜像或Helm包时,如需使用应用诊断服务,需参考联机帮助中【云服务指南/应用诊断/快速入门/准备工作】在软件包中引入SDKskywalkingagent

  • 应用诊断仅支持监控使用Java语言开发的应用。