赛尔校园公共服务平台 Logo
平台使用
阿里云
百度云
移动云
智算服务
教育生态
登录 →
赛尔校园公共服务平台 Logo
平台使用 阿里云 百度云 移动云 智算服务 教育生态
登录
  1. 首页
  2. 阿里云
  3. ACK Serverless集群
  4. 操作指南
  5. 弹性伸缩
  6. AHPA弹性预测
  7. 在Knative中使用AHPA弹性预测

在Knative中使用AHPA弹性预测

  • AHPA弹性预测
  • 发布于 2025-04-18
  • 0 次阅读
文档编辑
文档编辑

Knative Serverless支持AHPA(Advanced Horizontal Pod Autoscaler)的弹性能力,当应用所需资源具备周期性变化时,可通过弹性预测,预热资源,缓解您在使用Knative时遇到的冷启动问题。本文介绍如何在Knative中使用AHPA弹性预测功能。

前提条件

  • 已部署Knative。具体操作,请参见部署Knative。

  • 已开启Prometheus监控。具体操作,请参见阿里云Prometheus监控。

步骤一:安装AHPA Controller

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

  2. 在集群列表页面,单击目标集群名称,然后在左侧导航栏,选择运维管理 > 组件管理。

  3. 在组件管理页面,单击其他页签或在页面右上方搜索AHPA Controller,然后在AHPA Controller卡片单击安装。

  4. 在安装组件对话框,单击确定。

步骤二:配置Prometheus指标采集

通过Prometheus采集Knative服务的RT、RPS指标数据。

1、设置采集规则

  1. 登录ARMS控制台。

  2. 在左侧导航栏选择Prometheus监控 > 实例列表,进入可观测监控 Prometheus 版的实例列表页面。

  3. 在顶部菜单栏选择目标集群所在的地域。

  4. 在实例列表页面,单击目标实例名称,进入目标实例页面。

  5. 在左侧导航栏选择服务发现,然后单击配置页签,在配置页签下,单击自定义服务发现,然后单击添加。

  6. 在添加自定义服务发现对话框中,设置采集规则。

    采集规则配置示例如下:

    job_name: queue-proxy
    scrape_interval: 3s
    scrape_timeout: 3s
    kubernetes_sd_configs:
    - role: pod
    relabel_configs:
    - source_labels:
      - __meta_kubernetes_pod_label_serving_knative_dev_revision
      - __meta_kubernetes_pod_container_port_name
      action: keep
      regex: .+;http-usermetric
    - source_labels:
      - __meta_kubernetes_namespace
      target_label: namespace
    - source_labels:
      - __meta_kubernetes_pod_name
      target_label: pod
    - source_labels:
      - __meta_kubernetes_service_name
      target_label: service

2、配置Prometheus数据源

  1. 登录ARMS控制台。

  2. 在左侧导航栏选择Prometheus监控 > 实例列表,进入可观测监控 Prometheus 版的实例列表页面。

  3. 在顶部菜单栏选择目标集群所在的地域。

  4. 在实例列表页面,单击目标实例名称,进入目标实例详情页面。

  5. 在左侧导航栏单击设置,复制HTTP API地址下的公网地址。

  6. 在HTTP API地址下单击生成token,获取Prometheus实例的鉴权Token。

  7. 使用以下内容,创建application-intelligence.yaml,在集群中设置Prometheus查询地址。

    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: application-intelligence
      namespace: kube-system
    data:
      prometheusUrl: "https://cn-hangzhou.arms.aliyuncs.com:9443/api/v1/prometheus/da9d7dece901db4c9fc7f5b9c40****/158120454317****/cc6df477a982145d986e3f79c985a****/cn-hangzhou"
      token: "****"

    部分参数说明如下:

    • prometheusUrl:用于设置阿里云Prometheus的访问地址,值为第4步获取的公网地址。

    • token:用于设置访问鉴权Token,值为第5步获取的鉴权Token。

  8. 执行以下命令,部署ConfigMap。

    kubectl apply -f application-intelligence.yaml

步骤三:创建Knative服务

在Knative Service指定使用AHPA弹性策略。

  1. 使用以下内容,创建autoscale-go.yaml。

    apiVersion: serving.knative.dev/v1
    kind: Service
    metadata:
      name: autoscale-go
      namespace: default
    spec:
      template:
        metadata:
          labels:
            app: autoscale-go
          annotations:
            autoscaling.knative.dev/class: ahpa.autoscaling.knative.dev
            autoscaling.knative.dev/target: "500"
            autoscaling.knative.dev/metric: "rt"
            autoscaling.knative.dev/minScale: "1"
            autoscaling.knative.dev/maxScale: "30"
            autoscaling.alibabacloud.com/scaleStrategy: "observer"
        spec:
          containers:
            - image: registry.cn-hangzhou.aliyuncs.com/knative-sample/autoscale-go:0.1
                            

    参数

    说明

    autoscaling.knative.dev/class: ahpa.autoscaling.knative.dev

    指定弹性插件AHPA。

    autoscaling.knative.dev/metric: "rt"

    设置AHPA指标。目前仅支持响应时间RT。

    autoscaling.knative.dev/target: "500

    设置AHPA指标的阈值,本示例RT阈值为500,单位毫秒。

    autoscaling.knative.dev/minScale: "1"

    设置弹性策略实例数的最小值为1。

    autoscaling.knative.dev/maxScale: "30"

    设置弹性策略实例数的最大值为30。

    autoscaling.alibabacloud.com/scaleStrategy: "observer"

    设置弹性伸缩模式,默认值是observer。

    • observer:表示只观察,但不做真正的伸缩动作。您可以通过这种方式观察AHPA的工作是否符合预期。由于预测需要历史7天的数据,因此创建服务默认是observer模式。

    • auto:表示由AHPA负责扩容和缩容,把AHPA指标和阈值输入到AHPA,AHPA最终决定是否生效。

  2. 执行以下命令,开启AHPA弹性策略。

    kubectl apply -f autoscale-go.yaml

执行结果

Knative Service开启AHPA弹性后,您可以看到弹性预测生效前后的RT数据对比。AHPA效果图.png

相关文档

  • 阿里云Prometheus监控提供一键安装AHPA组件功能,并提供开箱即用的专属监控大盘。详细信息,请参见为AHPA开启Prometheus大盘。

  • 如何将Knative和AHPA结合从而拥有基于RPS定时弹性的能力,请参见基于AHPA实现定时自动扩缩容。

相关文章

为AHPA开启Prometheus大盘 2025-04-18 14:49

您可以将AHPA组件接入阿里云Prometheus监控,获得开箱即用的专属监控大盘,查看当前工作负载的CPU用量、Pod数量等监控指标。 前提条件

在Knative中使用AHPA弹性预测 2025-04-18 14:49

Knative Serverless支持AHPA(Advanced Horizontal Pod Autoscaler)的弹性能力,当应用所需资源具备周期性变化时,可通过弹性预测,预热资源,缓解您在使用Knative时遇到的冷启动问题。本文介绍如何在Knative中使用AHPA弹性预测功能。 前提条

基于GPU指标实现AHPA弹性预测 2025-04-18 14:49

AHPA可以根据从Prometheus Adapter获取到的GPU利用率数据,结合历史负载趋势和预测算法,提前预估未来的GPU资源需求,并自动调整Pod副本数量或者GPU资源分配,确保在GPU资源紧张前完成扩容操作,而在资源闲置时及时缩容,从而达到节省成本和提高集群效率的目标。 前提条件

弹性伸缩预测(AHPA) 2025-04-18 14:49

在云原生场景下,资源容量通常难以预估,而Kubernetes原生HPA存在弹性滞后和配置复杂的问题。为此,ACK推出了AHPA(Advanced Horizontal Pod Autoscaler)弹性预测,支持根据业务历史指标,自动识别弹性周期并对容量进行预测,提前进行弹性规划,解决弹性滞后的问题

通过AHPA配置自定义指标以实现应用扩缩 2025-04-18 14:49

很多场景中需要根据自定义指标(例如HTTP请求的QPS、消息队列的长度等)对应用进行扩缩容。AHPA(Autoscaling Horizontal Pod Autoscaler)提供了External Metrics机制,结合alibaba-cloud-metrics-adapter组件,可以为应用

部署AHPA 2025-04-18 14:48

容器服务 Kubernetes 版支持AHPA(Advanced Horizontal Pod Autoscaler)弹性能力。AHPA可以根据历史数据进行学习和分析,提前预测未来的资源需求,并据此动态调整Pod副本数量,确保在业务高峰到来之

目录
Copyright © 2025 your company All Rights Reserved. Powered by 赛尔网络.
京ICP备14022346号-15
gongan beian 京公网安备11010802041014号