文档中心 > 店铺动态卡片-开发指引

应用发布配置(容器部署)

更新时间:2023/02/09 访问次数:14925

一、部署应用


1)进入应用概览页点击 应用发布;或者应用列表页选择对应的应用点击 发布。首次部署需要先进行部署配置。


image.png


2)普通用户推荐使用一键生成和官方镜像进行配置; 对于对机器运维有经验用户可以使用 高级设置,如果要使用自定义镜像的请在容器镜像服务上传自己的镜像,参考文档

一键生成配置:实例数量请设置正整数,建议最少保证2个实例节点,具体由用户自行决定,CPU:单位核数,内存单位MB,请按照自己的需求设置,不能大于整个集群机器水位。(CPU、内存设置为0表示不预分配资源)

注意:CPU和内存的选择不能够超过集群内ECS规格的最大值,要保留一定余量。比如4核8G的ECS最大能够部署约4核7G的容器总量。


image.png


高级设置说明


填写项

说明

环境类型

支持正式环节和测试环节。

部署根目录

应用程序部署路径,可以自行设置。

实例数量

指定要部署的容器数量(不是你的机器数量,而是你要部署几个容器,建议两个以上)。

CPU&内存

指定的是单个容器的资源使用。

端口映射

指明容器需要暴露的端口(如tomcat镜像的8080端口),如果后续需要配置“流量接入”,这里必须指定流量接入对应的端口,否则流量接入将不可用。

环境变量

如果是选择官方镜像、一键生成配置会默认生成环境变量,比如java启动参数设置,可按照自己的需求进行修改,注意容器内存需要大于JVM堆内存大小,否则会导致启动失败;自定义镜像请根据自己的镜像填写,环境变量会以docker env的形式传入到容器中。

文件挂载

所填内容将以文件的形式挂载到容器内的指定目录下。注意:默认只有.sh结尾的文件具有可执行权限,其他文件默认为读写权限。

目录挂载

建议将日志,或者容器内的数据目录(如临时文件存储)以目录挂载的形式挂载到宿主机上,保证容器所占用的磁盘空间不会被占满,容器占用磁盘空间过大会导致容器直接挂掉。

健康检查配置

目前支持http和shell脚本检测应用健康状态,请一定保证设置正确,否则会导致容器启动失败。SpringBoot2默认设置值为 http://127.0.0.1:8081/actuator/health


image.png


二、发布流程


选择需要的环境,可以通过新建发布单、上传代码包进行发布,支持分批发布功能。


1)发布管理:显示目前正在进行的发布单。 程序包管理:记录已经进行发布的程序包,可以快速发布某个程序包,达到回滚的目的。


image.png


2)点击新建发布单,通过上传代码包进行发布。


image.png


3)查看具体的发布单详情


image.png


三、环境管理


默认会创建两个默认部署环境管理:正式环境和测试环境(依赖新建集群时,创建的集群环境),根据需要使用也可以创建新的环境。

发布完成后在环境管理页面可以查看已经部署成功的应用实例数,资源管理页面内可以看到具体pod节点的信息。


image.png


image.png


四、部署配置


1)点击部署配置,可以查看和修改该应用的具体部署逻辑。


image.png


2)编辑配置(根据需要使用)

所有的部署配置变更,以及环境实例数量的变更,都需要重新提交发布单才能生效。


容器配置

说明

端口映射

指明容器需要暴露的端口(如tomcat镜像的8080端口),如果后续需要配置“流量接入”,这里必须指定流量接入对应的端口,否则流量接入将不可用。

环境变量

如果是选择官方镜像默认生成环境变量,比如java启动参数设置,可按照自己的需求进行修改,注意容器内存需要大于JVM堆内存大小,否则会导致启动失败;自定义镜像请根据自己的镜像填写,环境变量会以docker env的形式传入到容器中。

文件挂载

所填内容将以文件的形式挂载到容器内的指定目录下。注意:默认只有.sh结尾的文件具有可执行权限,其他文件默认为读写权限。

目录挂载

建议将日志,或者容器内的数据目录(如临时文件存储)以目录挂载的形式挂载到宿主机上,保证容器所占用的磁盘空间不会被占满,容器占用磁盘空间过大会导致容器直接挂掉。

健康检查配置

目前支持http和shell脚本检测应用健康状态,请一定保证设置正确,否则会导致容器启动失败。SpringBoot2默认设置值为 http://127.0.0.1:8081/actuator/health。


image.png


五、流量接入


1)选择SLB,点击新建SLB接入,前提需要在该集群所在的专有网络VPC下,购买私网SLB。


image.png


2)新建SLB接入


负载均衡协议,一般建议选择http协议。

环境,根据需要选择环境。

内外网类型,选择内网环境(小程序业务都使用内网访问+私网SLB

负载均衡,需要在该环境所在集群专有网络下购买SLB,才能选择到对应SLB。(购买私网SLB请注意规格对应的连接数和查询数,免费版只能支持每秒1000次查询

监听端口,一般使用80,如果SLB已经被占用80端口,可以使用其他端口,对ews域名的绑定没有影响。

RS端口,应用内监听端口,比如,用基础的tomcat就填写8080,根据实际应用情况设置端口。

 

image.png


3)接入EWS域名 (目前已经停止使用


选择 手淘H5接入 标签,目前只有手淘互动类型应用可以有此功能。 点击 新建手淘H5接入 进入创建页面。


image.png


Appkey,只有无线互动类型的应用appkey可以进行绑定;请正确选择,会影响后续ews域名审核。

环境 和SLB接入,只能选择在流量接入中创建的对应内网环境SLB才可以被选择。

使用场景描述需要详细说明业务场景,提交以后会进入运营小二审核流程,需要审核通过以后才能使用。


image.png


 查看统一接入状态。


image.png


状态列表:


状态

说明

审批中

EWS域名审批流程中。

审批拒绝

EWS域名审批被拒绝,详情请看拒绝原因。

配置中

网络流量转发链路配置中。

配置失败

网络流量转发链路配置失败。

已生效

EWS域名已生效。


六、常见问题


1. 容器的健康检查是什么?

容器健康检查代表了容器的健康状态,当容器平台判断容器健康检查失败后,会自动重启容器,直到健康检查成功为止。

容器重启次数可以在“环境管理->管理资源”看到。


image.png

 

因此,配置正确的健康检查配置至关重要。

 

image.png


容器健康检查配置入口如上图所示,主要有两种健康检查类型:

 

http get:系统会定时通过http请求用户配置的URL,注意URL不能包含host字段。例如URL配置为“/checkpreload.htm”,端口配置为"8080",则系统会定时执行检查"curl http://localhost:8080/checkpreload.htm",并判断http的返回码是否为200。若http get返回200,则认为健康检查成功,反之认为健康检查失败。

shell script:系统会定时执行脚本内容,若脚本执行的返回值为0(类似 exit 0)则认为健康检查成功,否则认为失败。

 

2. 如何排查部署一直不成功的问题?

在部署单详情页可以看到当前部署实例的日志。


image.png


点击查看日志可以看到当前容器的启动日志。

 

主要关注两个类型的日志:

 

1) [Event]类日志,如下图所示。尤其注意Event日志中的Warning,通常是导致部署不成功的原因所在。如下图所示就是健康检查配置错误导致的启动不成功。

 

image.png

 

2) 应用自身的启动日志。这里根据每个应用的不同,需要开发者自行排查。

 

image.png

 

3. 为什么我的应用一直在重启(应用实例远程连接一直闪断)?

请检查:应用的健康检查配置是否正确;

如果应用健康检查配置没有问题,就是应用自身不可用了,才会导致容器重启。(例如java堆内存泄漏导致java进程被cgroup干掉)

 

4. 从哪里可以看到容器内的应用日志?

可以在“环境管理->管理资源->远程登录”登录到对应的应用实例内,查看应用日志。


image.png


如果选择了官方镜像,官方镜像的应用日志通常在容器内/acs/log/目录下。

 

5. 为什么容器规格无法完全占用ECS的规格?

接入容器集群后,ECS上会额外部署一些管控使用的容器,因此会占用少量资源。但是总体占用资源并不会太大,如果出现容器可使用规格和ECS规格差距太大的情况,请联系技术支持同学。

 

6. 为什么SLB流量接入找不到负载均衡?

请确认几个事情:

1)所购买的SLB所属VPC和容器集群所属VPC是否相同(容器集群所属VPC在“运维中心”可以看到)。


image.png


2) 环境是否选择正确。通常环境会关联容器集群,正式环境和测试环境的集群不同,会影响到所属VPC,进而影响SLB的选择。


image.png


3) 确认内外网类型是否选择正确。内网访问只能选择购买的私网SLB,外网访问对应选择外网SLB。


image.png

 

4)不能使用集群自身使用的SLB。集群创建时会默认创建两个SLB,是给集群自身使用的,做流量接入需要另行购买。

点击此处查看创建集群

 

7. 购买ecs的时候需要购买公网带宽吗?还是公网带宽通过slb购买?

购买ecs的时候可以不购买带宽,公网入方向的话可以通过公网SLB来,出方向通过NAT网关和弹性IP来解决。

 

8. 程序包管理是什么意思?

这个程序包管理就是使用哪一个代码包发布,如果代码包有更新的话就是在发布管理里新建一个发布单。

 

9. Insufficient cpu  Insufficient memory

如果提示Insufficient cpu, 则说明集群cpu核数不足以支撑本次发布; 如果提示Insufficient memory, 则说明集群内存资源不足以支撑本次发布;

具体计算规则见创建集群文档常见问题的第11条。


FAQ

关于此文档暂时还没有FAQ
返回
顶部