You need to enable JavaScript to run this app.
文档中心
容器服务

容器服务

复制全文
下载 pdf
指标伸缩(HPA)
使用 CPU 和内存指标实现弹性伸缩
复制全文
下载 pdf
使用 CPU 和内存指标实现弹性伸缩
HPA(Horizontal Pod Autoscaler,水平 Pod 弹性伸缩)在 Kubernetes 集群中用于 Pod 水平自动伸缩,它基于 CPU 和内存利用率、对 Pod 数量进行自动扩缩容。​
说明​
HPA 不适用于无法缩放的对象,比如 DaemonSets。​
使用限制​
  • HPA 配置多种指标时,会分别基于每种指标计算,并取最大值作为最终结果。​
  • 指标伸缩仅支持配置无状态负载(Deployment)、有状态负载(Statefulset)和自定义资源(CRD)。​
前提条件​
已安装 metrics-server 组件。详情请参见 安装组件。​
通过控制台配置​
  1. 单击左侧导航栏中的 集群。​
  1. 在集群列表页面,单击需要配置的目标集群。​
  1. 在集群管理页面的左侧导航栏中,选择 弹性伸缩 > 指标伸缩,单击 创建指标伸缩,配置指标伸缩。​
  • 基本信息​
  • ​
    配置项​
    说明​
    名称​
    根据系统提示,配置指标伸缩策略的名称。在同一个命名空间下,名称必须唯一。​
    命名空间​
    选择伸缩策略所属的命名空间。建议选择您自定义的命名空间或系统默认创建的 default 命名空间。命名空间相关介绍,请参见 命名空间概述。​
    标签​
    对应 Kubernetes 中的 Label,用于指定该伸缩策略的标识属性。单击 添加标签,根据界面提示输入符合要求的 键 和 值。​
    注解​
    对应 Kubernetes 中的 Annotation,用于为伸缩策略附加任意非标识的元数据,包括 标签 不允许的字符,方便客户端能够检索此元数据。单击 添加注解,根据界面提示输入符合要求的 键 和 值。​
    ​
  • 伸缩策略​
  • ​​​
  • ​
    配置项​
    说明​
    伸缩对象​
    配置伸缩对象。当前支持 无状态负载、有状态负载 和 自定义资源。指定伸缩对象后,在后面的下拉菜单中选择具体的对象实例。​
    监测指标​
    配置伸缩的监测指标,系统基于此指标决定是否需要进行伸缩。伸缩指标支持:​
    • CPU 利用率:按所有 Pod 实例 CPU 使用量 / 所有 Pod 实例 CPU 请求量的百分比,作为监测指标,当 CPU 利用率达到该值,则进行伸缩。​
    • 内存利用率:按所有 Pod 实例内存使用量 / 所有 Pod 实例内存请求量的百分比,作为监测指标,当内存利用率达到该值,则进行伸缩。​
    说明​
    • 一个 HPA 伸缩规则里,不能同时设置两个相同种类的伸缩指标。​
    • 目前最多支持添加两个监测指标。​
    最小实例数​
    配置伸缩时的最小实例数和最大实例数。策略触发时,工作负载实例将在此范围内伸缩。​
    最大实例数​
    ​
    ​
  • 伸缩规则​
  • ​alt​​
  • ​
    配置项​
    说明​
    扩缩容策略​
    配置工作负载的扩缩容行为,勾选 扩容策略 或 缩容策略,分别配置扩容策略行为和缩容策略行为。​
    静默时间​
    扩容策略或缩容策略的静默时间,整数形式,单位为秒。​
    以当前时间为基准,往前追溯静默时间,如果 HPA 预期副本数总是高于或低于当前副本数,则执行扩容或缩容。​
    策略类型​
    配置策略类型,包括:​
    • 最大值:执行影响 Pod 数量最大的策略。​
    • 最小值:执行影响 Pod 数量最小的策略。​
    • 禁用:禁用该扩容策略或缩容策略。​
    策略​
    配置扩缩容的具体策略行为,包括:​
    • 类型:配置扩缩容策略行为的类型。​
    • 容器组:基于 Pod 数量执行扩缩容。​
    • 百分比:基于 Pod 百分比执行扩缩容。​
    • 阈值:配置扩缩容行为的阈值,与 类型 配合使用。例如:当 类型 配置为 容器组,阈值配置为 10 时,表示在 时间间隔 内扩容或缩容 10 个副本。​
    • 时间间隔:配置扩缩容速率,整数形式,取值范围为 1~1800,单位为秒。​
    ​
  1. 单击 确定,完成配置。​
通过 kubectl 命令行配置​
基础配置​
使用如下代码示例,创建与伸缩对象关联的 HPA,并指定按照 CPU 或内存使用率进行弹性伸缩。​
​
apiVersion: autoscaling/v2​
kind: HorizontalPodAutoscaler​
metadata:​
name: hpa-demo # 指标伸缩名称​
spec:​
scaleTargetRef:​
apiVersion: apps/v1 # 指标伸缩对象的 API 版本​
kind: Deployment # 指标伸缩的对象类型,支持 Deployment、StatefulSet 和 CustomResourceDefinition​
name: deployment-demo # 指定指标伸缩的具体对象实例​
minReplicas: 1 # 配置 HPA 的最小实例数​
maxReplicas: 10 # 配置 HPA 的最大实例数​
metrics:​
- type: Resource​
resource:​
name: cpu # 监测指标,目前仅支持 memory 和 cpu,且每一种监测指标只支持 1 个配置​
target:​
type: Utilization​
averageUtilization: 80 # 监测指标阈值,整数形式,单位为 %,例如 80 代表 80%​
- type: Resource​
resource:​
name: memory # 监测指标,目前仅支持 memory 和 cpu,且每一种监测指标只支持 1 个配置​
target:​
type: Utilization​
averageUtilization: 80 # 监测指标阈值,整数形式,单位为 %,例如 80 代表 80%​
​
配置扩缩容行为​
在 v1.24 及以上版本的集群中,autoscaling/v2 API 允许使用behavior字段配置 HPA 的扩缩容行为,同时,可以使用scaleUp和scaleDown字段分别配置扩容和缩容行为。​
说明​
更多详细说明,请参见 社区文档。​
扩缩容策略​
支持在behavior字段中指定一个或多个扩缩容策略。当指定多个策略时,默认允许最大更改量的策略是默认选择的策略。以下以缩容策略为例:​
​
behavior:​
scaleDown: # 缩容策略​
policies: ​
- type: Pods # 策略类型,Pods 代表容器组,即基于 Pod 数量执行扩缩容​
value: 4 # 阈值,此处代表缩容 4 个副本​
periodSeconds: 60 # 时间间隔,整数形式,取值范围为 1~1800,单位为秒​
- type: Percent # 策略类型,Percent 代表百分比,即基于 Pod 百分比执行扩缩容​
value: 10 # 阈值,此处代表缩容当前副本数量的 10% ​
periodSeconds: 60 # 时间间隔,整数形式,取值范围为 1~1800,单位为秒​
​
说明​
  • 默认情况下,系统会允许最大更改量的策略。因此,只有 Pod 副本数大于 40 时, 第二个策略才会被采用。如果副本数为 40 或者更少,则应用第一个策略。​
  • 支持使用selectPolicy字段来更改策略选择。 当配置为Min时,系统将选择副本数变化最小的策略。如果将该值设置为Disabled,则将完全禁用该扩缩容策略。​
禁止 Pod 扩容或缩容​
使用 HPA 时,如果您只期望进行 Pod 扩容或缩容,可以在配置扩缩容策略时,使用selectPolicy字段来实现。​
  • 默认值:均不禁止。​
  • 禁用扩容:配置selectPolicy的值为Disabled时,禁用指定方向的扩容。例如:以下策略将会阻止 Pod 扩容。​
  • ​
    behavior:​
    scaleUp:​
    selectPolicy: Disabled​
    ​
  • 禁用缩容:配置selectPolicy的值为Disabled时,禁用指定方向的缩容。例如:以下策略将会阻止 Pod 缩容。​
  • ​
    behavior:​
    scaleDown:​
    selectPolicy: Disabled​
    ​
配置静默时间​
为防止因短期的指标波动导致 Pod 过度频繁或不必要的扩缩容。您可以为扩缩容行为配置静默时间,系统完成扩缩容后,在静默时间内,不会再次执行扩缩容策略,避免工作负载副本数频繁变更造成系统震荡。​
例如在以下示例中,当指标显示目标应该缩容时,自动扩缩算法会将过去 5 分钟的所有期望状态考虑在内,使用窗口期内的最大值。​
​
behavior:​
scaleDown:​
stabilizationWindowSeconds: 300​
​
结果验证​
查看配置​
在集群管理页面的左侧导航栏中,选择 弹性伸缩 > 指标伸缩,查看已配置的弹性伸缩规则。​
​​​
伸缩验证​
  1. 当 Pod CPU 使用率增加后会触发扩容,此时可通过如下命令查看 HPA 信息。​
​
kubectl get hpa ​
​
预期返回结果如下,Deployment 的副本数扩容到 2:​
​
NAME REFERENCE TARGETS MINPODS MAXPODS REPLICAS AGE​
workload-hpa Deployment/example-workload 23/20 1 10 2 62s ​
​
  1. 当 Pod CPU 使用率下降到指定值以下会触发缩容,此时可通过如下命令查看 HPA 信息。​
​
kubectl get hpa ​
​
预期返回结果如下,Deployment 的副本数缩容到 1:​
​
NAME REFERENCE TARGETS MINPODS MAXPODS REPLICAS AGE​
workload-hpa Deployment/example-workload 0/20 1 10 1 15m​
​
​
最近更新时间:2026.02.02 11:04:35
这个页面对您有帮助吗?
有用
有用
无用
无用