Skip to content

kubectl autoscale - 自动调整Kubernetes资源副本数量

命令简介

kubectl autoscale 是 Kubernetes 命令行工具中用于创建和管理 Horizontal Pod Autoscaler (HPA) 对象的命令。它可以根据指定的 CPU 利用率或其他自定义指标,自动扩展或收缩 Deployment、ReplicaSet 或 StatefulSet 的 Pod 副本数量,实现应用的弹性伸缩。

语法格式

kubectl autoscale (-f FILENAME | TYPE NAME | TYPE/NAME) [--min=MINPODS] --max=MAXPODS [--cpu-percent=CPU] [options]

选项

选项描述示例
-f, --filename指定包含配置的文件kubectl autoscale -f deploy.yaml
--min最小 Pod 副本数--min=2
--max最大 Pod 副本数--max=10
--cpu-percent目标 CPU 使用率百分比--cpu-percent=50
--name指定 HPA 名称--name=my-hpa
--dry-run试运行不实际创建--dry-run=client
--selector标签选择器过滤资源--selector=app=nginx
--custom-metric自定义指标名称--custom-metric=custom_metric

经典案例

bash
# 为名为 "web-app" 的 Deployment 创建 HPA,CPU 目标利用率 80%,副本数范围 2-10
kubectl autoscale deployment web-app --cpu-percent=80 --min=2 --max=10

# 使用 YAML 文件创建 HPA
kubectl autoscale -f hpa-config.yaml

# 查看已创建的 HPA
kubectl get hpa

# 删除 HPA
kubectl delete hpa web-app

注意事项

  1. 指标服务器要求:使用 CPU 自动伸缩前需安装 metrics-server 或其他指标收集器
  2. 资源限制:Pod 必须设置 CPU 资源请求(resources.requests.cpu)才能基于 CPU 进行伸缩
  3. 冷却延迟:Kubernetes 默认有伸缩冷却时间(默认水平扩展冷却 3 分钟,收缩冷却 5 分钟)
  4. 自定义指标:使用自定义指标需要额外配置适配器(如 Prometheus Adapter)
  5. 多指标支持:Kubernetes 1.23+ 支持基于多个指标的综合评估进行自动伸缩