第4章 Service与网络模型面试要点

Service 是 Kubernetes 网络模型的核心抽象,面试中围绕“网络连通、服务发现、外部访问”展开。本章拆解高频问题与回答框架,帮助你在不同公司面试中精准表达。

Service 与网络模型回答框架 理解需求与场景 选择Service类型 配置YAML明细 验证连通性 深入原理(kube-proxy/CNI) 内部/外部访问? ClusterIP/NodePort/LB ports/targetPort iptables/IPVS/网络策略

问答卡片 ① Service有哪些类型?如何选择?

  • 面试官考察点:对服务暴露场景的理解,是否能按需选型
  • 回答框架:列举4种类型(ClusterIP/NodePort/LoadBalancer/ExternalName) → 给出选择依据 → 以一句话场景匹配收尾
  • 简短示例回答:“ClusterIP用于集群内部访问,NodePort暴露固定端口给外部,LoadBalancer对接云LB实现高可用,ExternalName用于DNS重定向。比如微服务之间用ClusterIP,公网API用LoadBalancer。”
  • 可能追问:“ExternalName 的 DNS 记录怎么解析?”“不使用默认 ClusterIP 有什么后果?”“Headless Service 是什么场景?”
  • 避坑提醒:不要只背定义,一定要结合“为什么这样选”。避免混淆 Headless Service 和普通 Service 的 DNS 行为。

问答卡片 ② ClusterIP、NodePort、LoadBalancer 三者网络流量路径

  • 面试官考察点:数据流抽象理解,是否了解 kube-proxy 和 iptables 转发
  • 回答框架:描述 Pod IP 到 Service IP 的映射 → kube-proxy 设置 iptables/IPVS 规则 → 三种类型的变化点 → 以某个类型举例完整路径
  • 简短示例回答:“ClusterIP:请求到虚拟IP → kube-proxy 通过DNAT转发到后端Pod(Round Robin)。NodePort:在ClusterIP基础上,每个节点监听指定端口,外部请求经过节点 → DNAT → Pod。LoadBalancer:云LB接收流量 → NodePort转发 → Pod。”
  • 可能追问:“externalTrafficPolicy 值为 Local 时有什么影响?”“kube-proxy 三种模式(iptables/IPVS/userspace)区别?”“如果 kube-proxy 挂掉,Service还能访问吗?”
  • 避坑提醒:不要说“直接访问Pod IP”,要强调“通过kube-proxy实现负载均衡”。iptables模式性能问题和IPVS优化可以适当展开。

问答卡片 ③ Kubernetes 网络模型核心原理

  • 面试官考察点:是否理解扁平网络、Pod间直接通讯、CNI插件作用
  • 回答框架:Pod网络(每个Pod有独立IP) → CNI实现跨节点容器网络 → Service网络抽象(VIP+端点) → 网络策略(NetworkPolicy)控制流量
  • 简短示例回答:“K8s要求每个Pod拥有唯一IP,所有Pod之间无需NAT直接通信。CNI插件(如Calico/Flannel)负责跨主机网络连通。Service通过标签选择器维护Endpoints,kube-proxy在节点上生成转发表。”
  • 可能追问:“Flannel 和 Calico 在数据路径上有什么不同?”“NetworkPolicy 如何实现?”“Pod 跨节点访问的完整路径(包括overlay或路由模式)?”
  • 避坑提醒:不要只讲概念,要能画出网络数据包流经的节点和虚拟设备。实习生常忽略CNI插件配置细节,可以举例Calico的BGP模式。

公司侧重点

公司类型 侧重点 常见追问方向
一线大厂(Meta/阿里/腾讯) 网络性能、多集群ServiceMesh、安全策略 ClusterIP的kube-dns缓存、IPVS vs iptables、Calico的eBPF
中型互联网/独角兽 基础故障排查、NodePort端口冲突、Ingress配置 externalTrafficPolicy、LoadBalancer的会话保持、headless service的SRV记录
传统企业/金融云 网络隔离、固定IP、对外暴露安全性 NetworkPolicy实现租户隔离、静态IP方案、Ingress TLS termination

面试官画像

类型:平台/SRE/基础设施组负责人,或容器化项目技术 lead

期望:能够讲清楚一条流量从哪里出发,经过哪些组件,最终到达容器。不要求背出所有端口号,但要有“数据流思维”。

常见态度:如果候选人对 kube-proxy 模式、CNI 原理能说出自己的理解,面试官会加分;反之只会背诵 Kubernetes 文档则会减分。

💡 整体回答框架(可迁移至任何网络问题)
  1. 定性:先明确“这个问题属于访问类型(内外)还是连通原理?”
  2. 选型/路径:给出两种以上可选方案,对比优劣(例如 ClusterIP vs Headless)
  3. 数据流:用“谁发起 → 遇到什么规则 → 到达哪”来示例说明
  4. 拔高延伸:如果时间充裕,补充“kube-proxy模式选择”或“CNI插件影响”

高频追问集锦

  • NodePort 的默认端口范围是多少?能否修改?(30000-32767,通过kube-apiserver参数修改)
  • ExternalTrafficPolicy 为 Local 时如何影响源IP?
  • Headless Service 的 DNS 记录是怎么样的?(每个Pod直接返回A记录)
  • kube-proxy 的 IPVS 模式对比 iptables 模式有什么优势?(调度算法多、性能好)
  • NetworkPolicy 如何实现三层隔离?默认是allow all还是deny all?
⚠ 避坑三条
  • 避坑1:不要混淆“Service IP”和“Pod IP”。Service IP 是一个虚拟IP,不能 ping 通(除非使用特定配置)。
  • 避坑2:不要忽略 kube-proxy 模式的选择。很多实习生只记得 iptables,不知道 IPVS 在大规模集群的优势。
  • 避坑3:网络策略(NetworkPolicy)是白名单机制,默认无策略时“允许所有”,不要误解为“默认拒绝”。