集群网络是 Kubernetes 的通信中枢,CNI 插件负责为 Pod 分配 IP 并打通跨节点通信。面试高频考察点:Flannel 与 Calico 的原理对比、网络策略实现机制、Overlay 与纯路由模式的适用场景。掌握以下框架和案例,能回答 90% 的网络考题。
Kubernetes工程师面试宝典 - 第4节
4.1 面试问答卡片
Q1:CNI 是什么?Flannel 和 Calico 的核心区别是什么?
面试官考察点:基础概念清晰度、方案选型判断力、网络模型理解。
回答框架:① CNI 定义(接口标准,分配 IP、配置网络)② Flannel:Overlay(VXLAN/主机网关),简单,不支持 NetworkPolicy ③ Calico:纯三层 BGP 路由(或 IPIP 封装),高性能,原生支持网络策略。
CNI(Container Network Interface)是 Kubernetes 的网络插件标准。Flannel 通过 VXLAN 隧道封装跨节点流量,配置简单但缺乏网络策略。Calico 使用 BGP 直接路由(或 IPIP 封装),性能更高,支持 NetworkPolicy 实现精细化的微隔离。选型时,小型集群用 Flannel,有安全隔离需求选 Calico。
可能追问:VXLAN 封装开销多大?BGP 如何防止环路?
避坑提醒:不要只说“Flannel 比 Calico 简单”,需量化对比(如 Flannel 额外封装 50 字节,Calico BGP 模式下无封装)。
Q2:Kubernetes 的网络策略(NetworkPolicy)如何工作?举例说明。
面试官考察点:策略实现原理、iptables/IPVS 应用、实际配置能力。
回答框架:① NetworkPolicy 是 namespace 级资源,通过标签选择 Pod ② 定义 ingress/egress 规则,匹配来源/目标 IP 或标签 ③ 底层由 CNI 插件(如 Calico)转换为 iptables 规则或 eBPF 程序。
NetworkPolicy 基于 iptables 实现。例如:允许来自 app=frontend 的 Pod 访问 db=mysql 的 Pod 的 3306 端口。Calico 会在每个节点上生成对应的 iptables 链,匹配 src 标签和 dst 端口。需要确保 CNI 支持 NetworkPolicy(Flannel 不支持)。
可能追问:如何实现默认拒绝所有入口流量?iptables 规则过多对性能的影响?
避坑提醒:不要混淆 NetworkPolicy 与 Service Mesh 的 mTLS 安全策略;强调 NetworkPolicy 是四层防火墙,不能加密。
Q3:Calico 中 BGP 模式和 IPIP 模式的区别?生产环境如何选择?
面试官考察点:网络拓扑理解、性能与兼容性权衡。
回答框架:① BGP 模式:直接路由,无额外封装,依赖底层网络支持路由传播 ② IPIP 模式:Overlay 封装(IP over IP),降低对网络基础设施要求 ③ 选型:BGP 适合内网可控、硬件路由器支持 BGP;IPIP 适合公有云或路由不可控环境。
BGP 模式下,Calico 将 Pod CIDR 通过 BGP 通告给物理路由器,实现纯三层通信,延迟低。IPIP 模式通过隧道封装跨节点流量,额外约 20 字节开销,但可在不支持 BGP 的云环境使用。生产建议:自有 IDC 用 BGP,AWS/GCP 用 IPIP 或 Calico 的 VXLAN 模式。
可能追问:BGP 如何处理多 AS?IPIP 与 VXLAN 哪个开销大?
避坑提醒:回答时强调“BGP 要求节点间二层可达”是不准确的——BGP 运行在三层,只管路由不关心链路层。
4.2 项目案例:容器平台网络迁移与策略治理
项目名称:金融容器云 Flannel 迁 Calico 与网络策略落地
| 业务背景 | 原 Flannel 集群无网络隔离,合规要求实现 Pod 级白名单;同时跨可用区流量延迟上升,需降低 Overhead。 |
| 规模指标 | 500 个工作节点,6000+ Pod,日均流量 2TB,3 个可用区。 |
| 技术栈 | Kubernetes 1.24 · Calico 3.22 · BGP · iptables · CoreDNS · Prometheus |
| 核心难点 | ① Flannel 到 Calico 无缝迁移,零停机 ② BGP 路由条数膨胀(每个 Pod 一个 /32 路由) ③ NetworkPolicy 白名单人工维护量大 |
| 面试高频追问 | 迁移时如何保证服务不中断?BGP 路由收敛时间长如何优化?NetworkPolicy 如何自动生成? |
| 可迁移回答话术 | “我们采用逐步迁移策略:先新节点部署 Calico,通过 nodeSelector 切流量,同时保留 Flannel 节点;等稳定后删除旧节点。为解决 BGP 路由量,启用 Calico 的 IPIP 模式并聚合路由(/26 子网)。NetworkPolicy 通过 Kubernetes 审计日志 + OPA 自动生成白名单规则,减少人工干预。” |
加分提示:提到“Calico 的 Felix 组件监听 iptables 变更”展示对 Agent 原理的熟悉;使用
calicoctl node status 排障;利用 ip route 排查路由问题。