容器网络策略提供基于 K8s 原生 Networkpolicy 的集群容器间网络策略下发和管理能力,通过对集群内的防护对象进行定义,设置防护对象的出站和入站规则实现容器间网络访问控制。本文档将指导您如何配置和管理容器网络策略,以及实施容器间网络隔离。
限制条件
目前支持容器网络策略的集群范围包括:TKE 独立集群、TKE 托管集群、自建 K8s 集群。
1. 容器网络策略依赖集群部署网络组件,目前已支持 kube-router 网络组件类型。
使用容器网络策略可能造成集群性能损耗,请详细评估集群规模和性能损耗后使用。以部署 kube-router 组件开启网络策略为例,Pod 数量从2000增长到8000,部署网络策略时集群性能下降约10% - 20%,详情请参见 使用 Network Policy 进行网络访问控制。 管理集群网络策略
2. 在容器网络策略页面,可查看集群网络组件类型、集群地域和集群的已启用策略数和总策略数等相关信息。
3. 选择目标集群,单击策略管理,进入集群策略详情页面,支持对集群网络策略进行添加、编辑、删除以及自动发现策略置入等操作。
注意:
当前仅支持 Kube-Router 网络组件。
容器网络策略依赖集群部署网络组件,不支持的网络组件类型无法进入集群策略管理。
创建集群网络策略
1. 在集群策略详情页面,单击添加策略。
2. 在添加策略对话框中,填写策略名称和策略描述,选择视图模式或表单模式进入容器网络策略编辑。
注意:
编辑视图下切换模式将新建空白策略,原模式下创建的策略内容将不会被保留。
3. 在编辑视图下配置容器网络策略,单击页面右上角仅保存或保存并开启。
说明:
仅保存:保存当前网络策略但不会启用该条策略。
保存并开启:保存当前网络策略并立即开启该条策略。
策略说明
基本信息
策略名称:策略名称会关联 Networkpolicy Name、不允许重复,创建后不允许修改、最大长度需小于254个字符。
策略描述:最大长度需小于1000个字符。
策略类型
容器网络策略类型分为系统策略和自动发现两种,系统策略是通过容器安全控制台创建和管理的策略,自动发现指系统自动发现和获取到的集群 Networkpolicy 策略,包括手动在集群中创建和变更的策略。
自动发现的策略进行置入确认后将被纳入产品策略库中统一管理,允许在控制台对策略进行开启/关闭/编辑等操作。
防护对象
防护对象是命名空间内通过 pod 标签来关联的一个或多个 pod,具有相同标签的 pod 应用为一组防护对象。
防护对象通过多个 pod 标签关联时,多个 pod 标签之间为“与”关系,只有同时满足标签条件的 pod 应用才会被关联到防护对象。
命名空间:防护对象所属的命名空间,默认为 Default。
Pods:Pods 标签选择“全部 Pods”时,表示该命名空间下的所有 pod 均为防护对象,此时网络策略等同于对整个命名空间生效。
注意:
若使用多个 pod 标签关联防护对象,当新增的标签 key 值重复时,只会保留1个 key 值生效,旧 key 值标签会被覆盖。例如:使用 app1=a,app1=b,app2=c,app2=d 关联防护对象,生效标签为 app1=b,app2=d。
规则说明
容器网络策略默认规则为允许全部入站\\出站请求,默认情况下允许全部入站和出站请求。配置拒绝全部入站请求,防护对象将拒绝所有请求连接。配置拒绝全部出站请求,防护对象将拒绝所有发起的请求。
容器网络策略开启后规则1分钟左右生效,一般情况下秒级即可生效。
策略配置自定义规则并启用后,将只允许设定的入向/出向规则内的请求,其余请求将被拒绝。
自定义规则说明
通过自定义规则配置防护对象允许的入站来源和出向目标,将只允许指定来源或目标的协议端口范围请求,其它请求将默认被拒绝。
类型:
Pods:指定允许的 pod 应用,通过 pod 标签关联,多个 pod 标签满足一个即可放行。指定 Pods 标签时需指定命名空间,不指定(指命名空间放空)时生效范围为当前命名空间(与防护对象命名空间相同)。
命名空间:指定允许的命名空间,通过命名空间标签关联,多个命名空间标签满足一个即可放行。
IP:指定允许的 IP 范围,输入格式需满足 CIDR 格式且必须符合 IP 的合法性。
协议端口:可以与上述来源或目标类型组合使用,协议支持配置 TCP 或 UDP,端口为 pod 端口号,填写范围1-65535,多个端口号通过逗号分割。
说明:
若配置端口协议规则表示在指定协议下只允许指定端口请求,如“TCP 80”表示指定 TCP 协议下只允许80端口通信,UDP 协议不受影响。
自定义规则允许的来源或目标可以添加多个,满足任意其中一个规则即可匹配。
注意:
若使用多个标签关联 Pod 类型或命名空间类型,当新增的标签 key 值重复时,只会有1个 key 值生效,旧 key 值标签会被覆盖,例如:使用 app1=a,app1=b,app2=c,app2=d 关联防护对象,生效标签为 app1=b,app2=d。
策略规则冲突
当同一个防护对象存在多条网络策略规则冲突时,会遵循 K8S NetworkPolicy 策略冲突规则。例如:
|
| A 规则:防护对象为命名空间 A 的 pod1,规则为入站允许所有请求。 B 规则:防护对象为命名空间 A 的 pod1,规则为入站拒绝所有请求。 | |
| A 规则:防护对象为命名空间 A(默认为全部 pods),规则为入站允许所有请求。 B 规则:防护对象为命名空间 A 的 pod1,规则为入站拒绝所有请求。 | 防护对象命名空间 A 的 pod1入站拒绝所有,命名空间 A 的其它 pod 入站允许所有请求。 |
| A 规则:防护对象为命名空间 A(默认为全部 pods),规则为入站拒绝所有请求。 B 规则:防护对象为命名空间 A 的 pod1,规则为入站允许所有请求。 | 防护对象命名空间 A 的 pod1入站允许所有请求,命名空间 A 的其它 pod 入站拒绝所有请求。 |
策略变更审计
在网络策略页面,单击右上角的变更记录,可查看所有策略规则的变更审计记录,审计操作包括新增策略、开启策略、关闭策略、编辑策略、删除策略、确认策略。
相关文档
容器网络策略的常见隔离场景说明,请参见 使用场景。
本页内容是否解决了您的问题?