Kubernetes 核心概念与基础原理

本章聚焦面试中最高频的基础原理问题。实习生面试不要求深度源码,但必须能清晰解释 Pod、Service、Deployment、Namespace 等核心概念,并理解它们之间的协作关系。掌握以下回答框架,能帮你避免“概念背诵”、体现系统性理解。

K8s 核心概念分层回答框架 Pod(最小单元) 控制器(Deploy) Service(网络) ConfigMap/Secret Namespace(隔离) 先讲最小单元,再谈管理与调谐 然后说明网络、配置、隔离

本章引导:面试官会从一个基础概念切入,然后不断追问“为什么需要这个”“与同类概念的区别”。使用“定义 → 为什么需要 → 实际使用场景 → 常见问题”四步框架回答,可自然应对。


1. 请解释 Pod 是什么?它与容器有什么关系?

  • 面试官考察点:是否真正理解 Pod 的设计动机(共享网络/存储、调度原子性),而不仅仅是背诵定义。
  • 回答框架:① 一句话核心定义 → ② 与容器的区别(Pod 是运行环境,容器是进程) → ③ 为什么需要 Pod(共享网络和存储卷) → ④ 举例说明(Sidecar 模式)。
  • 简短示例回答(80字):“Pod 是 K8s 最小调度单元,封装一组共享网络和存储的容器。容器是 Pod 内的独立进程。Pod 的设计使多个容器能通过 localhost 通信,方便实现日志采集、代理等 Sidecar 模式。”
  • 可能追问:Pod 的生命周期是怎样的?一个 Pod 里可以跑一个容器吗?Pod 的 IP 是永久的吗?
  • 避坑提醒:不要把 Pod 等同于容器,也不要混淆 Pod 与 Deployment。明确表示 Pod 是临时、可被重建的。

2. 谈谈 Kubernetes 中 Service 的作用和常见类型

  • 面试官考察点:对服务发现、负载均衡的理解,是否能区分 ClusterIP、NodePort、LoadBalancer 的使用场景。
  • 回答框架:① 核心作用(提供稳定的 VIP 和 DNS,解耦后端 Pod) → ② 三种类型及适用场景 → ③ 工作流程(Selector → Endpoint → iptables/IPVS) → ④ 简单对比。
  • 简短示例回答(90字):“Service 为一组 Pod 提供固定入口和负载均衡。ClusterIP 仅集群内访问,适合内部服务;NodePort 暴露节点端口,适合开发测试;LoadBalancer 集成云厂商 LB,用于生产。内部通过 Endpoint 跟踪 Pod 变化,实现动态路由。”
  • 可能追问:Service 是如何实现负载均衡的?Ingress 和 Service 有什么区别?Headless Service 有何用途?
  • 避坑提醒:不要只说类型而忽略 Selector 机制。Headless 和 ExternalName 属于进阶,如果被问及可以展示,但不要主动提以免跑偏。

3. Deployment 如何实现滚动更新?如何保证应用不中断?

  • 面试官考察点:对控制器概念、更新策略、健康检查的理解,是否关注生产可用性。
  • 回答框架:① Deployment 管理 ReplicaSet,通过 ReplicaSet 替换实现更新 → ② 滚动更新参数(maxSurge, maxUnavailable)→ ③ 关键依赖:Readiness Probe → ④ 回滚机制(revisionHistoryLimit)。
  • 简短示例回答(100字):“Deployment 创建新 ReplicaSet 逐步替换旧 Pod,通过 maxSurge 和 maxUnavailable 控制速率。只有 Pod 通过 Readiness Probe 后才会继续更新,确保流量不中断。若新版本失败,可执行 kubectl rollout undo 快速回滚到上一版本。”
  • 可能追问:Deployment 与 StatefulSet 的区别?如果 Readiness Probe 未配置会出现什么情况?Canary 发布怎么实现?
  • 避坑提醒:不要遗漏 Readiness Probe 这个关键保证,只说“滚动更新”但没讲健康检查是常见扣分点。另外,明确区分 Deployment 适用于无状态应用。

公司侧重点

公司侧重点典型追问方向
字节跳动大规模集群下 Pod 调度、资源利用率Pod 被驱逐原因、QoS 等级、污点与容忍
阿里巴巴Service Mesh 集成、微服务治理Service 与 Istio 关系、DNS 解析流程
腾讯游戏/实时应用场景,StatefulSet、网络模型Headless Service、Pod IP 固定需求
美团稳定性、灰度发布、配置热更新Deployment 分批发布、ConfigMap 更新方式
百度跨集群部署、联邦、边缘节点Namespace 网络隔离、多集群实践

面试官画像

K8s 实习生面试官通常是团队内的高级工程师或 Tech Lead。他们期望候选人:

  • 概念清晰:能用自己的语言解释核心术语,而非教科书的定义。
  • 有场景感:知道每个概念解决什么问题,不孤立背诵。
  • 理解“不可变基础设施”思维:Pod 可被重建、配置外置、声明式管理。
  • 愿意承认不知道:实习生允许“不深”,但不能“乱猜”。遇到不熟悉的领域说“我不了解,但根据我的理解……”会加分。

通用回答框架

面对任何 K8s 概念问题,推荐使用四段式回答:

  1. 一句话定义(是什么)
  2. 为什么需要(解决了什么痛点)
  3. 典型使用场景(结合例子)
  4. 常见陷阱/注意事项(展示思考深度)

示例:当被问“什么是 Namespace” ——
① Namespace 是 K8s 中用于资源隔离和分组的逻辑边界。
② 没有它,多团队共用集群时无法区分资源,容易互相影响。
③ 例如开发、测试环境分别放在不同 Namespace 下,通过 RBAC 控制权限。
④ 注意:Namespace 不能完全实现网络隔离,需要 NetworkPolicy 配合。

完整回答范例(针对问题:Pod 与容器的关系)

“Pod 是 K8s 中最小的调度和资源单位,它里面可以包含一个或多个容器。
这些容器共享同一个网络栈(IP、端口空间)和存储卷(Volume)。
容器的本质是进程,而 Pod 为这些进程提供运行环境。
比如一个 Web 容器和一个日志采集容器放在同一个 Pod 里,它们就能通过
localhost 直接通信,日志采集器可以读取 Web 容器的日志文件。
需要注意:Pod 内的容器应该紧密耦合,否则应该拆分为不同 Pod。”  

面试官常见追问(从本章问题延伸)

  • ReplicaSet 和 Deployment 的关系?
  • K8s 中如何实现服务发现(DNS 方式)?
  • ConfigMap 更新后 Pod 如何感知?
  • Pod 的生命周期状态有哪些?
  • 怎么排查 Pod 一直处于 Pending 状态?

避坑指南

  • 别混淆抽象层:Pod 是对象,容器是 Runtime;Deployment 是控制器,ReplicaSet 是中间对象。
  • 别忽略默认值:提到 Service 类型时,默认是 ClusterIP;Deployment 默认更新策略是 RollingUpdate。
  • 别过度扩展:实习生不要主动讲 Operator、CRD、Custom Controller 等高级话题,除非被明确问到。
  • 别用化语言:例如“Pod 永远不重启”“Service 一定使用 iptables” → 改用“默认”“通常”“实现方式之一”。