本文介绍如何在EDAS控制台创建有状态StatefultSet类型的应用。
前提条件
您的阿里云账号已同时开通EDAS和容器服务Kubernetes版。具体操作,请参见开通EDAS和首次使用容器服务Kubernetes版。
已创建微服务空间。具体操作,请参见创建微服务空间。
已在容器服务Kubernetes版完成角色授权。具体操作,请参见容器服务ACK服务角色。
背景信息
StatefulSet包括以下特性:
场景 | 说明 |
Pod一致性 | 包含次序(启动、停止次序)、网络一致性。此一致性与Pod相关,与被调度到哪个Node节点无关。 |
稳定的持久化存储 | 通过VolumeClaimTemplate为每个Pod创建一个PV。删除、减少副本,不会删除相关的卷。 |
稳定的网络标志 | Pod的 |
稳定的次序 | 对于N个副本的StatefulSet,每个Pod都在 [0,N)的范围内分配一个数字序号,且是唯一的。 |
步骤一:创建容器服务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)。
登录EDAS控制台,在左侧导航栏,选择 。
在顶部菜单栏选择地域,然后单击同步容器服务Kubernetes集群。
在导入的容器服务K8s集群的操作列,单击导入。
在导入预检对话框,单击继续导入。
在导入Kubernetes集群对话框,从下拉列表中选择目标微服务空间,根据需要选择是否开启服务网格,然后单击导入。
当容器服务K8s集群状态显示为运行中,并且导入状态显示为导入成功时,表示容器服务K8s集群已成功导入到EDAS。
步骤三:在容器服务K8s集群中部署应用
登录EDAS控制台,在左侧导航栏单击 ,在顶部菜单栏选择地域并在页面上方选择微服务空间,然后在应用列表页面左上角单击创建应用。
在应用基本信息页面中设置应用的集群类型和应用运行环境,然后单击下一步。
配置项
描述
集群类型
选择Kubernetes集群。
工作负载类型
选择有状态(StatefulSet)。
应用运行环境
托管应用类型
本文介绍如何部署Java应用,所以选择Java。 如果需要部署PHP或多语言应用,请参见从源码构建PHP应用并部署至容器服务K8s集群。
选择应用
本文介绍如何通过JAR包或WAR包部署Java应用,所以请根据应用类型和部署包,选择Java、Tomcat或EDAS-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兼容测试数据。
在应用配置页签中设置应用的环境信息、基本信息、部署方式和资源参数,设置完成后单击下一步。
配置项
描述
微服务空间
应用所属空间。选择您创建的微服务空间,如果您未创建微服务空间或不做选择,微服务空间则设置为默认。
如果您没有创建微服务空间,或者需要创建新的微服务空间,您可以直接单击创建微服务空间,创建一个全新的微服务空间。具体操作,请参见使用控制台管理微服务空间。
集群
在右侧下拉列表内选择已导入的容器服务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则代表不限额。没有配额限制,上限取决于集群性能。
(可选)配置应用高级设置。
完成设置后单击创建应用,然后在应用创建完成页签,单击确定创建应用。
在应用变更预检确认对话框,单击开始预检。
在应用变更预检确认的下一页,确认预检项和预检结果,单击继续。
可选:如您有更改以上预检项,请单击重新检测。
应用创建可能需要几分钟,创建过程中,可以通过查看变更记录跟踪应用的创建流程。创建完成后,返回应用总览页面,查看实例Pod的运行状态。若运行状态为运行中,说明应用发布成功。单击Pod的运行状态可以查看应用实例的工作负载(Deployment)、容器组(Pod)和高级配置信息。
后续步骤
应用创建完毕后,可以通过添加公网SLB实现公网访问,添加私网SLB实现同VPC内所有节点能够通过私网负载均衡访问您的应用。相关操作,请参见添加负载均衡CLB或复用负载均衡CLB。
OpenJDK 17兼容测试数据
Dubbo版本 | Spring Boot版本 | Nacos-Client版本 | 接口调用 | ARMS监控 | 服务列表 |
2.7.14 | 2.7.9 | 1.4.4 | 正常 | 正常 | 正常 |
2.7.14 | 2.7.9 | 2.1.2 | 正常 | 正常 | 正常 |
2.7.14 | 2.7.9 | 2.2.0 | 正常 | 正常 | 正常 |
2.7.22 | 2.7.9 | 1.4.4 | 正常 | 正常 | 正常 |
2.7.22 | 2.7.9 | 2.1.2 | 正常 | 正常 | 正常 |
2.7.22 | 2.7.9 | 2.2.0 | 正常 | 正常 | 正常 |
3.0.6 | 2.7.9 | 1.4.4 | 正常 | 正常 | 正常 |
3.0.6 | 2.7.9 | 2.1.2 | 正常 | 正常 | 正常 |
3.0.6 | 2.7.9 | 2.2.0 | 正常 | 正常 | 正常 |
3.1.7 | 2.7.9 | 1.4.4 | 正常 | 正常 | 正常 |
3.1.7 | 2.7.9 | 2.1.2 | 正常 | 正常 | 正常 |
3.1.7 | 2.7.9 | 2.2.0 | 正常 | 正常 | 正常 |