创建应用服务

LHC 应用服务对 Kubernetes 原生的 Deployment 做了能力增强,您可以通过创建应用服务定义容器服务的基本信息、访问策略、发布及调度策略等信息,为后续容器服务的部署做准备。

前提条件

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

  1. 填写基本信息

  2. Pod 模板配置

  3. 弹性配置

  4. 访问配置

  5. 部署和调度配置

  6. 预览并提交

一、填写基本信息

  1. 登录控制台,在左侧导航栏单击 发布运维 > 应用服务

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

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

    • 命名空间:选择命名空间,默认为列表第一个。

    • 应用服务名称:容器服务的名称。服务实例名称允许包含(小写)字母、数字、连字符,且必须以字母开头,以字母或数字结尾。同一个工作空间组下不允许同名。

    • 所属应用:选择一个该容器服务所关联的应用。

    • 描述:选填。容器服务的描述。

二、Pod 模板配置

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

1

基本选项

  • 容器名称:容器名称。

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

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

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

      说明

      目前暂不支持 构建记录。如有需要,请提交工单进行处理。

    • 使用保密字典:若该镜像属于私有镜像,需要访问认证,您可以开启 使用保密字典 拉取镜像若尚未创建保密字典,可单击创建保密字典,详情请参见 创建保密字典

  • 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),可选择已有日志库或创建新的日志库。

    说明

    首次使用日志服务配置功能,需前往 日志服务控制台 开启配置索引。详情请参见 配置索引。

更多信息参见 高级配置

配置覆盖

您可以为每个部署单元单独设置环境变量,覆盖应用服务中的默认配置,但仅针对于手动输入类型的环境变量。

三、弹性配置

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

  • 固定副本数:默认为 0,可勾选部署单元并修改为期望副本数,即应用服务运行时保持固定数目的 Pod 副本。

  • 弹性扩缩容:可对应用服务自动伸缩进行如下弹性规则配置。

    1
    • 固定副本数:默认为 0,可勾选部署单元并修改为期望副本数。

    • 最小副本数:弹性扩缩容时 Pod 的最小副本数。

    • 最大副本数:弹性扩缩容时 Pod 的最大副本数。

    • 规则:当前伸缩规则基于的指标类型。单击 + 添加配置,配置以下选项。

      1
      • 规则类型:当前伸缩规则基于的规则类型,目前支持 CPUMemoryQPS响应时间

      • 目标类型:当前伸缩规则基于的指标类型所期望达到的值的类型,目前支持 使用率 平均资源使用。

      • 使用率/平均值:输入使用率/平均值。

      • 单位:无需输入,根据所选的规则类型自动匹配。

    • 高级配置:默认关闭 开-文字备份。如果开启 开-文字,需要完成以下选项配置。

      2
      • 幅度:可以通过设置按百分比或指定个数来调整扩缩容的速率,单位为百分比或个数。

      • 间隔时间:上次扩缩容操作与本次扩缩容操作之间的时间间隔,单位为秒。

      • 冷却时间:冷却扩缩容操作的时间,即完成一次扩缩容操作之后不再次触发扩缩容操作的时间窗口,单位为秒。

        说明

        一个扩缩容活动执行完成后,在设定的冷却时间内不执行其他扩缩容活动。

四、访问配置(选填)

应用服务支持统一接入及负载均衡两种访问方式。负载均衡是基于端口的请求负载均衡,统一接入是基于规则的请求负载均衡。您可以根据业务需要做好规划。

负载均衡

您可以在创建应用服务时设置访问方式,也可以应用服务创建完成后添加访问方式。

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

  1. 访问配置 页面,单击 添加负载均衡

  2. 负载均衡 配置中,填写以下信息后,单击 下一步

    • 负载均衡名称:填写服务名称。系统默认生成服务名称前缀为 应用服务名称-。服务名称允许包含(小写)字母、数字、连字符且必须以字母开头、以字母或者数字结尾。

    • 访问方式:选择负载均衡服务的访问方式。支持以下选项:

      • 内网:创建一个内网的 LoadBalancer,并将流量转发到容器的相应端口上。

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

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

      • 协议:支持 TCP HTTPHTTPS 协议。

      • 转发规则:支持 RR 轮询WLC 最小连接数

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

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

      • 带宽:单位为 Mbps,默认值为 -1,表示无限制。支持 -1 或 1~5120 范围内的整数。

      • HTTP 健康检查:HTTP 模式的健康检查是通过发送 HEAD 或 GET 请求模拟浏览器的访问行为来检查后端 Pod 是否健康。若开启,需填写以下的配置项。

        说明

        TCP 端口默认开启 TCP 健康检查,此处可按需开启额外 HTTP 健康检查。

        • URL:指定具体的检查路径。

        • 域名:非必填。如果您的应用 Pod 需要校验请求的 host 字段,则需要配置相关域名,确保健康检查正常工作。若在健康检查中配置了域名,SLB 会将域名配置到 host 字段中去;反之,如果没有配置域名,SLB 则不会在请求中附带 host 字段,因此健康检查请求就会被服务器拒绝,可能导致健康检查失败。

        • 端口:健康检查服务访问后端 Pod 时的探测端口。端口范围 1~65535。

        • 超时时间(s):接收响应需要等待的时间。如果后端 Pod 在指定的时间内没有正确响应,则判定为健康检查失败。默认为 3 秒。

        • 时间间隔(s):负载均衡的健康检查请求进行健康检查的时间间隔。默认值为 5 秒。

        • http 健康状态码:选择健康检查正常的 HTTP 状态码。默认值为 http_2xx

      • 会话保持:开启会话保持后,负载均衡监听会把来自同一客户端的访问请求分发到同一台后端 Pod 上。

        HTTP 协议会话保持基于 Cookie。负载均衡提供了两种 Cookie 处理方式:

        • 植入 Cookie:您只需要指定 Cookie 的过期时间。客户端第一次访问时,负载均衡会在返回请求中植入Cookie(即在 HTTP 或 HTTPS 响应报文中插入 SERVERID),下次客户端携带此 Cookie 访问,负载均衡服务会将请求定向转发给之前记录到的后端服务器上。

        • 重写 Cookie:可以根据需要指定 HTTPS 或 HTTP 响应中插入的 Cookie。您需要在后端 Pod 上维护该 Cookie 的过期时间和生存时间。

          负载均衡服务发现用户自定义了 Cookie,将会对原来的 Cookie 进行重写,下次客户端携带新的 Cookie 访问,负载均衡服务会将请求定向转发给之前记录到的后端 Pod。详情请参见 会话保持规则配置

统一接入

统一接入 支持配置转发规则,将流量转发到容器的相应端口上。您可以在创建应用服务时设置访问方式,也可以应用服务创建完成后添加访问方式。

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

  1. 访问配置 页面,单击 添加统一接入

  2. 统一接入 配置中,填写以下信息后,单击 下一步

    • 服务名称:填写服务名称。系统默认生成服务名称前缀为 应用服务名称-。服务名称允许包含(小写)字母、数字、连字符、且必须以字母开头、以字母或者数字结尾。

    • 所属统一接入实例:选择已创建的统一接入实例。详情参见 创建统一接入实例

    • 接入协议:选择统一接入实例上支持的协议,一般有 HTTPHTTPS

    • 路由模式:选择 单元化非单元化。选择单元化代表为这个统一接入开启单元化转发的能力,即会根据请求 Cookie 里的特定 uid 进行单元化切片,每个 zone 处理固定区间的用户请求;非单元化代表随机分发。

    • 统一接入规则:单击 添加统一接入规则 转发规则,填写以下信息。

      • 域名:填写需要转发的请求域名。

      • 后端端口:选择容器镜像中工作负载程序实际监听的端口,端口范围为 1~65535。

      • 转发路径:请求转发到的具体容器路径地址。默认为根目录。

      注意

      添加或删除已有转发规则都会导致发布时线上服务不可用。

五、部署和调度配置(选填)

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

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

  • 是否使用 Beta 验证:发布时选取部分 Pod 先行发布,待确认无异常后继续发布。默认开启。

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

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

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

  • 部署分组策略:指定发布容器服务时 Pod 的分组策略,支持以下几种策略,默认为 按部署单元分组

    • 按部署单元分组:在发布时按部署单元维度做发布。会将 Pod 尽量均匀分布在各个部署单元中。

    • 每个 Pod 一组:每组一个 Pod,有几个 Pod 就分几组。

    • 共分一组:所有 Pod 在一组中进行发布。

    • 快速分组:在发布时按照组的维度进行发布。

  • 最小分组数:分组策略选择 按部署单元分组 快速分组 时需设置。

    说明

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

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

  • 自定义标签:发布应用服务时,将会以 label 的形式发布在 Pod 上。以 key=value 的格式输入,多个 label 间用英文逗号分隔。

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

    说明

    亲和性需要 Pod 重新创建才会生效。首次发布时,亲和性配置一定会生效,后续发布时,必须选择替换升级方式,才能让亲和性配置生效。

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

    说明

    亲和性需要 Pod 重新创建才会生效。首次发布时,亲和性配置一定会生效,后续发布时,必须选择替换升级方式,才能让亲和性配置生效。

  • 注入 SOFAMesh:需集群开启 Mesh 功能。开启引流配置时,每次发布会按所设置的引流规则转发流量到新版本,也可在发布过程中配置。开启后,会为应用服务开启服务网格功能,可以在服务网格控制台对应用服务进行管控和治理。

六、预览并提交

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

说明
  • 提交前您可以单击修改图标对应用服务信息进行修改。

  • 应用服务提交后处于 待部署 状态,需要单击 发布 才会将应用服务部署到集群中。