直接回答:三者职责分层。NetworkPolicy 是 L3/L4 防火墙:用 podSelector 定义哪些 Pod 之间、哪些命名空间之间允许通信,默认全放行,一旦某 Pod 被策略选中则未声明的即拒绝——它是零信任微分段在 K8s 的实现,由 CNI(Calico/Cilium 等)执行。Ingress 是 L7 入口:把集群外 HTTP 流量按 host/path 路由到 Service,顺带 TLS 终止。Gateway API 是 Ingress 的继任者:资源拆成 GatewayClass/Gateway/HTTPRoute,基础设施方管 Gateway、应用方挂 Route,权责清晰且表达力更强。

展开解析:生产实践:新集群先上"默认拒绝"的 NetworkPolicy(deny-all ingress/egress),再逐服务白名单放行,被入侵时能显著限制横向移动;注意 NetworkPolicy 只管 Pod 间,出口到外部 IP 要用 Cilium 的 FQDN 策略或出口网关。Ingress 的痛点推动了 Gateway API:多团队共用一个 Ingress 资源注解打架、跨命名空间引用无权限控制、GRPC/ TCP 路由表达力弱。选型建议:新项目直接用 Gateway API(Envoy Gateway、Cilium、NGINX Gateway Fabric 均已成熟),存量 Ingress 可并存渐进迁移。四层负载均衡、东西向流量则分别归 Service(LoadBalancer 型)和服务网格管。

追问方向:NetworkPolicy 的 egress 为何常被忽略?Ingress 注解泛滥问题 Gateway API 怎么解?Service 的四种类型分工?

(约 470 字)