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

这个资源还没学到,着重查看!!!以下是对这一资源的讲解。
Kubernetes NetworkPolicy 简明介绍
NetworkPolicy 是 Kubernetes 中用于控制 Pod 之间网络流量的资源,相当于 Kubernetes 的「防火墙规则」。
核心功能
-
流量控制:
- 控制哪些 Pod 可以互相通信
- 限制进出 Pod 的流量(入站/出站)
-
精细化管理:
- 基于标签选择器(Label Selector)指定目标 Pod
- 可限制特定端口、协议、IP 段等
关键特性
| 特性 | 说明 |
|---|---|
| 策略隔离 | 默认拒绝所有流量(需显式声明允许规则) |
| 标签选择器 | 通过 podSelector 选择应用策略的 Pod |
| 规则方向 | 支持 Ingress(入站)和 Egress(出站) |
| 多种匹配条件 | 可基于 Pod 标签、命名空间、IP 块等定义规则 |
典型使用场景
-
微服务隔离
# 只允许 frontend Pod 访问 backend podSelector: matchLabels: app=backend ingress: - from: - podSelector: matchLabels: app=frontend -
数据库保护
# 只允许特定 Pod 访问 MySQL podSelector: matchLabels: db=mysql ingress: - ports: [{port: 3306}] from: - podSelector: matchLabels: app=api -
拒绝出站流量
# 禁止 Pod 访问外部 podSelector: matchLabels: role=isolated policyTypes: [Egress] # 显式拒绝所有出站
工作原理
-
依赖 CNI 插件
需要集群部署支持 NetworkPolicy 的网络插件(如 Calico、Cilium、WeaveNet) -
规则评估流程
graph TD A[流量到达 Pod] --> B{匹配 NetworkPolicy?} B -->|是| C[按规则允许/拒绝] B -->|否| D[默认拒绝]
使用限制
- 必须启用网络插件支持
- 对 NodePort/LoadBalancer 服务的流量控制有限
- 部分云厂商有特殊实现(如 AWS VPC CNI)
示例命令
# 查看现有策略
kubectl get networkpolicy
# 测试连通性
kubectl exec -it pod1 -- curl pod2
NetworkPolicy 是实现 Kubernetes 零信任网络的重要工具,适合需要精细控制服务间通信的场景。
浙公网安备 33010602011771号