Sunday面试指南

Kubernetes HPA 如何自动扩缩容?为什么 CPU 很高却没有增加 Pod?

下面是一段教学模拟,不是真实面试记录。

🧑‍💻 面试官:CPU 很高,HPA 为什么不扩容?

🙋‍♂️ 我:可能达到 maxReplicas。

🧑‍💻 面试官:还没达到呢?CPU 百分比相对 limit、节点总量,还是 request?

🙋‍♂️ 我:通常相对 request。

🧑‍💻 面试官:再区分:HPA 没要求增加,和要求增加但 Pod 一直 Pending,是同一个故障吗?

分成「取得指标」「作出决定」「新副本运行」三段排查,不能只看一个 CPU 图。

面试速答(60 秒版)

HPA 根据当前指标与目标值的比例,调整工作负载的期望副本数。常见 CPU 利用率目标以 request 为基准,不是直接看 limit。

CPU 高却没有增加副本,要检查指标服务、相关容器的 request、副本上限,以及扩缩容策略和稳定相关约束。

还要区分期望数与运行数。已经要求增加,但节点资源不足导致 Pod Pending,就继续查调度与集群容量。

HPA 增加副本,不会自动解决数据库瓶颈或外部接口限额。对于 I/O 等待型服务,CPU 也未必是合适的扩容指标。

HPA:指标到可用副本:作出决定不等于副本就绪

知识点详解:从指标到可用实例,中间还有几步?

先比较当前值与目标值

简化公式是:

期望副本数 = 向上取整(当前副本数 × 当前指标 / 目标指标)。

假设两个 Pod 的 request 相同,当前平均利用率 100%,目标 50%,简化计算得到四个副本。

实际控制器还要处理容差、缺失指标、未就绪 Pod 与策略限制,不能保证立即按简单公式调整。官方 HPA 算法

CPU 百分比,先找分母

容器 request 是 500m,当前使用 250m,相对 request 就是 50%。如果 limit 是 1000m,相对 limit 则是 25%。

两张图不矛盾,但不能拿第二个百分比直接对比 HPA 的利用率目标。

相关容器没有 request,某些利用率计算就无法成立。容器级与自定义指标还有各自规则,应按实际配置确认。

没扩容,是没算出来还是受到限制?

先看 HPA conditions:有没有取得指标、识别工作负载并满足调整条件。

再看最小最大副本、扩缩容策略与稳定配置。扩容和缩容不必使用同一规则,不能把常见缩容窗口说成所有扩容都必须等待一样时间。

缺失和未就绪样本也可能使计算保守。需要查判断依据,而不是只看控制器有没有报异常。

没扩容和没调度,两条排查路:决定与落地分别排查

期望四个,不等于可用四个

HPA 调整规模后,工作负载控制器创建 Pod,调度器还要找节点。

资源、亲和性、配额或镜像问题都可能让 Pod 不能就绪。此时决定已经做出,故障在后面。

节点自动扩容是另一层能力,HPA 不提供无限节点。即使副本都运行,下游容量不变,系统也可能继续慢。

CPU 低但队列很长,怎么办?

假设 Agent 服务主要等待模型 API,CPU 不高,但待处理请求持续增加。

可以评估队列长度、在途工作等指标,同时结合下游限额。更多副本如果只引发更多限流与重试,未必改善体验。

指标应表达真实工作压力,不是只因为 CPU 最方便就固定使用。

CPU 不高,任务队列却很长:指标反映压力,也受下游限制

面试官继续追问

request 越小,扩容越敏感,是不是更好?

不是。它影响调度与利用率意义,过小可能扭曲判断,应依据资源需求和实际测试设置。

副本增加但接口仍慢,说明 HPA 无效吗?

不一定。检查就绪、负载分布和下游瓶颈。扩容成功与性能改善分别验证。

平均 CPU 会掩盖热点吗?

可能。还要看流量不均、热点任务和分区压力,不能只依赖平均值。

面试速记卡

  • HPA:按指标与目标比例调整期望副本数。
  • CPU 基准:常见利用率相对 request,不是 limit。
  • 无决定:查指标、request、上下限与调整规则。
  • 未落地:查调度、资源与就绪状态。
  • 系统边界:副本增加不等于下游容量增加。

公司面试真题

这道题暂未收录可核验的公司真题来源。你可以先阅读本文解析,或浏览已收录的公司面试真题。

浏览公司面试真题 →
简历汪永久免费在线制作简历,模板直接套用、导出无水印,永久免费、下载免费,不需要付费解锁任何功能。去写简历