You need to enable JavaScript to run this app.
导航
创建指标伸缩
最近更新时间:2024.06.17 11:06:49首次发布时间:2022.03.04 23:10:38

HPA(Horizontal Pod Autoscaler,水平 Pod 弹性伸缩)在 Kubernetes 集群中用于 Pod 水平自动伸缩,它基于 CPU 和内存利用率、对无状态负载和有状态负载的 Pod 数量进行自动扩缩容。

说明

HPA 不适用于无法缩放的对象,比如 DaemonSets。

前提条件

  • metrics-server 组件工作正常。详细操作,请参见 查看组件
  • 配置 GPU 和网络相关监测指标时,需要安装 prometheus-agent、prometheus-adapter、nvidia-device-plugin 组件,同时需要配置集群的 Prometheus 工作区。详细操作,请参见 安装组件运维配置

背景信息

  • HPA 配置多种指标时,会分别基于每种指标计算,并取最大值作为最终结果。
  • 指标伸缩仅支持配置无状态负载和有状态负载。

操作步骤

  1. 登录 容器服务控制台
  2. 单击左侧导航栏中的 集群
  3. 在集群列表页面,单击需要配置的目标集群。
  4. 在集群管理页面的左侧导航栏中,选择 弹性伸缩 > 指标伸缩,单击 创建指标伸缩,配置指标伸缩。
    • 基本信息
      alt
      配置项说明
      名称根据系统提示,配置指标伸缩策略的名称。在同一个命名空间下,名称必须唯一。
      命名空间选择伸缩策略所属的命名空间。建议选择您自定义的命名空间或系统默认创建的 default 命名空间。命名空间相关介绍,请参见 命名空间概述
      标签对应 Kubernetes 中的 Label,用于指定该伸缩策略的标识属性。单击 添加标签,根据界面提示输入符合要求的
      注解对应 Kubernetes 中的 Annotation,用于为伸缩策略附加任意非标识的元数据,包括 标签 不允许的字符,方便客户端能够检索此元数据。单击 添加注解,根据界面提示输入符合要求的
    • 伸缩策略
      alt
      配置项说明
      伸缩对象配置需要伸缩的工作负载。在下拉菜单中选择工作负载的类型和具体的工作负载。

      监测指标

      配置伸缩的监测指标,系统基于此指标决定是否需要进行伸缩。伸缩指标支持:

      • CPU 利用率:按所有 Pod 实例 CPU 使用量 / 所有 Pod 实例 CPU 请求量的百分比,作为监测指标,当 CPU 利用率达到该值,则进行伸缩。
      • 内存利用率:按所有 Pod 实例内存使用量 / 所有 Pod 实例内存请求量的百分比,作为监测指标,当内存利用率达到该值,则进行伸缩。
      • GPU 使用率:【邀测·申请试用】按所有 Pod 实例 GPU 平均使用率,作为监测指标,当 GPU 使用率达到该值,则进行伸缩。
      • GPU 显存使用率:【邀测·申请试用】按所有 Pod 实例共享 GPU 显存使用量 / 所有 Pod 实例共享 GPU 显存请求(Request)量的百分比,作为监测指标,当 GPU 显存使用率达到该值,则进行伸缩。
      • GPU 显存量:【邀测·申请试用】按所有 Pod 实例共享 GPU 显存使用量,作为监测指标,当 GPU 显存量达到该值,则进行伸缩。
      • 网络入吞吐率:【邀测·申请试用】按工作负载中所有 Pod 实例下所有容器的入方向带宽之和,作为监测指标,当网络入吞吐率达到该值,则进行伸缩。
      • 网络出吞吐率:【邀测·申请试用】按工作负载中所有 Pod 实例下所有容器的出方向带宽之和,作为监测指标,当网络出吞吐率达到该值,则进行伸缩。

      说明

      • 一个 HPA 伸缩规则里,不能同时设置两个相同种类的伸缩指标。
      • 目前最多支持添加两个监测指标。
      • 监测指标对应的指标名称,请参见 参考信息
      最小实例数配置伸缩时的最小实例数和最大实例数。策略触发时,工作负载实例将在此范围内伸缩。
      最大实例数
  5. 单击 确定,完成配置。

参考信息

指标伸缩中不同监测指标的指标名称,如下表所示。您可以在通过 YAML 部署 HPA 时使用。

监控指标指标名称
GPU 使用率k8s_pod_rate_gpu_used
GPU 显存使用率k8s_pod_rate_gpu_memory_used
GPU 显存量k8s_pod_gpu_memory_used
网络入吞吐率k8s_pod_network_receive_throughput
网络出吞吐率k8s_pod_network_transmit_throughput

说明

  • 您可以在集群kube-system命名空间中,查看prometheus-adapter-config配置项,确认系统中的预置指标名称,以及该指标名称对应的 Prometheus 原始指标。
  • 使用 GPU 指标进行弹性伸缩的配置示例,请参见 使用 GPU 指标进行弹性伸缩
  • 除系统预置的检测指标外,也支持基于自定义指标的弹性伸缩。详情请参见 使用自定义指标进行弹性伸缩