Cluster Autoscaler 只为“增加节点后能够调度”的 Pod 扩容。镜像错误、PVC 未绑定或硬性亲和规则无解时,Pod 虽然 Pending,也不会触发有效扩容。
读取调度与扩容事件
kubectl describe pod worker-abc -n jobs
kubectl get events -A --field-selector reason=FailedScheduling
kubectl logs -n kube-system deploy/cluster-autoscaler --since=30m | grep -Ei 'scale|unschedul|backoff'
先确认调度器给出的原因是资源不足。再从 Autoscaler 日志查看 Pod 是否被过滤、匹配到哪个节点组以及云 API 返回了什么错误。
检查约束和上限
kubectl get pod worker-abc -n jobs -o yaml
kubectl get nodes -L topology.kubernetes.io/zone,node.kubernetes.io/instance-type
kubectl get resourcequota -A
核对 requests、nodeSelector、affinity、taints/tolerations、拓扑分布和 PVC 可用区。还要检查节点组最大值、云配额、IP 地址和实例库存。
常见误区
- Pod 没写合理 requests,导致容量模型失真
- 亲和性限定到不存在的标签或可用区
- 扩容节点启动很慢,却没有考虑应用等待时限
- 同时由多个工具管理节点组期望容量
收尾清单
验证节点创建、注册、CNI 就绪和 Pod 调度完整链路。为扩容失败、节点启动耗时和不可调度 Pod 年龄建立告警。