在Serverless K8s集群中使用JAR包或WAR包部署应用

EDAS在云原生Kubernetes之上,全面集成了容器服务Kubernetes版,支持K8s容器化应用的全生命周期管理。Serverless Kubernetes适合快速伸缩的敏捷业务场景。本教程介绍如何在Serverless K8s集群中使用官方demo的JAR包或WAR包来部署应用。

背景信息

在Serverless K8s集群中部署应用,您需在容器服务Kubernetes版控制台中创建Serverless K8s集群,并将该集群导入到EDAS控制台,然后在导入的Serverless K8s集群中使用部署包或镜像来部署应用。

在K8s集群中部署应用流程图

前提条件

步骤一:创建Serverless Kubernetes集群

登录容器服务Kubernetes版控制台,创建Serverless Kubernetes集群。具体操作,请参见创建ASK集群

步骤二:在EDAS控制台中导入Serverless Kubernetes集群

在EDAS控制台导入容器服务K8s集群时,会默认安装应用防护(限流降级)组件(ack-ahas-sentinel-pilot)、ARMS监控组件(ack-arms-pilot)以及Prometheus监控组件(ack-arms-prometheus)。

  1. 登录EDAS控制台,在左侧导航栏选择资源管理 > Serverless K8s 集群

  2. 在顶部菜单栏选择地域,选择要导入集群的目标微服务空间,然后单击同步Serverless K8s集群

  3. 在导入的Serverless K8s集群的操作列,单击导入

  4. 警告对话框,单击确定

  5. 导入预检对话框,单击继续导入

  6. 导入Kubernetes集群对话框,从下拉列表中选择目标微服务空间,根据需要选择是否开启服务网格,然后单击导入

    当Serverless K8s集群状态显示为运行中,并且导入状态显示为导入成功时,表示容器服务Serverless K8s集群已成功导入到EDAS。

步骤三:在Serverless K8s集群中部署应用

说明

WAR和JAR的部署步骤一致,本文以通过JAR为例介绍如何部署应用。

  1. 登录EDAS控制台,在左侧导航栏单击应用管理 > 应用列表,在顶部菜单栏选择地域并在页面上方选择微服务空间,然后在应用列表页面左上角单击创建应用

  2. 应用基本信息页面中设置应用的集群类型和应用运行环境,然后单击下一步

    配置项

    描述

    集群类型

    选择Kubernetes集群

    应用来源类型

    选择默认

    应用运行环境

    托管应用类型

    本文介绍如何部署Java应用,所以选择Java。如果需要部署PHP或多语言应用,请参见从源码构建PHP应用并部署至容器服务K8s集群

    选择应用

    本文介绍如何通过JAR包或WAR包部署Java应用,所以请根据应用类型和部署包选择JavaTomcatEDAS-Container(HSF)。如果需要通过镜像部署应用,请参见在K8s集群中使用镜像部署Java微服务应用

    • Java:支持通用的JAR包部署,适用于Dubbo和Spring Boot应用。选择后,可设置Java环境

    • Tomcat:支持通用的WAR包部署,适用于Dubbo和Spring应用。选择后,可设置Java环境容器版本

    • EDAS-Container(HSF):适用于使用WAR或者FatJar部署HSF应用。选择后,可设置Java环境Pandora版本Ali-Tomcat版本

    说明

    OpenJDK 17支持2.7.14和3.0.6及以上版本的Dubbo。兼容性测试结果,请参见OpenJDK 17兼容测试数据

    表 1. OpenJDK 17兼容测试数据

    Dubbo版本

    Spring Boot版本

    Nacos-Client版本

    接口调用

    ARMS监控

    服务列表

    2.7.14

    2.7.9

    1.4.4

    OK

    OK

    OK

    2.7.14

    2.7.9

    2.1.2

    OK

    OK

    OK

    2.7.14

    2.7.9

    2.2.0

    OK

    OK

    OK

    2.7.22

    2.7.9

    1.4.4

    OK

    OK

    OK

    2.7.22

    2.7.9

    2.1.2

    OK

    OK

    OK

    2.7.22

    2.7.9

    2.2.0

    OK

    OK

    OK

    3.0.6

    2.7.9

    1.4.4

    OK

    OK

    OK

    3.0.6

    2.7.9

    2.1.2

    OK

    OK

    OK

    3.0.6

    2.7.9

    2.2.0

    OK

    OK

    OK

    3.1.7

    2.7.9

    1.4.4

    OK

    OK

    OK

    3.1.7

    2.7.9

    2.1.2

    OK

    OK

    OK

    3.1.7

    2.7.9

    2.2.0

    OK

    OK

    OK

  3. 应用配置页签中设置应用的环境信息、基本信息、部署方式和资源参数,设置完成后单击下一步

    配置项

    描述

    微服务空间

    应用所属空间。选择您创建的微服务空间,如果您未创建微服务空间或不做选择,微服务空间则设置为默认

    如果您没有创建微服务空间,或者需要创建新的微服务空间,您可以直接单击创建微服务空间,创建一个全新的微服务空间。具体操作,请参见使用控制台管理微服务空间

    集群

    在右侧下拉列表内选择已导入的容器服务K8s集群。

    如果您选择的K8s集群未导入到EDAS,请选中该集群在EDAS初次使用,勾选后,将会在应用创建时将该集群导入EDAS,因此会产生一定耗时。并确认是否开启服务网格。

    说明

    集群导入的微服务空间可以不是应用所属微服务空间。

    K8s Namespace

    K8s Namespace通过将系统内部的对象分配到不同的Namespace中,形成逻辑上分组的不同项目、小组或用户组,便于不同的分组在共享使用整个集群的资源的同时还能被分别管理。

    • default:没有其他命名空间的对象的默认命名空间。

    • kube-system:系统创建的对象的命名空间。

    • kube-public:此命名空间是自动创建的,并且可供所有用户(包括未经过身份验证的用户)读取。

    此处以选择default为例。

    如果您需要自定义创建K8s Namespace,请单击创建K8s Namespace并设置K8s Namespace名称。名称设置要求只能包含数字、小写字母和短划线(-),且首尾只能是字母或数字,长度为1~63个字符。

    应用名称

    输入应用名称,必须以字母开头,允许数字、字母、短划线(-)组合。最多可输入36个字符。

    应用描述

    输入应用描述 ,最大长度为128个字符。

    部署包来源

    自定义程序

    需选择文件上传方式

    • 上传JAR包:选择下载好的JAR包并上传。

    • JAR包地址:输入Demo包地址。

    官方Demo

    EDAS提供的Demo类型有Spring Cloud服务端应用Spring Cloud客户端应用Dubbo服务端应用Dubbo客户端应用,请依据实际需求选择。

    构建仓库类型

    说明
    • 构建仓库类型功能仅支持容器服务K8s集群下的Java、 Tomcat、EDAS-container(HSF)三种应用类型。暂不支持ASK集群。

    • 需要安装镜像免密拉取组件,具体操作,请参见使用免密组件拉取容器镜像

    • 使用您自己的阿里云镜像仓库企业版时,需要自行配置专有网络访问控制。具体操作,请参见配置专有网络的访问控制

    • 应用镜像构建过程是在您的集群内进行,并且会使用您的资源进行构建过程。单个构建任务的默认资源限制是1核1 GB。如何调整镜像构建资源限制,具体操作,请参见如何调整镜像构建资源限制?

    使用ACR个人版ACR企业版储存构建后的镜像时,构建任务会运行在集群中。构建任务拥有以下调度亲和性以及调度容忍策略。

    • 拒绝调度到有edas.image.build=disable标签的节点。

    • 偏向调度到有edas.image.build=enable标签的节点,但如果节点没有edas.image.build标签,构建任务也可能被调度到。

    • 容忍污点:key=edas.image.build, effect=NoSchedule

    说明
    • 对于不想要被构建任务调度到的节点,可以添加edas.image.build=disable标签。

    • 对于构建任务专用节点,可以添加edas.image.build=enable,以及污点key=edas.image.build, effect=NoSchedule标签,防止其他Pod被调度到该节点。

    ACR所属地域

    选择您的容器镜像所在的地域。该参数仅在构建仓库类型选择ACR企业版时需要配置。

    容器镜像服务

    选择您的容器镜像服务。该参数仅在构建仓库类型选择ACR企业版时需要配置。

    镜像仓库命名空间

    在下拉列表中选择您的镜像仓库所在的微服务空间,也可以单击单侧的+创建命名空间创建新的微服务空间。

    版本

    请输入版本,您可以自定义版本号,也可以单击右侧的用时间戳作为版本号自动生成版本号。

    时区

    设置应用的时区信息。

    OpenJDK基础镜像

    说明

    应用基本信息页面Java环境处,选择自定义OpenJDK时,参数OpenJDK基础镜像才会出现。

    配置镜像

    • 阿里云镜像服务选择当前账号

      选择镜像所属地域容器镜像服务镜像仓库命名空间镜像仓库名和镜像版本。

    • 阿里云镜像服务选择为其他阿里云账号。 如您的镜像存放在公开仓库中,那么您配置完整镜像地址即可。

      重要

      当前仅支持JDK7和JDK8,使用其他版本的JDK可能导致应用监控功能使用异常。EDAS服务端会拉取该镜像构建应用镜像,您需确保该镜像的拉取权限为公开。

    Pod总数

    设置该应用要部署的Pod个数。没有数量限制,上限取决于集群性能。

    单Pod资源配额

    设置单个Pod的CPU、内存和临时存储,如果您需要限额,请填写具体的数字,使用默认值0则代表不限额。没有配额限制,上限取决于集群性能。

  4. (可选)配置应用高级设置。

  5. 完成设置后单击创建应用,然后在应用创建完成页签,单击确定创建应用

  6. 应用变更预检确认对话框,单击开始预检

    1. 应用变更预检确认的下一页,确认预检项和预检结果,单击继续

    2. 可选:如您有更改以上预检项,请单击重新检测

    应用创建可能需要几分钟,创建过程中,可以通过查看变更记录跟踪应用的创建流程。创建完成后,返回应用总览页面,查看实例Pod的运行状态。若运行状态运行中,说明应用发布成功。单击Pod的运行状态可以查看应用实例的工作负载(Deployment)容器组(Pod)和高级配置信息。

后续步骤

应用创建完毕后,可以通过添加公网SLB实现公网访问,添加私网SLB实现同VPC内所有节点能够通过私网负载均衡访问您的应用。具体操作,请参见为Kubernetes集群中的应用添加负载均衡SLB

EDAS容器服务K8s和Serverless K8s交流群

如果您在EDAS中使用容器服务K8s集群和Serverless K8s集群过程中有任何疑问或建议,请使用钉钉搜索钉钉群号23197114加入钉钉群进行反馈。