Docker KubernetesNotes

第 32 章:面试题精讲

zjc 于 2026-02-01 发布

这是《Docker 与 Kubernetes 零基础实战指南》的独立章节版。本章从概念、实操和生产排查三个视角展开,代码块保留了原书可直接运行的版本。 本章整理容器与 Kubernetes 高频面试题,并给出体现工程判断的回答。

32.1 容器和虚拟机区别?

容器共享宿主机内核,通过 Namespace 隔离视图、Cgroup 限制资源、UnionFS 提供镜像层;虚拟机通过 Hypervisor 虚拟硬件并运行独立内核。容器启动快、密度高,安全边界弱于 VM。

32.2 Pod 状态排查?

kubectl describe pod 看 Events,再看 logs。Pending 看调度,ImagePullBackOff 看镜像,CrashLoopBackOff 看应用和配置,OOMKilled 看内存 limit。

32.3 Service 和 Ingress 区别?

Service 提供稳定虚拟 IP 和四层负载均衡;Ingress / Gateway API 提供 HTTP 路由、TLS 和路径域名分流。Ingress 还需要控制器实现。

32.4 Deployment 和 StatefulSet 区别?

Deployment 适合无状态可任意替换副本;StatefulSet 提供稳定名称、DNS 和存储,适合数据库和主从系统。StatefulSet 不自动完成数据库复制和切换。

32.5 requests 和 limits 区别?

requests 影响调度和资源保障;limits 限制运行时上限。CPU 超限会节流,内存超限可能 OOM Kill。

32.6 HPA 为什么不生效?

检查:

  1. 指标是否为 unknown;
  2. 是否设置 requests;
  3. 副本是否达到 min / max;
  4. Metrics Server 是否正常;
  5. 稳定窗口和容忍度;
  6. Pod 是否 Pending。

32.7 Service 后端不通?

检查 Endpoints、selector、readiness、targetPort、DNS、NetworkPolicy、应用监听地址和 kube-proxy。

32.8 如何做优雅停机?

容器 PID 1接收 SIGTERM,应用停止接新请求、处理存量请求、关闭连接和线程池;配合 preStop 和 terminationGracePeriodSeconds。

32.9 镜像安全如何治理?

固定基础镜像和版本、多阶段构建、非 root、扫描、签名、准入校验、Secret 不入镜像、CI 最小权限。

32.10 etcd 重要性?

etcd 保存集群状态。etcd 不可用时无法创建和更新对象,已有容器通常继续运行,但集群丧失控制能力。需要备份、低延迟磁盘和多数派健康。

32.11 系统设计题:部署高并发服务

回答框架:

镜像交付
Deployment + HPA
requests / limits
Service / Ingress
配置和 Secret
探针和优雅停机
监控告警
灰度和回滚
容量和依赖保护

本章小结

面试重点通常覆盖容器原理、Pod 排查、网络、存储、控制器、调度、发布和安全。回答要结合生产影响和验证方法。

思考题

  1. 如何完整解释一次 Pod 创建?
  2. Endpoints 为空的排查顺序?
  3. HPA 和 VPA 如何配合?
  4. Operator 引入的收益和风险?
  5. 如何设计生产发布回滚?