networkpolicy-创建网络策略让指定pod可以访问限制其他pod的流量

这个资源还没学到,着重查看!!!以下是对这一资源的讲解。

Kubernetes NetworkPolicy 简明介绍

NetworkPolicy 是 Kubernetes 中用于控制 Pod 之间网络流量的资源,相当于 Kubernetes 的「防火墙规则」。


核心功能

  1. 流量控制

    • 控制哪些 Pod 可以互相通信
    • 限制进出 Pod 的流量(入站/出站)
  2. 精细化管理

    • 基于标签选择器(Label Selector)指定目标 Pod
    • 可限制特定端口、协议、IP 段等

关键特性

特性 说明
策略隔离 默认拒绝所有流量(需显式声明允许规则)
标签选择器 通过 podSelector 选择应用策略的 Pod
规则方向 支持 Ingress(入站)和 Egress(出站)
多种匹配条件 可基于 Pod 标签、命名空间、IP 块等定义规则

典型使用场景

  1. 微服务隔离

    # 只允许 frontend Pod 访问 backend
    podSelector: matchLabels: app=backend
    ingress:
    - from:
      - podSelector: matchLabels: app=frontend
    
  2. 数据库保护

    # 只允许特定 Pod 访问 MySQL
    podSelector: matchLabels: db=mysql
    ingress:
    - ports: [{port: 3306}]
      from:
      - podSelector: matchLabels: app=api
    
  3. 拒绝出站流量

    # 禁止 Pod 访问外部
    podSelector: matchLabels: role=isolated
    policyTypes: [Egress]  # 显式拒绝所有出站
    

工作原理

  1. 依赖 CNI 插件
    需要集群部署支持 NetworkPolicy 的网络插件(如 Calico、Cilium、WeaveNet)

  2. 规则评估流程

    graph TD A[流量到达 Pod] --> B{匹配 NetworkPolicy?} B -->|是| C[按规则允许/拒绝] B -->|否| D[默认拒绝]

使用限制

  1. 必须启用网络插件支持
  2. 对 NodePort/LoadBalancer 服务的流量控制有限
  3. 部分云厂商有特殊实现(如 AWS VPC CNI)

示例命令

# 查看现有策略
kubectl get networkpolicy

# 测试连通性
kubectl exec -it pod1 -- curl pod2

NetworkPolicy 是实现 Kubernetes 零信任网络的重要工具,适合需要精细控制服务间通信的场景。

posted on 2025-05-20 17:55  Leo-Yide  阅读(80)  评论(0)    收藏  举报