如何在多类Kubernetes环境中修改并配置HPA自动扩缩容行为
各环境HPA自定义扩缩容行为配置方法
通用基础逻辑
首先确认你的Kubernetes集群版本不低于1.18,只有该版本及以上的HPA API(1.18-1.22用autoscaling/v2beta2,1.23+正式稳定为autoscaling/v2)才支持自定义扩缩容行为的behavior字段。该配置直接写在对应HPA资源的YAML定义中,无需修改集群全局配置文件,基础配置结构示例如下:
apiVersion: autoscaling/v2 kind: HorizontalPodAutoscaler metadata: name: 你的HPA名称 namespace: 对应工作负载的命名空间 spec: scaleTargetRef: apiVersion: apps/v1 kind: Deployment name: 目标工作负载名称 minReplicas: 1 maxReplicas: 10 metrics: - type: Resource resource: name: cpu target: type: Utilization averageUtilization: 70 # 以下为自定义扩缩容行为配置 behavior: scaleUp: stabilizationWindowSeconds: 60 # 扩容稳定窗口,单位秒 policies: - type: Percent value: 100 periodSeconds: 15 scaleDown: stabilizationWindowSeconds: 300 # 缩容稳定窗口,单位秒 policies: - type: Percent value: 10 periodSeconds: 60
修改完成后执行kubectl apply -f 你的HPA文件名.yaml即可生效。
1. Docker Desktop 环境
- 先进入设置-Kubernetes面板,确认Kubernetes功能已启用且版本≥1.18
- 打开本地终端执行
kubectl get hpa -A找到需要修改的HPA资源 - 可以直接执行
kubectl edit hpa <HPA名称> -n <对应命名空间>,在弹出的编辑器中新增behavior字段配置,保存退出后自动生效 - 也可以将现有HPA导出为本地YAML文件:
kubectl get hpa <HPA名称> -n <命名空间> -o yaml > hpa.yaml,修改完成后再执行apply操作即可
2. Baremetal 裸金属Kubernetes环境
- 先通过
kubectl version确认集群服务端版本≥1.18 - 如果你原本就通过YAML文件管理HPA资源,直接在原HPA文件中新增
behavior字段配置后重新apply即可 - 没有留存原YAML文件的场景,可使用和Docker Desktop完全一致的
kubectl edit或者导出YAML修改后apply的方式操作 - 若集群开启了RBAC,确保操作账号有对应命名空间下HPA的编辑权限即可
3. Rancher 环境
- 进入Rancher UI的对应集群管理页面,在左侧菜单找到「服务发现-水平Pod自动扩缩容」(不同Rancher版本路径略有差异,也可以直接在全局资源搜索HPA)
- 找到需要修改的HPA条目,点击右侧的操作按钮选择「编辑YAML」
- 在弹出的编辑器中找到spec字段,新增
behavior对应的配置内容,点击保存即可直接生效 - 你也可以在本地配置好该Rancher集群的kubeconfig,用kubectl命令行操作,逻辑和前两个环境完全一致
内容的提问来源于stack exchange,提问作者Anthony Vinay
相关产品推荐
相关产品推荐

