帮助文档 Logo
平台使用
阿里云
百度云
移动云
智算服务
教育生态
登录 →
帮助文档 Logo
平台使用 阿里云 百度云 移动云 智算服务 教育生态
登录
  1. 首页
  2. 阿里云
  3. ACK Serverless集群
  4. 操作指南
  5. Knative
  6. Knative服务管理
  7. 基于流量灰度发布服务

基于流量灰度发布服务

  • Knative服务管理
  • 发布于 2025-04-18
  • 0 次阅读
文档编辑
文档编辑

Knative会管理不同Revision(修订版本)之间的流量分配。您可以在控制台为不同Revision设定版本对应的流量比例,然后不断调整流量比例进行观察,直到100%的业务流量全部切流至新版本服务,以完成灰度发布服务。

前提条件

已在集群中部署Knative,请参见部署Knative。

步骤一:创建Knative服务

  1. 登录容器服务管理控制台,在左侧导航栏选择集群列表。

  2. 在集群列表页面,单击目标集群名称,然后在左侧导航栏,选择应用 > Knative。

  3. 在Knative页面的服务管理页签下,选择命名空间为default,然后单击创建服务,部署一个名为helloworld-go的服务,部署完成后单击创建。

    关键配置项如下所示,更多配置项信息,请参见部署Knative服务。

    配置项

    说明

    命名空间

    选择该服务所属的命名空间。

    服务名称

    自定义该服务的名称,本例服务名称为helloworld-go。

    镜像名称

    您可以单击选择镜像,在弹出的对话框中选择所需的镜像并单击确定。您还可以填写私有registry。填写的格式为domainname/namespace/imagename:tag。本例中为registry.cn-hangzhou.aliyuncs.com/knative-sample/helloworld-go。

    镜像版本

    您可以单击选择镜像版本选择镜像的版本。若不指定,默认为latest。本例中镜像版本为73fbdd56。

    访问协议

    支持HTTP和gRPC两种访问协议。

    说明

    说明

    gRPC是基于HTTP2协议标准设计和ProtoBuf(Protocol Buffers)序列化协议开发的,且支持众多开发语言。与HTTP相比,HTTP2在发送和接收方面更紧凑和高效。

    容器端口

    设置暴露的容器访问端口,端口号必须介于1~65535。

    若目标服务的状态列显示成功,表明服务已部署成功。

  4. 在服务管理页面的默认域名和访问网关列,分别获取helloworld-go服务的域名和网关地址。

  5. 执行以下命令,访问helloworld-go服务。

    curl -H "host: <默认域名>" http://<访问网关IP> # 网关IP和默认域名请以您的实际数据为准。

    预期输出:

    Hello World!

    预期输出表明,服务已创建成功并可以正常访问。

步骤二:通过创建修订版本灰度发布服务

  1. 登录容器服务管理控制台,在左侧导航栏选择集群列表。

  2. 在集群列表页面,单击目标集群名称,然后在左侧导航栏,选择应用 > Knative。

  3. 创建修订版本。

    1. 选择服务管理页签,然后单击目标服务右侧操作列下的详情。

    2. 单击创建修订版本,在基本信息配置向导步骤,单击高级设置,设置最新修订版本的环境变量为TARGET=Knative,然后单击下一步。

      11

    3. 在流量设置配置向导步骤,设置最新修订版本的流量比例为0,单击创建。

      说明

      所有修订版本的流量比例之和需要等于100。

    4. 创建完成后,选择服务管理页签,可以看到新创建服务版本的详细信息。

    5. 执行以下命令,访问helloworld-go服务。

      curl -H "host: <默认域名>" http://<访问网关IP> # 替换为实际的网关IP和默认域名。

      预期输出:

      Hello World!

      预期输出结果表明,服务已创建成功并可以正常访问。由于新版本服务的流量比例为0,所以访问helloworld-go服务,还是请求到旧版本的服务。

  4. 修改流量比例灰度发布服务。

    1. 在服务管理页面,单击目标服务右侧操作列下的详情。

    2. 单击设置流量比例,在设置流量比例对话框,将新版本和旧版本的流量比例都设置为50%,然后单击确定。

    3. 服务流量比例设置成功后,选择服务管理页签,可以看到新版本和旧版本服务的详细信息。

    4. 执行以下命令,访问服务。

      while true; do curl -H "host: <默认域名>" http://<访问网关IP>; slesp 1; done # 网关IP和默认域名请以您的实际数据为准。
      说明

      这个命令会一直运行,直到您手动停止它。如果您只想观察一段时间,可以按Ctrl + C组合键来终止命令的运行。

      预期输出:

      Hello World!
      Hello Knative!
      Hello World!
      Hello Knative!
      Hello World!
      Hello Knative!
      ...

      由于新、旧版本的流量比例各为50%,所以当前访问helloworld-go服务的话,基本是按50%进行流量分配。

      您可以通过调整流量比例继续灰度发布服务,直到新版本服务的流量比例为100%,完成灰度发布服务。在这个过程中,如果发现新版本有问题,您可以随时通过调整流量比例的方式进行回滚操作。

相关文档

您可以基于流量请求数实现Knative服务的自动扩缩容,请参见基于流量请求数实现服务自动扩缩容。

相关文章

为ECI绑定EIP实现公网访问 2025-04-18 14:49

默认情况下,系统只为ECI实例分配一个私网IP。如果您的Knative服务有连接公网的需求,例如拉取公网镜像等,您可以通过添加Annotation为其使用的ECI实例绑定已有的EIP或创建一个新EIP。自动创建EIP时,您还可以同步设置EIP带宽、绑定共享带宽包等。 前提条件

为Knative选择网关 2025-04-18 14:49

Knative网关提供了一种灵活的方式来接入外部流量,并将这些流量路由到不同的Knative服务上。ACK Knative支持ALB、MSE、ASM、Kourier四种网关,每种网关都有其特定的优势和适用场景。本文从产品定位、产品架构、基础路由、运维能力、性能特点、支持的主流协议和可观测能力进行对比

使用ALB网关 2025-04-18 14:49

在大规模Web应用、需要精细化流量分发、需要自动弹性伸缩等对HTTP/HTTPS请求有复杂路由需求的应用中,推荐您基于ALB网关实现Knative服务的流量分发和路由。ALB是专门面向HTTP、HTTPS和QUIC等应用层负载场景的负载均衡服务,具备超强弹性及大规模七层流量处理能力。ALB网关是一款

使用ASM网关 2025-04-18 14:49

在大规模分布式系统、微服务应用流量管理等场景下,特别是已采用或计划采用Istio作为服务网格框架的业务场景中,推荐您使用ASM网关实现Knative服务的流量分发和路由。ASM网关兼容社区Istio规范,控制面组件由ACK托管,简化了服务治理,包括服务调用之间的流量路由与拆分管理、服务间通信的认证安

使用GPU资源 2025-04-18 14:49

如需在Knative中部署需要GPU资源的任务(如AI或高性能计算),您可以在Knative Service中指定GPU规格并创建GPU实例。您还可以开启共享GPU调度能力,允许多个Pod共享GPU,提升使用率。 前提条件 已在集群中部署Knative,请参见

使用Kourier网关 2025-04-18 14:49

Kourier是一个基于Envoy架构实现的轻量级网关,是Knative社区提供的开源网关实现,提供Knative Revisions流量分发,支持gRPC服务、超时和重试、TLS证书和外部认证授权等功能。 前提条件

目录
Copyright © 2025 your company All Rights Reserved. Powered by 博智数字服务平台.
闽ICP备08105208号-1