1. 面试题库导览与能力地图

很多候选人准备Kubernetes网络方向的面试时,第一反应是背CNI插件、背Service类型、背NetworkPolicy的YAML。但真正进入面试后会发现,面试官的问题往往不是孤立的“是什么”,而是围绕一个真实故障或架构决策展开:Pod跨节点不通,你会从哪里开始查?Ingress流量绕了一圈没到后端,如何定位?集群要接入一套新的网络策略体系,你怎么评估风险?因此,本章的目标不是直接讲某个知识点,而是先建立一张“能力地图”,让你知道30个核心问题分别落在哪个能力象限,以及它们之间的依赖关系。

一、岗位职责决定了面试考察的边界

Kubernetes网络工程师并不是一个官方标准职位名,它通常出现在云原生平台团队、SRE团队或基础设施团队中。综合主流招聘需求,这个岗位的职责大致可以归为五类:

  • 集群网络规划与落地:选择或定制CNI方案,规划Pod CIDR、Service CIDR、节点网段,避免与现有IDC或VPC网段冲突。
  • 服务暴露与流量入口:设计Service、Ingress、Gateway API、LoadBalancer的暴露方式,处理南北向流量的接入与证书终止。
  • 网络策略与安全隔离:用NetworkPolicy、CiliumNetworkPolicy、mTLS等手段实现租户隔离、命名空间隔离和零信任。
  • 可观测性与故障排查:掌握tcpdump、conntrack、iptables/nftables、eBPF、CoreDNS日志等工具,能定位丢包、DNS解析失败、连接超时等问题。
  • 性能与稳定性:理解kube-proxy的iptables/IPVS模式差异、eBPF加速、MTU与分片、连接跟踪表容量等对生产环境的影响。

面试官的所有问题,基本都从这五类职责中派生。换句话说,如果你能把每个问题映射回“这是哪类职责下的什么场景”,回答时就不会散。

二、面试考察的四个维度

同一个知识点,面试官可能从四个维度来问,难度依次上升:

维度一:概念准确性。例如“Service的ClusterIP和NodePort有什么区别”。这类问题考察你是否真正理解对象模型,而不是只记得命令。

维度二:机制原理。例如“kube-proxy在iptables模式下,一个ClusterIP的请求经历了哪些链”。这要求你能说清数据包的流转路径,而不是停留在“它会做DNAT”。

维度三:排障与验证。例如“Pod能ping通Service IP但curl不通,可能有哪些原因”。这类问题没有唯一答案,面试官看的是你的排查顺序和判断依据。

维度四:架构权衡。例如“5000节点集群,你会选Cilium还是Calico,为什么”。这考察你在成本、性能、运维复杂度之间的取舍能力。

30个核心问题会均匀分布在这四个维度上。建议你在复习时,对每个问题都标注它属于哪个维度,避免只停留在维度一。

三、30个核心问题的分类框架

我们把30个问题分为六个模块,每个模块5题,形成一条从基础到进阶的学习路径:

模块 核心主题 典型问题示例 建议投入
模块A:网络模型基础 Pod网络、CNI规范、命名空间 Pod内容器如何共享网络命名空间 2天
模块B:Service与负载均衡 ClusterIP、NodePort、IPVS、EndpointSlice iptables与IPVS模式的差异 3天
模块C:Ingress与南北向流量 Ingress Controller、Gateway API、证书 Ingress流量路径与常见404原因 3天
模块D:网络策略与安全 NetworkPolicy、Cilium、mTLS 默认拒绝策略如何落地 3天
模块E:DNS与服务发现 CoreDNS、ndots、Headless Service DNS解析超时的排查思路 2天
模块F:排障与性能调优 tcpdump、conntrack、MTU、eBPF 跨节点Pod不通的分层排查 4天

这个顺序不是随意的。模块A是地基,模块B和C是日常最高频的工作面,模块D和E是安全与稳定性的延伸,模块F是把前面所有知识串起来的综合能力。如果你时间有限,优先保证A、B、F三个模块的深度。

四、一个可执行的学习路径

假设你有四周时间准备,可以按下面的节奏推进。这里给出的是一个示例计划,你可以根据自己的基础调整:

第1周:模块A + 模块B
  - 搭建一个3节点kind或kubeadm集群
  - 手动创建Pod,用nsenter进入网络命名空间查看veth对
  - 创建ClusterIP Service,用iptables-save观察KUBE-SERVICES链
  - 记录:Pod IP、Service IP、Endpoint列表、DNAT规则

第2周:模块C + 模块E
  - 部署ingress-nginx,配置一个带host的Ingress
  - 用curl -v观察请求头Host与后端响应
  - 部署CoreDNS,修改ndots,观察解析行为变化
  - 记录:Ingress Controller Pod IP、Upstream配置、DNS查询日志

第3周:模块D
  - 创建default-deny的NetworkPolicy
  - 用kubectl exec + nc验证放行与拒绝
  - 如果条件允许,部署Cilium并对比Hubble观测结果
  - 记录:策略命中情况、被拒绝的连接特征

第4周:模块F + 综合模拟
  - 人为制造跨节点不通(改MTU或加iptables DROP)
  - 按分层顺序排查:Pod内 -> veth -> 节点路由 -> CNI -> 对端
  - 用tcpdump在两端抓包,对比请求与响应
  - 模拟面试:每个模块抽2题,限时口述

这个计划的关键不是“看完”,而是每一步都留下可观察的结果。比如你在第1周执行iptables-save | grep KUBE-SVC,应该能看到类似下面的输出(以下为示例,实际链名和规则数量会因集群而异):

-A KUBE-SERVICES -d 10.96.0.10/32 -p udp --dport 53 -j KUBE-SVC-XXXX
-A KUBE-SVC-XXXX -m statistic --mode random --probability 0.50000000 -j KUBE-SEP-AAAA
-A KUBE-SVC-XXXX -j KUBE-SEP-BBBB
-A KUBE-SEP-AAAA -p udp -m udp --dport 53 -j DNAT --to-destination 10.244.1.5:53

看到这段规则,你就能理解:ClusterIP并不是一个真实监听的地址,而是iptables规则里的匹配条件;负载均衡是通过statistic模块的概率实现的。这种“看到真实规则”的学习方式,比背概念有效得多。

五、如何判断自己准备好了

可以用三个自检问题来评估:

  • 给你一个“Pod访问Service超时”的故障,你能在10分钟内说出至少5个排查点,并说明每个点的验证命令吗?
  • 让你设计一个多租户集群的网络隔离方案,你能说清选型理由、策略粒度、以及如何验证隔离生效吗?
  • 面试官追问“为什么”时,你能从数据包路径或控制器行为的角度解释,而不是重复结论吗?

如果这三个问题你都能从容回答,说明你已经具备了通过Kubernetes网络工程师面试的核心能力。接下来的29章,我们会逐个拆解这30个核心问题,每一章都围绕真实场景展开,帮助你把知识转化为可表达、可验证的面试答案。