这是《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 为什么不生效?
检查:
- 指标是否为 unknown;
- 是否设置 requests;
- 副本是否达到 min / max;
- Metrics Server 是否正常;
- 稳定窗口和容忍度;
- 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 排查、网络、存储、控制器、调度、发布和安全。回答要结合生产影响和验证方法。
思考题
- 如何完整解释一次 Pod 创建?
- Endpoints 为空的排查顺序?
- HPA 和 VPA 如何配合?
- Operator 引入的收益和风险?
- 如何设计生产发布回滚?