---
title: Kubernetes NetworkPolicy 东西向与出口白名单(Pod 互通与 egress 控制)
date: 2025-11-26
keywords:
- NetworkPolicy
- egress
- ingress
- CIDR
- namespaceSelector
description: 通过默认拒绝与精确放行策略控制集群东西向与出口访问,提供DNS与外部API白名单示例,并给出连通性验证方法。
categories:
- 文章资讯
- 技术教程
---
概述
NetworkPolicy用于限制Pod间通信与外部访问。采用默认拒绝、按命名空间与标签精确放行,以及对DNS和外部API的白名单控制,可提升安全边界与合规性。
关键实践与参数
- 默认拒绝:创建禁止所有
ingress/egress的策略 - 内部互通:按命名空间与标签精确允许
- 出口白名单:允许DNS与特定CIDR或外部服务IP段
- 观测:使用连通性测试与日志审计
示例/配置/实现
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: default-deny-all
namespace: app
spec:
podSelector: {}
policyTypes: [Ingress, Egress]
---
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: allow-same-namespace
namespace: app
spec:
podSelector:
matchLabels: { role: api }
policyTypes: [Ingress]
ingress:
- from:
- podSelector: { matchLabels: { role: web } }
---
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: egress-whitelist
namespace: app
spec:
podSelector:
matchLabels: { role: api }
policyTypes: [Egress]
egress:
- to:
- namespaceSelector: { matchLabels: { kube-system: "true" } }
ports: [{ port: 53, protocol: UDP }]
- ipBlock:
cidr: 203.0.113.0/24
ports: [{ port: 443, protocol: TCP }]
验证
- 东西向:
webPod 访问api成功,其他命名空间访问被拒 - 出口:
apiPod 能解析DNS并访问白名单CIDR的外部API,其他外部目标被拒 - 审计:结合CNI或网关日志确认拒绝与允许次数
注意事项
- 需确认CNI实现支持NetworkPolicy(e.g., Calico/Cilium)
- 外部服务IP可能变化,建议配合网关或代理层进行域名到IP映射管理
- 避免过度宽泛的CIDR,保持最小放行
- 与Ingress/Egress Gateway策略协同

发表评论 取消回复