深色模式
面试高频考点梳理
面向准备 K8s 相关技术面试的工程师。按考点梳理"面试官真正想听什么",每题给出要点而非背诵答案。
适用版本与前提
- Kubernetes:v1.28+
- 用法:配合本站各篇原理文章复习;本文给回答框架与关键结论
建议
面试考察的是"你是否真的理解并踩过坑"。回答时带上失败模式与生产权衡,比背定义更有说服力。
一、架构类
Q:Pod 从创建到运行,集群里发生了什么?
要点链路:
加分项:说清每一步是声明式 + 控制器调谐(不是命令式流程),以及任何一步失败后谁来重试。
Q:控制器(Controller)模式是什么?
- 声明期望状态(spec)→ 控制器观测实际状态(status)→ 持续调谐(reconcile)使二者一致。
- 关键是幂等 + 水平触发(level-triggered),而非边沿触发。
- 加分项:说清 informer/workqueue 的作用(本地缓存 + 限速重试)。
二、调度类
Q:Pod 一直 Pending,怎么排查?
分层回答:
kubectl describe pod看 Events:FailedScheduling→ 调度器找不到节点。- 其他 → 可能是准入/配额/存储。
- 常见原因:资源不足(CPU/内存 requests 太大)、节点有 taint 无 toleration、亲和性/拓扑约束不满足、PVC 未绑定或跨 AZ。
- 加分项:区分"调度失败"与"调度成功但起不来"(后者看 kubelet 事件与镜像拉取)。
Q:requests 和 limits 的区别?QoS 等级?
- requests:调度依据(装箱),也影响 cgroup 的
cpu.shares(争抢时的权重)。 - limits:硬上限,CPU 超限被 throttle,内存超限被 OOMKill。
- QoS:Guaranteed(都设且相等)/ Burstable(部分设)/ BestEffort(都不设)。驱逐时 BestEffort 最先被杀。
加分项:CPU limit 会造成 throttling,导致"CPU 使用率不高但时延高";有些团队选择不设 CPU limit,需说明权衡。
三、网络类
Q:Service 的 ClusterIP 是怎么实现的?
- ClusterIP 是虚拟 IP,不对应任何网卡,由 kube-proxy 维护的 iptables/IPVS 规则做 DNAT 转发到后端 Pod IP。
kube-proxy监听 Service/EndpointSlice 变化并更新规则。- 加分项:说明 ClusterIP 不可 ping(无实体),以及 IPVS 模式在大规模下的性能优势。
Q:Pod 之间访问不通,怎么排查?
按层:DNS(CoreDNS 是否正常、ndots)→ Service/Endpoint(后端是否就绪)→ NetworkPolicy(是否被默认拒绝)→ CNI/路由/MTU → 节点防火墙/conntrack。
加分项:用临时容器抓包(tcpdump)确认包到底到了哪一层。
Q:Ingress 和 Gateway API 的关系?
- Ingress API 已冻结(不再新增功能),功能扩展依赖大量厂商注解。
- Gateway API 是新一代标准,角色分离(GatewayClass/Gateway/HTTPRoute),表达能力更强。
- 加分项:说明迁移是渐进的,现有 Ingress 仍可用。
四、存储类
Q:PV、PVC、StorageClass 的关系?
- PV 是集群资源,PVC 是用户申领,StorageClass 定义"如何动态创建 PV"。
- 绑定是一对一;动态供给下 PVC 指定 StorageClass,由 provisioner 建 PV。
- 加分项:
WaitForFirstConsumer解决拓扑问题(避免 PV 建在错误 AZ)。
Q:有状态应用上 K8s 要注意什么?
- StatefulSet 提供稳定网络标识与有序部署/扩缩。
- 存储拓扑(卷与节点同 AZ)、优雅终止(避免脑裂)、备份恢复演练、升级顺序。
- 加分项:说明"能不能上"取决于应用本身是否有成熟的分布式一致性方案,K8s 不解决数据层问题。
五、安全类
Q:RBAC 怎么设计才安全?
- 命名空间内用 Role/RoleBinding,避免滥用 ClusterRoleBinding。
- 禁止
cluster-admin泛发;用聚合 ClusterRole 组合权限。 - 加分项:说明 RBAC 无法防"命名空间内的横向移动",还需 NetworkPolicy + PSA 配合。
Q:PSP 和 Pod Security Admission?
- PSP(PodSecurityPolicy)在 v1.21 弃用、v1.25 移除。
- PSA(Pod Security Admission)是内置准入控制器,通过命名空间标签(
privileged/baseline/restricted)实现。 - 加分项:PSA 只有三种固定档位,复杂策略需 OPA/Gatekeeper 或 Kyverno。
六、排障类(最常考)
Q:Pod CrashLoopBackOff 怎么排查?
kubectl logs <pod> --previous看上一次崩溃的日志(关键)。kubectl describe pod看退出码:137= OOM/SIGKILL,1/2= 应用错误,127= 命令不存在。- 检查探针是否误杀、配置/Secret 是否缺失、依赖是否可达。
Q:节点 NotReady 怎么办?
kubectl describe node看 Conditions 与 Events。- 节点侧:kubelet 状态(
systemctl status kubelet)、容器运行时、磁盘(镜像/容器盘满)、内存压力、网络。 - 加分项:说明 PDB 的作用——阻止 drain 一次性驱逐过多副本。
Q:发布时总有少量 502,怎么解决?
- 根因:Endpoint 移除是异步传播的,容器先关了监听但上游还在转发。
- 解法:
preStopsleep 覆盖传播窗口 + 应用正确处理 SIGTERM + 保证terminationGracePeriodSeconds足够。 - 加分项:检查是否被 SIGKILL(Exit 137 = 优雅终止超时)。
七、开放题(考察深度)
常见开放题与回答要点:
| 题目 | 关键要点 |
|---|---|
| 为什么需要 readiness 和 liveness 分开? | liveness 误配会误重启;readiness 只摘流量 |
| 如何做零停机发布? | 优雅终止 + PDB + 滚动策略 + 长连接排空 |
| 集群要跨 AZ 吗? | 要,但要处理存储拓扑与跨 AZ 流量成本 |
| 什么时候不该用 K8s? | 有状态强一致且无成熟方案、极小规模、团队无运维能力 |
常见坑(面试中也常踩)
- 把 K8s 当"万能高可用":K8s 只负责编排,应用自身的高可用设计不可省略。
- 只背命令不谈权衡:面试官更想听"为什么这么选、代价是什么"。
- 说不清版本:很多 API/默认行为随版本变化,回答时注明版本会显得更严谨。
版本相关
本文涉及的具体行为(如 PSP 移除版本、PSA 档位、QoS 判定)随 Kubernetes 版本演进。面试前请以目标版本官方文档核对,并在回答时注明版本。
参考资料
- Kubernetes 官方文档:概念,访问日期:2026-10-09。
- Kubernetes 官方文档:任务(排障),访问日期:2026-10-09。
- Kubernetes 官方文档:Pod 安全标准,访问日期:2026-10-09。
- CNCF 认证与课程体系,访问日期:2026-10-09。