全部产品
云市场

创建应用服务

更新时间:2020-01-10 10:42:23

前提条件

创建应用服务的过程分为以下 6 个步骤:

  1. 填写基本信息

  2. Pod 模板配置

  3. 伸缩配置

  4. 访问配置

  5. 部署和调度配置

  6. 预览并提交

一、填写基本信息

  1. 登录容器应用服务控制台,在左侧导航栏点击 应用发布

  2. 在应用服务列表页,点击 创建

  3. 创建应用服务 页面,填写以下基础信息,点击 下一步

    • 命名空间:选择一个集群中的命名空间(namespace),默认为 default。
    • 应用服务名称:容器服务的名称。
    • 所属应用:选择一个该容器服务所关联的应用。
    • 有状态应用:有状态应用使用 StatefulSet 作为部署工作负载。默认关闭。 StatefulSet 需要配置数据卷存储,需提前 创建存储类型(StorageClass)。点击 创建新模板,并须填写以下参数:
      • 名称:输入模板名称。名称允许包含(小写)字母、数字、连字符,且必须以字母开头,并以字母或者数字结尾。
    • 负责人:选择一个用户作为负责人,默认为应用创建人。
    • 描述:选填。容器服务的描述。

二、Pod 模板配置

对 Pod 里的容器做详细的配置。

基本选项

  • 名称:容器名称。

  • 镜像来源:支持 镜像仓库构建记录从包构建 三种方式。

    • 镜像仓库:直接输入镜像仓库地址,比如:registry-cnhz.cloud.alipay.com/aks/nginx:1.8

    • 构建记录:选择该类型来源时,会自动关联应用服务所属应用的构建,具体参见 镜像构建

      说明:您可以选择 使用保密字典拉取镜像,参见 创建保密字典

    • 从包构建:支持指定技术栈应用(SOFABoot、Java 等)以代码包形式发布,自动进行镜像构建。

      • 发布包:上传代码包,无格式限制。
      • 目标镜像中的位置:代码包在构建镜像中的目录路径。需以 / 开头。
      • 基础镜像:构建基于的基础镜像。默认为 reg-cnsh-nf.cloud.alipay.com/library/sofaboot-runtime:2.0_java8, 您可根据需要修改为自定义的镜像地址。
      • dockerfile 预览:构建使用的 dockerfile 预览。
      • 目标镜像仓库地址(自定义):构建出的镜像名称,此处可填写镜像 tag。 默认必须使用保密字典拉取镜像。若尚未创建保密字典,可点击 创建保密字典 链接进行创建。
  • 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
  • 生命周期事件回调配置:为容器添加生命周期事件回调,分别在容器启动后和容器停止前执行。
  • 日志服务配置:配置蚂蚁日志服务,可选择已有日志库或创建新的日志库。
  • 业务实时监控目录:目录内容将被 xflush sidecar 容器以只读方式共享。

更多信息参考 高级配置说明

三、伸缩配置

  • 副本伸缩策略配置:支持以下两种弹性策略。

    • 固定副本数:默认为 1,可修改为期望值。应用服务运行时保持固定数目的 Pod 副本。
    • 定时弹性伸缩:可对容器自动伸缩进行如下弹性规则配置。您可以添加多条弹性伸缩规则。

      • 初始副本数:仅在应用服务首次发布时生效。
      • 最小副本数:弹性扩缩容时 Pod 的最小副本数。
      • 最大副本数:弹性扩缩容时 Pod 的最大副本数。
      • 定时弹性伸缩:点击 添加定时策略,填写以下参数:

        • 定时策略名称:仅能以小写字符、数字和-组成,不能以数字和-开头,并在 2~50 个字符之间。
        • 激活时间:可设置具体时间点或输入 Cron 表达式。可点击 高级选项 设置策略生效持续时长及优先级。默认情况下,所设置的策略会生效到有其他策略生效为止,这类策略的优先级只能是 0。若选择持续生效一段时间,优先级可设置为 1 到正无穷大。数值越大,优先级越高。

          说明:当某个时间点有多个策略同时生效且优先级相同时,生效的策略是字母序最前的(00 优先于aa 优先于 ab)。

        • 伸缩策略:支持 预设副本数伸缩指标动态伸缩

          • 当在 高级选项 中设定了某个策略生效的持续时长,且伸缩策略为 预设副本数伸缩 时,您还可以配置额外的伸缩选项:该时间段内副本数的渐变范围以及渐变方式(线性、渐快、渐慢)。
          • 当伸缩策略为 指标动态伸缩 时,需配置扩缩容指标。可选择的扩缩容指标为:cpu_util 和 mem_util,即 CPU 使用率或内存使用率(单位是百分比)。AKS 会从监控系统读取属于 APP 的指标,并根据指标数字来计算副本数。计算方法是:实际使用值除以期望值等于期待副本数。

            例如:期望值配置了 cpu_util 为 20,监控中获得实际 cpu_util 为 60,则通过 60/20=3 来算出期待副本数为 3。当同时配置了多个指标,会对每个指标进行这样的操作来算出一个期待副本数。并将这些结果取最大值,作为实际应用的副本数。例如:cpu_util 期望值配置 20,实际值为 60;mem_util 期望值配置 10,实际值为 50;则 cpu_util 计算结果 60/20=3,mem_util 计算结果 50/10=5,最终副本数为 max(3,5)=5。

          • 副本曲线预览:提供了直观的可视化工具,帮助您直观地确认规则是否配置正确。

四、访问配置

应用服务支持三种访问方式:集群内访问、VPC 内访问、公网访问,您可以根据业务需要做好规划。

集群内访问

选择 集群内访问 会建一个 Cluster IP 类型的 Service,并将流量转发到容器的相应端口上。您可以在创建应用服务时设置访问方式,也可以应用服务创建完成后添加访问方式。

创建应用服务时添加访问方式

  1. 访问配置 页面,点击 添加服务

  2. 添加服务 窗口,填写以下信息后,点击 确定

    • 服务名称:应用服务名称。

    • 访问方式:选择 集群内访问

    • 端口映射:点击 添加端口映射,填写以下信息。

      • 协议:支持 TCP、UDP 协议。

      • 访问端口:容器镜像中工作负载程序实际监听的端口,端口范围为 1-65535。

      • 容器端口:容器端口映射到集群虚拟 IP 上的端口,用虚拟 IP 访问工作负载时使用,端口范围为 1-65535。

VPC 内网访问

创建一个内部的 Service,并将流量转发到容器的相应端口上。您可以在创建应用服务时设置访问方式,也可以应用服务创建完成后添加访问方式。

创建应用服务时设置访问方式

  1. 访问配置 页面,点击 添加服务

  2. 添加服务 窗口,填写以下信息后,点击 确定

    • 服务名称:应用服务名称。

    • 访问方式:选择 VPC 内网访问

    • 负载均衡:选择已有负载均衡,或者 创建负载均衡

    • 端口映射:点击 添加端口映射,填写以下信息。

      • 协议:支持 TCP、 UDP、HTTP、HTTPS 协议。
      • 转发规则:支持 按权重按权重并且最小连接数轮询
      • 前端端口:容器镜像中工作负载实际监听的端口,端口范围为 1-65535。
      • 后端端口:容器端口映射到负载均衡实例上的端口,用负载均衡 IP 访问工作负载时使用,端口范围为 1-65535。
      • 峰值带宽:单位为 Mbps。
      • 健康检查:若开启健康检查,需填写 健康检查端口和路径、健康检查端口、健康检查间隔时间、域名(可选)。

公网访问

配置外部 Service 会创建一个公网的 LoadBalancer,并将流量转发到容器的相应端口上。访问方式由公网负载均衡服务地址以及设置的访问端口组成,例如 10.117.117.117:80

创建应用服务时设置访问方式

  1. 访问配置 页面,点击 添加服务

  2. 添加服务 窗口,填写以下信息后,点击 确定

    • 服务名称:应用服务名称。

    • 访问方式:选择 公网访问

    • 负载均衡:选择已有负载均衡或者 创建负载均衡

    • 端口映射:点击 添加端口映射,填写以下信息。

      • 协议:支持 TCP、 UDP、HTTP、HTTPS 协议。

      • 转发规则:支持 按权重按权重并且最小连接数轮询

      • 前端端口:容器镜像中工作负载实际监听的端口,端口范围为 1-65535。

      • 后端端口:容器端口映射到负载均衡实例上的端口,用负载均衡 IP 访问工作负载时使用,端口范围为 1-65535。

      • 峰值带宽:开启并填写峰值带宽值,单位为 Mbps。

      • 健康检查:若开启,需填写 健康检查端口和路径、健康检查端口、健康检查间隔时间、域名(可选)。

五、部署和调度配置

您可以自定义部署和调度配置,若不修改,发布应用服务时,系统会使用默认配置。

该配置项用于配置容器服务在部署时需要用到的信息,包括以下内容:

  • 升级模式

    • 原地升级:保持 Pod 不变,IP 不会更改。
    • 替换升级,会用新的 Pod 替换老的 Pod,类似原生 Deployment 的 RollingUpdate 策略。

      说明:若服务部署后切换升级模式,会造成服务短暂不可用。

  • 部署单元:该配置限定了容器服务的 Pod 只能调度到打了所选中部署单元标签的节点上。默认选中所有部署单元。

  • 部署分组策略:指定发布容器服务时 Pod 的分组策略,有以下几种策略,默认为快速分组。

    • 快速分组:分组进行发布,并且尽量让每一组的 Pod 都平均分布在每个部署单元。
    • 每个 Pod 一组:每组一个 Pod,有几个 Pod 就分几组。
    • 共分一组:所有 Pod 在一组中进行发布。
  • 最小分组数:该选项仅在快速分组时设置。默认为 3。

    说明:最小分组数是发布时分组的参考值,实际分组数受发布时 Pod 在部署单元的分布情况影响。

  • 添加 Beta 分组:发布时选取部分 Pod 先行发布,待确认无异常后继续发布。默认开启。

    开启 Beta 分组后,发布时会给应用服务设置一个特殊的 Beta 分组,在该组中,系统会在每个部署单元选择一个 Pod,Beta 分组会在第一组发布。

    • Beta 分组发布完成后系统会自动暂停应用服务发布,等待系统负责人或者运维工程师对应用服务的发布情况进行确认。若容器服务发布正常,则点击 Beta 分组确认,使应用服务继续分组发布。

    • Beta 分组可以与所有分组策略共同决定分组。创建新的发布申请时,默认开启 添加 Beta 分组,此时同一个发布单上的所有应用服务都设置 Beta 分组。

  • 分组暂停:每组发完后暂停发布,确认发布后继续发布。默认开启。

  • Pod 调度策略:目前支持 按部署单元平均分配

    说明:该选项仅在容器服务有多个部署单元时有效。当某个部署单元资源不足以调度平均的 pod 数目时,该部署单元上的 pod 会被动态调整到其他单元。

  • 应用服务与节点亲和性配置:添加应用服务在节点级别的亲和性配置。可以通过 node 标签来限定应用服务可以调度的节点范围。

    说明:亲和性需要 Pod 重新创建才会生效。所以在原地升级场景,Pod 不会重新调度让亲和性生效。

  • 应用服务间亲和性配置:添加应用服务在 Pod 级别的亲和性配置。通过选择与某些应用服务在相同或不同的节点来限定应用服务可以调度的节点范围。

    说明:亲和性需要 Pod 重新创建才会生效。所以在原地升级场景,Pod 不会重新调度让亲和性生效。

  • 注入 SOFAMesh:需集群开启 Mesh 功能。开启引流配置时,每次发布会按所设置的引流规则转发流量到新版本,也可在发布过程中配置。开启后需填写引流比例,系统按所设置的比例转发流量到新发布的版本,以及引流的目标服务。

  • 节点自动伸缩:需集群 开启节点伸缩 功能。选择开启该功能会将 Pod 部署在具有自动扩缩容能力的弹性节点上,根据伸缩规则自动扩缩容。

六、预览并提交

在应用服务 预览 页面,确认信息无误,点击 提交

说明

  • 提交前您可以点击修改图标对应用服务信息进行修改。
  • 应用服务提交后处于 待部署 状态,需要点击 发布 才会将应用服务部署到集群中。