You need to enable JavaScript to run this app.
导航
指标伸缩
最近更新时间:2024.12.06 12:08:42首次发布时间:2024.12.06 12:08:42

指标伸缩 HPA(Horizontal Pod Autoscaler)在 Kubernetes 集群中用于 Pod 水平自动伸缩,它基于 CPU 和内存利用率、对无状态负载和有状态负载的 Pod 数量进行自动扩缩容。更多详细介绍参见:Kubernetes 官网文档

HPA 由 Kubernetes API 资源和控制器实现。资源决定了控制器的行为,控制器会周期性的获取 CPU 和内存利用率,并与目标值相比较后,用来调整 Replication Controller 或 Deployment 中的副本数量。

创建指标伸缩

注意

请确保当前集群已经安装 metric-server 组件,否则指标伸缩能力将不生效。

  1. 登录 容器服务控制台
  2. 在集群管理页面的左侧导航栏,选择 集群,并在集群管理页面,单击目标注册集群名称。
  3. 在注册集群左侧导航栏选择 弹性伸缩 > 指标伸缩,进入指标伸缩管理页面。
  4. 单击 创建指标伸缩,根据引导提示配置参数。所有参数配置完成后单击 确定,即可开始创建指标伸缩。

alt

配置项说明
名称根据系统提示,配置指标伸缩策略的名称。在同一个命名空间下,名称必须唯一。
命名空间选择伸缩策略所属的命名空间。建议选择您自定义的命名空间或系统默认创建的 default 命名空间。
标签对应 Kubernetes 中的 Label,用于指定该伸缩策略的标识属性。单击 添加标签,根据界面提示输入符合要求的
注解对应 Kubernetes 中的 Annotation,用于为伸缩策略附加任意非标识的元数据,包括 标签 不允许的字符,方便客户端能够检索此元数据。单击 添加注解,根据界面提示输入符合要求的
伸缩对象配置需要伸缩的工作负载。在下拉菜单中选择工作负载的类型和具体的工作负载。

监测指标

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

  • CPU 利用率:按所有 Pod 实例 CPU 使用量 / 所有 Pod 实例 CPU 请求量的百分比,作为监测指标,当 CPU 利用率达到该值,则进行伸缩。
  • 内存利用率:按所有 Pod 实例内存使用量 / 所有 Pod 实例内存请求量的百分比,作为监测指标,当内存利用率达到该值,则进行伸缩。

说明

一个 HPA 伸缩规则里,不能同时设置两个相同种类的伸缩指标。

最小实例数配置伸缩时的最小实例数和最大实例数。策略触发时,工作负载实例将在此范围内伸缩。
最大实例数

alt

配置项说明
扩缩容策略配置工作负载的扩缩容行为,勾选 扩容策略 或 缩容策略,分别配置扩容策略行为和缩容策略行为。

静默时间

扩容策略或缩容策略的静默时间,整数形式,单位为秒。
以当前时间为基准,往前追溯静默时间,如果 HPA 预期副本数总是高于或低于当前副本数,则执行扩容或缩容。

策略类型

配置策略类型,包括:

  • 最大值:执行影响 Pod 数量最大的策略。
  • 最小值:执行影响 Pod 数量最小的策略。
  • 禁用:禁用该扩容策略或缩容策略。

策略

配置扩缩容的具体策略行为,包括:

  • 类型:配置扩缩容策略行为的类型。
    • 容器组:基于 Pod 数量执行扩缩容。
    • 百分比:基于 Pod 百分比执行扩缩容。
  • 阈值:配置扩缩容行为的阈值,与 类型 配合使用。例如:当 类型 配置为 容器组,阈值配置为 10 时,表示在 时间间隔 内扩容或缩容 10 个副本。
  • 时间间隔:配置扩缩容速率,整数形式,取值范围为 1~1800,单位为秒。

管理指标伸缩

指标伸缩创建完成后,将返回资源管理页面。单击资源列表顶部操作按钮或右侧操作列...中的操作按钮,可执行对应管理操作。详细说明如下:

操作说明
使用 Yaml 创建使用 Yaml 创建资源,推荐直接粘贴已经根据业务需求配置的 Yaml 内容。相较于使用控制台创建资源,使用 Yaml 方式支持的参数更全面。
更新通过控制台方式更新指标伸缩配置。
编辑 Yaml编辑已经创建指标伸缩的文件,更新配置信息。
导出导出当前指标伸缩的 Yaml 文件。
删除删除目标指标伸缩。

创建指标伸缩的 Yaml 测试示例如下,具体参数和配置以实际使用场景中各云厂商的定义为准。

apiVersion: autoscaling/v2
kind: HorizontalPodAutoscaler
metadata:
  name: my-hpa
  namespace: default
spec:
  maxReplicas: 10
  minReplicas: 1
  metrics:
    - resource:
        name: cpu
        target:
          averageUtilization: 80
          type: Utilization
      type: Resource
  scaleTargetRef:
    apiVersion: apps/v1
    kind: Deployment
    name: deploy-test