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个核心问题,每一章都围绕真实场景展开,帮助你把知识转化为可表达、可验证的面试答案。