kubectl scale 是什么
kubectl scale 用命令式方式调整工作负载的副本数,最适合应急扩容与临时压测。它的定位是补充手段:长期形态仍应把副本数写在清单里并纳入版本管理,否则下一次发布就会把临时改的副本数覆盖掉。
基本信息
| 基本用法 | kubectl scale deploy/web --replicas=5 |
|---|---|
| 前置校验 | --current-replicas 表示当前副本不等于给定值就拒绝执行 |
| 适用对象 | Deployment、StatefulSet、ReplicaSet 等带副本概念的对象 |
| 与 HPA 冲突 | HPA 接管后手工改的副本数会被迅速拉回 |
| 生效过程 | 新副本经调度、拉镜像、就绪探针后才真正提供容量 |
| 命名空间 | 不指定时作用于默认命名空间,多环境容易改错对象 |
命令式与声明式取舍
| 方式 | 适用 | 风险 |
|---|---|---|
| kubectl scale | 应急扩容、临时压测 | 下次发布被覆盖 |
| 改清单后 apply | 常规变更 | 要走评审与流水线 |
| HPA 自动扩缩 | 负载波动明显 | 与手工调整互相打架 |
| 副本数纳入 GitOps | 长期治理 | 需要配套工具链 |
使用示例
使用示例
kubectl scale deploy/web --replicas=5 -n dev # 扩到 5 个副本
kubectl scale deploy/web --replicas=8 --current-replicas=5 # 当前非 5 则拒绝执行
kubectl get deploy web -w # 观察副本就绪过程
kubectl get pods -l app=web -o wide # 看新副本落在哪些节点典型使用场景
- 突发流量时快速增加副本顶住压力
- 压测前临时调大副本,测完再调回
- 缩容前确认流量已切走,避免整体容量不足
- 误操作纠偏:把被改错的副本数恢复成清单里的期望值
HPA 接管副本数后手工 scale 会被迅速拉回:要么临时停用自动扩缩,要么等它自己调整,硬改只会白忙一场。
加 --current-replicas 能在并发变更场景下防误操作:期望值与实际不符时命令直接拒绝执行,避免在漂移状态下放大规模。
集群资源不足时硬扩会让新副本全部 Pending,问题从容量不足变成调度失败,扩容前先确认节点余量。
更稳妥的做法是先把期望副本写回清单再 apply:scale 只改集群里的当前状态,一旦清单与集群不一致,任何一次正常发布都会把副本数带回清单中的值。