考点精讲
- Kubernetes 网络模型规定:每个 Pod 有唯一 IP、Pod 间不经 NAT 直接通信、节点与 Pod 互通。这套模型由 CNI 插件负责落地。NetworkPolicy 是在此之上的网络隔离策略,通过 podSelector、namespaceSelector 等规则控制流量的入站(ingress)和出站(egress)。要特别注意两点:一是「默认全放通」——不创建任何策略时 Pod 间完全互通,一旦创建了策略,未匹配的流量会被默认拒绝,形成白名单;二是 NetworkPolicy 需要支持它的 CNI 插件才能生效(如 Calico),Flannel 默认不启用。漏写 egress 规则是常见错误,会让出站流量被意外阻断。
记忆技巧
默认全网通,写了策略就白名单化
NetworkPolicy 要有支持它的 CNI(如 Calico)
NetworkPolicy 要有支持它的 CNI(如 Calico)
常见误区
- 用 Flannel 默认不启 NetworkPolicy 导致策略无效
- 以为 NetworkPolicy 是默认拒绝(实际默认放通)
- 漏写 egress 规则导致出站被断
真题思路
- 【示例】本页题目为教学模拟题,非真题,仅用于讲解答题思路 关于 NetworkPolicy 默认行为,正确的是?
默认拒绝所有流量 默认全放通,创建策略后未匹配流量被拒绝 默认只允许 ingress 默认只允许 egress
答案:B
解析:NetworkPolicy 默认全放通;一旦创建策略,未匹配流量默认拒绝,形成白名单。
常见问题
Q:不创建 NetworkPolicy 时 Pod 之间能通信吗
A:能,默认全放通,创建策略后才变成白名单。
Q:为什么我的 NetworkPolicy 不生效
A:可能是所用 CNI 插件(如 Flannel 默认)不支持 NetworkPolicy,需换 Calico 等。
Q:只写了 ingress 规则,出站会被断吗
A:会,未匹配的 egress 流量默认被拒绝,需补 egress 规则。
相关知识
教材出处:第14章 Kubernetes网络安全 网络模型、CNI与NetworkPolicy