通过 Kubernetes 配置网络策略限制 Pod 流量,需创建 NetworkPolicy 资源,定义 podSelector、ingress/egress 规则。例如:
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: deny-all-except-frontend
spec:
podSelector:
matchLabels:
app: backend
policyTypes:
- Ingress
ingress:
- from:
- podSelector:
matchLabels:
app: frontend
延伸知识点:namespaceSelector 与 podSelector 联合使用
在 NetworkPolicy 中,namespaceSelector
和 podSelector
可组合定义跨命名空间的流量规则。例如,仅允许来自特定命名空间(如 project: prod
)且带有标签 role: api
的 Pod 访问:
- from:
- namespaceSelector:
matchLabels:
project: prod
podSelector:
matchLabels:
role: api
注意:
- 未显式允许的流量默认被拒绝(若策略存在);
- 需集群 CNI 插件支持(如 Calico/Cilium);
- 空
podSelector
({})表示选中当前命名空间所有 Pod。