Network Policy 说明

最近更新时间:2025-07-17 10:44:52

我的收藏

简介

组件介绍

Network Policy 是 Kubernetes 提供的一种资源,用于定义基于 Pod 的网络隔离策略。它描述了一组 Pod 是否可以与其他组 Pod,以及其他 Network Entities 进行通信。本组件提供了针对该资源的 Controller 实现。如果您希望在 IP 地址或端口层面(OSI 第3层或第4层)控制特定应用的网络流量,则可考虑使用本组件。

部署在集群内的 Kubernetes 对象

Kubernetes 对象名称
类型
请求资源
所属 Namespace
networkpolicy
DaemonSet
每个实例CPU:250m,Memory:250Mi
kube-system
networkpolicy
ClusterRole
-
kube-system
networkpolicy
ClusterRoleBinding
-
kube-system
networkpolicy
ServiceAccount
-
kube-system

组件权限说明

权限说明

该组件权限是当前功能实现的最小权限依赖。
需要获取集群内的 namespaces、pods、services、nodes、endpoints 和 networkpolicies,所以需要 list/get/watch 权限。

权限定义

kind: ClusterRole
apiVersion: rbac.authorization.k8s.io/v1
metadata:
name: networkpolicy
rules:
- apiGroups:
- ""
resources:
- namespaces
- pods
- services
- nodes
- endpoints
verbs:
- list
- get
- watch
- apiGroups:
- "networking.k8s.io"
resources:
- networkpolicies
verbs:
- list
- get
- watch
- apiGroups:
- extensions
resources:
- networkpolicies
verbs:
- get
- list
- watch

操作步骤

1. 登录 容器服务控制台,在左侧导航栏中选择集群
2. 在集群列表中,单击目标集群 ID,进入集群详情页。
3. 选择左侧菜单栏中的组件管理,在组件管理页面单击新建
4. 新建组件管理页面中勾选 NetworkPolicy。NetworkPolicy 详细配置可参见 Network Policy 最佳实践
5. 单击完成即可创建组件。

注意事项

与 NodeLocalDNSCache 组件的 iptables 版本兼容性问题

如果集群中同时安装了 Network Policy 和 NodeLocalDNSCache 组件,使用的 iptables 版本与 Network Policy 中的 iptables 版本可能会有兼容性问题,导致 iptables 规则被反复添加,大量 iptables 会导致网络转发变慢,时延变高,直到完全无法运行。
具体根因是 Network Policy 和 NodeLocalDNSCache 组件的 iptables 在使用 nft 后端时,Network Policy 中使用的 iptables 版本是 v1.8.7,而 NodeLocalDNSCache 中使用的 iptables 版本可能为 v1.8.9 (NodeLocalDNSCache 版本小于 1.0.2 时),而 iptables v1.8.8 在参数解析方面有一些不兼容的变化,导致两者共存时存在兼容性问题。
具体变化参考如下 commit:
[1] https://git.netfilter.org/iptables/commit/?h=v1.8.8&id=250dce876d924b9467ffa035af445912e86ea93b
[2] https://git.netfilter.org/iptables/commit/?h=v1.8.8&id=5795a1b5b611fbf7a64be34b2675f88e8f9bbaef
[3] https://git.netfilter.org/iptables/commit/?h=v1.8.8&id=5489493e6590b35765f676d6638c696bfe00c4b4
[4] https://git.netfilter.org/iptables/commit/?h=v1.8.8&id=94309632a13000e06ed02e08f0bcbed94080abb3

如果已经安装了 NodeLocalDNSCache 组件 1.0.2 以下版本(注意这里是组件版本而不是社区版 node-local-dns 的版本),需卸载后重新安装确保组件版本在 1.0.2 之上(NodeLocalDNSCache 组件暂不支持直接升级)。如果是自行安装的社区版 node-local-dns,需确保安装 1.22.24 以下的版本。