You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Kustomize补丁完成HPA版本升级及Metrics语法适配?

问题分析与解决方案

首先要明确一个关键差异:autoscaling/v1 的 HPA 不支持 metrics 数组结构,也无法配置内存指标,它仅能在 spec 中直接定义 targetCPUUtilizationPercentage 来指定 CPU 利用率阈值。如果需要保留内存指标,你不能使用 autoscaling/v1,应切换到 autoscaling/v2beta1 及以上版本(比如调整原有 v2beta2 的格式)。

下面分两种场景给出可行的 Kustomize 补丁方案:

场景1:切换至 autoscaling/v1(仅保留 CPU 指标)

需要完成三个核心操作:替换 API 版本、删除原 metrics 数组、添加 v1 格式的 CPU 阈值字段。

对应的补丁配置:

patches:
- patch: |-
    - op: replace
      path: "/apiVersion"
      value: autoscaling/v1
    - op: remove
      path: "/spec/metrics"
    - op: add
      path: "/spec/targetCPUUtilizationPercentage"
      value: 70
  target:
    group: autoscaling
    version: v2beta2
    kind: HorizontalPodAutoscaler

应用后生成的最终 HPA 配置:

apiVersion: autoscaling/v1
kind: HorizontalPodAutoscaler
metadata:
  labels:
    environment: production
  name: piebot
  namespace: piebot
spec:
  maxReplicas: 3
  minReplicas: 1
  targetCPUUtilizationPercentage: 70
  scaleTargetRef:
    apiVersion: apps/v1
    kind: Deployment
    name: piebot

场景2:调整为 autoscaling/v2beta1 格式(保留 CPU+内存指标)

如果你的真实需求是把嵌套的 target 结构改成扁平化的 targetAverageUtilization(这是 v2beta1 的格式,而非 v1),可以用以下补丁:

patches:
- patch: |-
    - op: replace
      path: "/apiVersion"
      value: autoscaling/v2beta1
    # 处理CPU指标
    - op: remove
      path: "/spec/metrics/0/resource/target"
    - op: add
      path: "/spec/metrics/0/resource/targetAverageUtilization"
      value: 70
    # 处理内存指标
    - op: remove
      path: "/spec/metrics/1/resource/target"
    - op: add
      path: "/spec/metrics/1/resource/targetAverageUtilization"
      value: 70
  target:
    group: autoscaling
    version: v2beta2
    kind: HorizontalPodAutoscaler

应用后生成的 metrics 片段会完全符合你期望的格式:

metrics:
- resource:
    name: cpu
    targetAverageUtilization: 70
  type: Resource
- resource:
    name: memory
    targetAverageUtilization: 70
  type: Resource

你之前的补丁无效的原因

  1. 错误地将 API 版本改回了 v2beta2,而非目标版本
  2. 没有删除原有的嵌套 target 节点,直接添加新字段会导致结构冲突
  3. 混淆了 autoscaling/v1 和 v2beta1+ 的结构差异,v1 本身不支持 metrics 字段

内容的提问来源于stack exchange,提问作者Vini

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.15 18:33:20