在 Kubernetes (k8s) 中,NetworkPolicy 是一种用于控制 Pod 之间网络流量的资源对象,它基于 Pod 标签(Labels)和命名空间(namespace)来定义网络访问规则,实现了对 Pod 进出流量的精细化控制。
核心作用
- 隔离网络流量:默认情况下,k8s 集群中所有 Pod 之间可以自由通信,NetworkPolicy 可限制这种通信,只允许符合规则的流量通过。
- 定义访问策略:通过规则指定 “哪些 Pod 可以被谁访问” 或 “哪些 Pod 可以访问谁”。
- 增强安全性:遵循最小权限原则,只开放必要的网络访问,减少攻击面。
工作原理
NetworkPolicy 依赖 网络插件(CNI) 实现(如 Calico、Cilium、Weave Net 等),不同插件对策略的支持可能存在差异。其核心逻辑是:
- 基于 Pod 标签和命名空间筛选目标 Pod(策略作用的对象)。
- 对目标 Pod 的入站(Ingress)和出站(Egress)流量定义允许 / 拒绝规则。
- 规则匹配的维度包括:源 / 目标 Pod 标签、命名空间标签、IP 地址段、端口等。
关键概念
-
Pod 选择器(podSelector)用于指定策略作用于哪些 Pod(通过标签匹配)。若为空,则匹配命名空间内所有 Pod。
-
命名空间选择器(namespaceSelector)用于匹配特定命名空间(通过标签),常与 podSelector 结合使用,限定跨命名空间的流量。
-
入站规则(Ingress)控制流入目标 Pod 的流量,可定
K8s NetworkPolicy详解

最低0.47元/天 解锁文章
770

被折叠的 条评论
为什么被折叠?



