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