- 文档首页
容器服务
容器服务 VKE
用户指南
网络
容器网络
使用 NetworkPolicy 实现网络访问控制
容器网络
使用 NetworkPolicy 实现网络访问控制
使用 NetworkPolicy 实现网络访问控制
Kubernetes 网络策略(NetworkPolicy)提供基于策略的网络控制。您可以通过 NetworkPolicy 从 IP 地址或网络端口层面控制 Pod 级别的网络流量。本文介绍 NetworkPolicy 的配置方法和使用场景。
使用限制
- VKE NetworkPolicy 能力仅支持在 VPC-CNI 网络模型的集群中使用。
- vpc-cni 组件需升级至 v1.6.4 及以上版本。
- 使用 NetworkPolicy 控制网络流量时,请注意对集群规模的限制。详情请参见 使用限制。
- 使用 NetworkPolicy 控制网络流量时,暂不支持以下场景。
- should allow egress access to server in CIDR block
- should deny ingress access to updated pod
- should allow ingress access from updated pod
- should enforce except clause while egress access to server in CIDR block
- should enforce ingress policy allowing any port traffic to a server on a specific protocol [Feature:UDP]
- should ensure an IP overlapping both IPBlock.CIDR and IPBlock.Except is allowed
- should properly isolate pods that are selected by a policy allowing SCTP, even if the plugin doesn't support SCTP
步骤一:开启 NetworkPolicy
- 在左侧导航栏中选择 集群,单击目标集群名称,进入集群管理页面。
- 在 网络 页签找到 vpc-cni 组件,将鼠标移动到组件卡片上,单击 配置,开启 NetworkPolicy 功能。
注意
- 开启(或关闭)NetworkPolicy 功能后,需要近 1 分钟时间生效。
- 修改此配置将导致组件重启,请在业务低峰期进行操作。
-
开启 NetworkPolicy 功能后,您可以通过配置 NetworkPolicy 资源,指定具体 Pod 的网络策略。网络策略中基于ingress和egress定义了流量方向,并基于ipBlock、namespaceSelector和podSelector进行入站/出站目标(命名空间、Pod)筛选。
配置示例和重点参数说明,如下所示:
apiVersion: networking.k8s.io/v1
name: network-policy-demo
重点字段说明,如下表所示:
- 在左侧导航栏中,单击 工作负载 > 对象浏览器。
- 在 分类 下拉菜单中选择 API Group,使用名称networking.k8s.io检索资源对象。
- 单击资源名称,进入资源详情页面,可以看到 NetworkPolicy 资源分类。
-
- 单击 NetworkPolicy 资源名称,进入资源详情,即可查看、修改或删除 NetworkPolicy 配置。
配置完成后,您可以在集群中创建多个工作负载,并基于已配置的 NetworkPolicy 流量规则,验证不同 Pod 之间的流量规则是否生效。例如:当配置了仅允许相同命名空间内互访的规则时,分别在不同命名空间内部署多个 Pod。登录 Pod 并使用 Ping 命令,即可验证其仅能访问相同命名空间的其他 Pod,而不能跨命名空间访问。示例如下:
root@deployment-demo-a-7796***:/
PING 192.168.2.159 (192.168.2.159) 56(84) bytes of data.
64 bytes from 192.168.2.159: icmp_seq=1 ttl=64 time=0.021 ms
64 bytes from 192.168.2.159: icmp_seq=2 ttl=64 time=0.030 ms
64 bytes from 192.168.2.159: icmp_seq=3 ttl=64 time=0.027 ms
64 bytes from 192.168.2.159: icmp_seq=4 ttl=64 time=0.021 ms
--- 192.168.2.159 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3057ms
rtt min/avg/max/mdev = 0.021/0.024/0.030/0.004 ms
root@deployment-demo-a-7796***:/
PING 192.168.2.157 (192.168.2.157) 56(84) bytes of data.
以下 YAML 配置示例定义了一个 NetworkPolicy 策略,仅允许相同命名空间下的 Pod 互相访问,但不能被其他命名空间的 Pod 访问。
apiVersion: networking.k8s.io/v1
以下 YAML 配置示例定义了一个 NetworkPolicy 策略,允许 Pod 拒绝任何入站流量,即 Pod 不能被任何对象访问。
apiVersion: networking.k8s.io/v1
以下 YAML 配置示例定义了一个 NetworkPolicy 策略,仅允许标签为name: demo-workspace命名空间下的 Pod 访问集群中的其他 Pod。
apiVersion: networking.k8s.io/v1
以下 YAML 配置示例定义了一个 NetworkPolicy 策略,仅允许集群中的 Pod 访问标签为name: demo-workspace命名空间下的 Pod。
apiVersion: networking.k8s.io/v1
以下 YAML 配置示例定义了一个 NetworkPolicy 策略,仅允许集群中的 Pod 访问集群外部 CIDR 为172.16.0.0/16、协议为TCP、端口号为8080的对象,不能访问其他网络对象或端口。
apiVersion: networking.k8s.io/v1
以下 YAML 配置示例定义了一个 NetworkPolicy 策略,仅允许集群中的 Pod 被集群外部 CIDR 为172.16.0.0/16的对象,通过TCP协议、80端口进行访问。
apiVersion: networking.k8s.io/v1
最近更新时间:2026.08.19 14:51:58