在K8s集群中使用镜像部署Java微服务应用

EDAS在云原生K8s之上,全面集成了容器服务ACK,支持K8s容器化应用的全生命周期管理。容器服务ACK集成了阿里云虚拟机、存储、网络和安全等能力,拥有云端极佳的K8s容器化应用运行环境。本文介绍了如何在K8s集群中使用镜像部署Java微服务应用。

背景信息

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

K8s集群中创建应用流程

前提条件

步骤一:创建容器服务Kubernetes集群

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

如果创建Serverless Kubernetes集群,专有网络请选择自动创建(选择已有网络,创建完毕后请查看集群资源是否包含VPC和交换机资源),服务发现请选择PrivateZone,以便Serverless Kubernetes集群在导入EDAS后可以使用服务网格。具体操作,请参见创建ASK集群

步骤二:在EDAS控制台中导入容器服务K8s集群

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

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

  2. 在顶部菜单栏选择地域,然后单击同步容器服务Kubernetes集群

  3. 在导入的容器服务K8s集群的操作列,单击导入

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

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

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

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

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

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

    配置项

    描述

    集群类型

    选择Kubernetes集群。

    说明

    Kubernetes集群支持服务网格。

    应用来源类型

    选择默认

    应用运行环境

    托管应用类型

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

    选择应用

    应用的运行环境。不同托管应用类型,不同部署包类型,需要选择不同的Java应用环境。本文中选择自定义,即使用镜像部署Java应用。应用运行环境包含在镜像中,无需选择。

    说明

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

    表 2. 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个字符。

    镜像类型

    • 配置镜像

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

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

      • 阿里云镜像服务选择为其他阿里云账号

        • 如您的镜像存放在公开仓库中,那么您配置完整镜像地址即可。

        • 如您的镜像存放在私有仓库中,那么您需要使用免密插件拉取容器镜像,请参见使用免密组件拉取容器镜像

    • Demo镜像

      选择EDAS提供的Demo镜像和镜像版本。

      说明

      专有云暂不支持Demo镜像。

    说明

    如果您以RAM用户且使用企业版容器镜像仓库里的镜像创建应用时,需要阿里云账号为该RAM用户授权。具体信息,请参见RAM授权信息

    Pod总数

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

    单Pod资源配额

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

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

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

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

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

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

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

后续步骤

应用创建完毕后,可以通过添加公网SLB实现公网访问,添加私网SLB实现同VPC内所有节点能够通过私网负载均衡访问您的应用。相关操作,请参见添加负载均衡CLB复用负载均衡CLB

联系我们

如果您在EDAS中使用容器服务K8s集群和Serverless K8s集群过程中有任何疑问或建议,请加入钉群(钉群号:23197114)联系产品技术专家咨询处理。