AKS 应用服务对 Kubernetes 原生的 Deployment 做了能力增强,通过创建应用服务您可以定义容器服务的基本信息、访问策略、发布及调度策略等信息,为后续容器服务的部署做准备。
AKS 产品支持通过以下两种方式创建应用服务:
本文介绍创建应用服务的标准操作流程。通过应用商店的产品模板快捷地创建应用服务,请参见 产品发布。
前提条件
创建应用服务的标准流程分为以下 6 个步骤:
一、填写基本信息
登录容器应用服务控制台,在左侧导航栏单击 应用发布 > 应用服务。
在应用服务列表页,单击 创建。
在 创建应用服务 页面,填写以下基础信息,单击 下一步。
命名空间:选择一个集群中的命名空间(namespace),默认为 default。
应用服务名称:容器服务的名称。
所属应用:选择一个该容器服务所关联的应用。
有状态应用 app:默认关闭。有状态应用使用 StatefulSet 作为部署工作负载。
若开启,需配置数据卷模板,具体配置步骤如下:
单击 创建新模板。
在 创建数据卷模版 页面,填写以下信息后,单击 创建。
名称:输入模板名称。允许包含字母、数字、连字符,且必须以字母开头,以字母或数字结尾。
存储类型:用于指定支持的存储类别。支持 alicloud-disk-available、alicloud-disk-efficiency、alicloud-disk-essd、alicloud-disk-ssd、alicloud-disk-topology。
容量:输入大于 20 的整数。单位 Gi。
描述:选填。容器服务的描述。
二、Pod 模板配置
对 Pod 里的容器做详细的配置。完成基本选项配置和(可选)高级配置后,单击 下一步。
基本选项
容器名称:容器名称。允许包含小写字母、数字、连字符,且必须以小写字母开头,以小写字母或数字结尾。
镜像来源:支持 镜像仓库、构建记录 及 从包构建 三种方式。
镜像仓库:直接输入镜像仓库地址,比如:
registry-cnhz.cloud.alipay.com/aks/nginx:1.8
。构建记录:选择该类型来源时,会自动关联应用服务所属应用的构建,具体参见 镜像构建。
说明您可以选择 使用保密字典拉取镜像,参见 创建保密字典。
从包构建:支持上传指定技术栈应用(SOFABoot、Java 等)的代码包。系统会根据相关配置信息自动地进行镜像构建,并在后续的容器服务发布中使用系统构建的目标镜像进行发布。
技术栈:选择镜像技术栈,即构建基于的基础镜像。包括用户自定义的技术栈和官方提供的技术栈。详情参见 镜像技术栈。
技术栈版本:选择镜像技术栈的版本。
发布包:上传代码包,无格式限制。
目标镜像中的位置:代码包在构建镜像中的目录路径。需以
/
开头。系统会将发布包拷贝到基础镜像中用户指定的目录。基础镜像:根据所选择的技术栈及版本自动生成。
Dockerfile 预览:构建镜像的 Dockerfile 内容,派生自基础镜像,并只作发布包覆盖。
目标镜像仓库地址(自定义):构建出的镜像名称,此处填写目标镜像标签。系统会将构建出来的目标镜像按照此处定义的地址推送到镜像中心,供后续发布所用。
说明默认情况下,使用保密字典拉取镜像。若尚未创建保密字典,可单击 创建保密字典 链接进行创建。
默认情况下,会将构建出来的镜像推送到镜像仓库中,因此必须已在容器镜像服务(ACR)中 创建命名空间。
CPU 配置:设置容器使用的 CPU 的数量。请求核数 为能保证的最小核数,最大核数 为能使用的最大核数。换算方式:1 core = 1000 millicores。
内存配置:设置容器使用的内存的数量。请求内存 为能保证的最小内存数量,最大内存 为能使用的最大内存数量。换算方式:1024 bytes = 1 KiB;1024 KiB = 1 MiB;1024 MiB = 1 GiB;1024 GiB = 1 TiB。
启动命令:选填。用于指定容器启动时执行的命令。
高级配置
环境变量配置:设置在容器启动时传入应用进程的键值对,例如:
USER=tester
。数据卷配置:配置容器使用的数据卷,目前仅支持挂在当前容器所在宿主机的目录。
健康检查配置:包含两种检查机制:Readiness 和 Liveness。具体参见 Kubernetes Probe。
生命周期事件回调配置:为容器添加生命周期事件回调,分别在容器启动后和容器停止前执行。
日志服务配置:配置阿里云日志服务(SLS),可选择已有日志库或创建新的日志库。
业务实时监控:添加监控目录,可以在应用服务详情页查看容器的监控数据。
更多信息参见 高级配置说明。
三、伸缩配置
副本伸缩策略配置:目前仅支持 固定副本数,默认为 1,即应用服务运行时保持固定数目的 Pod 副本。配置完成后,单击 下一步。
四、访问配置(选填)
应用服务支持三种访问方式:集群内访问、内网访问、公网访问,您可以根据业务需要做好规划。
集群内访问
选择 集群内访问 会建一个 Cluster IP 类型的 Service,并将流量转发到容器的相应端口上。您可以在创建应用服务时设置访问方式,也可以应用服务创建完成后添加访问方式。
创建应用服务时添加访问方式
在 访问配置 页面,单击 创建服务。
在 创建服务 窗口,填写以下信息后,单击 提交。
服务名称:应用服务名称。
访问方式:选择 集群内访问。
端口映射:单击 +,填写以下信息。
协议:支持 TCP、UDP 协议。
访问端口:容器镜像中工作负载程序实际监听的端口,端口范围为 1~65535。
容器端口:容器端口映射到集群虚拟 IP 上的端口,用虚拟 IP 访问工作负载时使用,端口范围为 1~65535。
内网访问
创建一个内部的 Service,并将流量转发到容器的相应端口上。您可以在创建应用服务时设置访问方式,也可以应用服务创建完成后添加访问方式。
创建应用服务时设置访问方式
在 访问配置 页面,单击 创建服务。
在 创建服务 窗口,填写以下信息后,单击 提交。
服务名称:应用服务名称。
访问方式:选择 内网访问。
端口映射:单击 添加端口映射,填写以下信息。
协议:支持 TCP、 HTTP、HTTPS 协议。
说明TCP 协议下,默认开启健康检查,不可关闭。
转发规则:支持 按权重、按权重并且最小连接数。
前端端口:容器镜像中工作负载实际监听的端口,端口范围为 1~65535。
后端端口:容器端口映射到负载均衡实例上的端口,用负载均衡 IP 访问工作负载时使用,端口范围为 1~65535。
健康检查:若开启,根据选择的协议类型,需填写对应的配置项。
公网访问
配置外部 Service 会创建一个公网的 LoadBalancer,并将流量转发到容器的相应端口上。访问方式由公网负载均衡服务地址以及设置的访问端口组成,例如 10.117.117.117:80
。
创建应用服务时设置访问方式
在 访问配置 页面,单击 创建服务。
在 创建服务 窗口,填写以下信息后,单击 提交。
服务名称:应用服务名称。
访问方式:选择 公网访问。
端口映射:单击 添加端口映射,填写以下信息。
协议:支持 TCP、HTTP、HTTPS 协议。本例中选择 TCP。
说明TCP 协议下,默认开启健康检查,不可关闭。
转发规则:支持 按权重、按权重并且最小连接数。
前端端口:容器镜像中工作负载实际监听的端口,端口范围为 1~65535。
后端端口:容器端口映射到负载均衡实例上的端口,用负载均衡 IP 访问工作负载时使用,端口范围为 1~65535。
健康检查:若开启,根据选择的协议类型,需填写对应的配置项。
五、部署和调度配置(选填)
您可以自定义部署和调度配置,若不修改,发布应用服务时,系统会使用默认配置。
该配置项用于配置容器服务在部署时需要用到的信息,包括以下内容:
升级模式:
原地升级:默认选项。保持 Pod 不变,IP 不会更改。若选择 原地升级,则不能开启 服务网格。
说明原地升级在敏捷 PaaS 底座的专有云场景和 ACK 集群的公有云场景下会做能力降级:仅升级镜像时,Pod IP 能保持不变,其他变更如环境参数等,会通过滚动升级的方式用新 Pod 替换掉旧 Pod。
替换升级:会用新的 Pod 替换老的 Pod,类似原生 Deployment 的 RollingUpdate 策略。
说明若服务部署后切换升级模式,会造成服务短暂不可用。
部署单元:该配置限定了容器服务的 Pod 只能调度到打了所选中部署单元标签的节点上。默认选中所有部署单元。
部署分组策略:指定发布容器服务时 Pod 的分组策略,有以下几种策略,默认为快速分组。
快速分组:分组进行发布,并且尽量让每一组的 Pod 都平均分布在每个部署单元。
每个 Pod 一组:每组一个 Pod,有几个 Pod 就分几组。
共分一组:所有 Pod 在一组中进行发布。
最小分组数:该选项仅在快速分组时设置。默认为 3。仅当副本数量大于等于该值时生效。每组副本数最多 20 个。
说明最小分组数是发布时分组的参考值,实际分组数受发布时 Pod 在部署单元的分布情况影响。
添加 Beta 分组:发布时选取部分 Pod 先行发布,待确认无异常后继续发布。默认选中该选项。
选择 添加 Beta 分组 后,发布时会给应用服务设置一个特殊的 Beta 分组,在该组中,系统会在每个部署单元选择一个 Pod,Beta 分组会在第一组发布。
Beta 分组发布完成后系统会自动暂停应用服务发布,等待系统负责人或者运维工程师对应用服务的发布情况进行确认。若容器服务发布正常,则单击 Beta 分组确认,使应用服务继续分组发布。
Beta 分组可以与所有分组策略共同决定分组。创建新的发布申请时,默认选中 添加 Beta 分组。
分组暂停:每组发完后暂停发布,确认发布后继续发布。默认选中该选项。
Pod 调度策略:目前支持 按部署单元平均分配。
说明该选项仅在容器服务有多个部署单元时有效。当某个部署单元资源不足以调度平均的 pod 数目时,该部署单元上的 pod 会被动态调整到其他单元。
应用服务与节点亲和性配置:添加应用服务在节点级别的亲和性配置。可以通过 node 标签来限定应用服务可以调度的节点范围。
说明亲和性需要 Pod 重新创建才会生效。首次发布时,亲和性配置一定会生效,后续发布时,必须选择替换升级方式,才能让亲和性配置生效。
应用服务间亲和性配置:添加应用服务在 Pod 级别的亲和性配置。通过选择与某些应用服务在相同或不同的节点来限定应用服务可以调度的节点范围。
说明亲和性需要 Pod 重新创建才会生效。首次发布时,亲和性配置一定会生效,后续发布时,必须选择替换升级方式,才能让亲和性配置生效。
注入SOFAMesh:需集群开启服务网格功能。开启引流配置时,每次发布会按所设置的引流规则转发流量到新版本,也可在发布过程中配置。开启后需填写引流比例,系统按所设置的比例转发流量到新发布的版本,以及引流的目标服务。
六、预览并提交
在应用服务 预览 页面,确认信息无误,单击 提交。
提交前,您可以单击修改图标对应用服务信息进行修改。
应用服务提交后处于 待部署 状态,需要单击 发布 才会将应用服务部署到集群中。