Kubernetes的网络策略(NetworkPolicy)通过定义精细化规则控制Pod间通信,解决服务间安全隔离问题。核心逻辑如下:
- 对象控制:基于标签(Label)选择目标Pod,结合命名空间(Namespace)限定策略作用域。
- 规则类型:
- Ingress:定义允许访问目标Pod的入站流量来源(Source),可指定IP段、Namespace或Pod标签。
- Egress:控制目标Pod的出站流量去向(Destination)。
- 默认行为:未配置策略时所有Pod互通;策略生效后转为默认拒绝(需显式放行必要流量)。
实施步骤:
- 环境验证:确认CNI插件支持NetworkPolicy(如Calico/Cilium)。
- 场景建模:按业务逻辑划分服务层级(如前端仅允许访问API层,数据库仅接受API层访问)。
- 策略编写:通过YAML定义策略,示例:
apiVersion: networking.k8s.io/v1 kind: NetworkPolicy metadata: name: api-allow-frontend spec: podSelector: matchLabels: role: api-server ingress: - from: - podSelector: matchLabels: role: frontend
- 渐进式实施:先监控现有流量模式,再按最小权限原则逐步收紧策略,避免服务中断。
运维要点:
- 策略需覆盖所有关联命名空间
- 生产环境建议结合NetworkPolicy日志审计工具(如Cilium Hubble)
- 定期进行策略有效性测试(如模拟非法访问验证阻断)