第 19 章 NetworkPolicy [networking.k8s.io/v1]


描述
NetworkPolicy 描述一组 Pod 允许哪些网络流量
类型
对象

19.1. 规格

属性类型描述

apiVersion

字符串

APIVersion 定义对象的这个表示法的版本化的 schema。服务器应该将识别的模式转换为最新的内部值,并可拒绝未识别的值。更多信息: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources

kind

字符串

kind 是一个字符串值,代表此对象所代表的 REST 资源。服务器可以从客户端向其提交请求的端点推断。无法更新。采用驼峰拼写法 (CamelCase)。更多信息: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds

metadata

ObjectMeta

标准对象元数据。更多信息: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata

spec

对象

NetworkPolicySpec 提供 NetworkPolicy 的规格

19.1.1. .spec

描述
NetworkPolicySpec 提供 NetworkPolicy 的规格
类型
object
必填
  • podSelector
属性类型描述

egress

数组

egress 是要应用到所选 pod 的出口规则列表。如果没有 NetworkPolicies 选择 pod (和集群策略也允许流量),或者流量至少匹配 podSelector 与 pod 匹配的所有 NetworkPolicy 对象,则允许传出流量。如果此字段为空,则此 NetworkPolicy 会限制所有传出流量(且单独用于确保它选择的 pod 默认被隔离)。此字段在 1.8 中是 beta 级别

egress[]

对象

NetworkPolicyEgressRule 描述了允许没有与 NetworkPolicySpec 的 pod 匹配的 pod 集合的流量。流量必须与端口 和 匹配。这个类型是 1.8 中的 beta 级别

ingress

数组

Ingress 是要应用到所选 pod 的 ingress 规则列表。如果没有 NetworkPolicies 选择 pod (并且集群策略允许流量),或者流量源是 pod 的本地节点,或者如果流量源是 pod 的本地节点,或者如果流量至少匹配 pod 的所有 NetworkPolicy 对象中的一个入站规则,则允许流量。如果此字段为空,则此 NetworkPolicy 不允许任何流量(只服务来确保它选择的 pod 默认被隔离)

ingress[]

对象

NetworkPolicyIngressRule 描述了允许 pod 集合与 NetworkPolicySpec 的 pod 匹配的特定流量。流量必须与端口 和 from 匹配。

podSelector

LabelSelector

podSelector 选择此 NetworkPolicy 对象应用到的 pod。ingress 规则数组应用到此字段选择的任何 pod。多个网络策略可以选择同一组 pod。在这种情况下,每个的入站规则都会有一定的合并。此字段不可选,并遵循标准标签选择器语义。空 podSelector 匹配此命名空间中的所有 pod。

policyTypes

数组(字符串)

policyTypes 是 NetworkPolicy 相关的规则类型列表。有效选项为 ["Ingress"], ["Egress"], 或 ["Ingress", "Egress"]。如果没有指定此字段,它将根据存在入口或出口规则进行默认;包含出口部分的策略会被假定影响出口,并且所有策略(无论它们是否包含 ingress 部分)都会影响 ingress。如果要编写仅限出口的策略,您必须明确指定 policyTypes [ "Egress" ]。同样,如果您想要编写指定不允许出口的策略,您必须指定包含 "Egress" 的 policyTypes 值(因为这样的策略不包含 egress 部分,否则将默认为 [ "Ingress" ]。此字段在 1.8 中是 beta 级别

19.1.2. .spec.egress

描述
egress 是要应用到所选 pod 的出口规则列表。如果没有 NetworkPolicies 选择 pod (和集群策略也允许流量),或者流量至少匹配 podSelector 与 pod 匹配的所有 NetworkPolicy 对象,则允许传出流量。如果此字段为空,则此 NetworkPolicy 会限制所有传出流量(且单独用于确保它选择的 pod 默认被隔离)。此字段在 1.8 中是 beta 级别
类型
array

19.1.3. .spec.egress[]

描述
NetworkPolicyEgressRule 描述了允许没有与 NetworkPolicySpec 的 pod 匹配的 pod 集合的流量。流量必须与端口 和 匹配。这个类型是 1.8 中的 beta 级别
类型
object
属性类型描述

ports

数组

ports 是传出流量的目标端口列表。此列表中的每个项目都使用逻辑 OR 合并。如果此字段为空或缺失,此规则匹配所有端口(不受端口限制的流量)。如果此字段至少包含一个项,则此规则仅在流量至少与列表中的一个端口匹配时才允许流量。

ports[]

对象

NetworkPolicyPort 描述了允许流量的端口

数组

to 是为这个规则选择的 pod 的传出流量的目的地列表。此列表中的项目使用逻辑 OR 操作来合并。如果此字段为空或缺失,此规则与所有目的地匹配(不受目的地限制的流量)。如果此字段至少存在并包含一项,则该规则仅在流量至少与 to 列表中某一项匹配时才允许流量。

to[]

对象

NetworkPolicyPeer 描述了允许进出流量的对等点。只允许某些字段组合

19.1.4. .spec.egress[].ports

描述
ports 是传出流量的目标端口列表。此列表中的每个项目都使用逻辑 OR 合并。如果此字段为空或缺失,此规则匹配所有端口(不受端口限制的流量)。如果此字段至少包含一个项,则此规则仅在流量至少与列表中的一个端口匹配时才允许流量。
类型
array

19.1.5. .spec.egress[].ports[]

描述
NetworkPolicyPort 描述了允许流量的端口
类型
object
属性类型描述

endPort

整数

endPort 表示策略允许端口到 endPort 的端口范围。如果没有定义 port 字段,或者 port 字段定义为命名(字符串)端口,则无法定义此字段。endPort 必须相等或大于 port。

port

IntOrString

port 代表给定协议上的端口。这可以是 pod 上的数字或指定端口。如果没有提供此字段,则匹配所有端口名称和编号。如果存在,则仅匹配指定协议和端口上的流量。

protocol

string

protocol 代表流量必须匹配的协议(TCP、UDP 或 SCTP)。如果没有指定,此字段默认为 TCP。

可能枚举值: - "SCTP" 是 SCTP 协议。- "TCP" 是 TCP 协议。- "UDP" 是 UDP 协议。

19.1.6. .spec.egress[].to

描述
to 是为这个规则选择的 pod 的传出流量的目的地列表。此列表中的项目使用逻辑 OR 操作来合并。如果此字段为空或缺失,此规则与所有目的地匹配(不受目的地限制的流量)。如果此字段至少存在并包含一项,则该规则仅在流量至少与 to 列表中某一项匹配时才允许流量。
类型
array

19.1.7. .spec.egress[].to[]

描述
NetworkPolicyPeer 描述了允许进出流量的对等点。只允许某些字段组合
类型
object
属性类型描述

ipBlock

对象

IPBlock 描述了特定的 CIDR (Ex)"192.168.1.0/24","2001:db8::/64"),允许与 NetworkPolicySpec 的 podSelector 匹配的 pod。例外条目描述了不应包含在此规则中的 CIDR。

namespaceSelector

LabelSelector

namespaceSelector 使用集群范围的标签选择命名空间。此字段遵循标准标签选择器语义;如果存在,它会选择所有命名空间。

如果也设置了 podSelector,则 NetworkPolicyPeer 作为整个选择在 namespaceSelector 选择的命名空间中与 podSelector 匹配的 pod。否则,它会选择 namespaceSelector 选择的命名空间中的所有 pod。

podSelector

LabelSelector

podSelector 是一个标签选择器,它选择 pod。此字段遵循标准标签选择器语义;如果存在,它会选择所有 pod。

如果还设置了 namespaceSelector,则 NetworkPolicyPeer 作为整个选择在 NamespaceSelector 选择的 Namespaces 中与 podSelector 匹配的 pod。否则,它会在策略自己的命名空间中选择与 podSelector 匹配的 pod。

19.1.8. .spec.egress[].to[].ipBlock

描述
IPBlock 描述了特定的 CIDR (Ex)"192.168.1.0/24","2001:db8::/64"),允许与 NetworkPolicySpec 的 podSelector 匹配的 pod。例外条目描述了不应包含在此规则中的 CIDR。
类型
object
必填
  • cidr
属性类型描述

cidr

string

CIDR 是代表 IPBlock Valid 示例的字符串,即 "192.168.1.0/24" 或 "2001:db8::/64"

except

数组(字符串)

例外是不应包含在 IPBlock Valid 示例中的 CIDR 片段为 "192.168.1.0/24" 或 "2001:db8::/64" Except 值(如果它们不在 cidr 范围之外)

19.1.9. .spec.ingress

描述
Ingress 是要应用到所选 pod 的 ingress 规则列表。如果没有 NetworkPolicies 选择 pod (并且集群策略允许流量),或者流量源是 pod 的本地节点,或者如果流量源是 pod 的本地节点,或者如果流量至少匹配 pod 的所有 NetworkPolicy 对象中的一个入站规则,则允许流量。如果此字段为空,则此 NetworkPolicy 不允许任何流量(只服务来确保它选择的 pod 默认被隔离)
类型
array

19.1.10. .spec.ingress[]

描述
NetworkPolicyIngressRule 描述了允许 pod 集合与 NetworkPolicySpec 的 pod 匹配的特定流量。流量必须与端口 和 from 匹配。
类型
object
属性类型描述

from

数组

from 是源列表,应能够访问为此规则选择的 pod。此列表中的项目使用逻辑 OR 操作来合并。如果此字段为空或缺失,此规则与所有源匹配(不受源限制的流量)。如果此字段至少包含一个项,则该规则仅在流量与 from 列表中至少一个项匹配时才允许流量。

from[]

对象

NetworkPolicyPeer 描述了允许进出流量的对等点。只允许某些字段组合

ports

数组

ports 是应该可在针对此规则选择的 pod 上访问的端口的列表。此列表中的每个项目都使用逻辑 OR 合并。如果此字段为空或缺失,此规则匹配所有端口(不受端口限制的流量)。如果此字段至少包含一个项,则此规则仅在流量至少与列表中的一个端口匹配时才允许流量。

ports[]

对象

NetworkPolicyPort 描述了允许流量的端口

19.1.11. .spec.ingress[].from

描述
from 是源列表,应能够访问为此规则选择的 pod。此列表中的项目使用逻辑 OR 操作来合并。如果此字段为空或缺失,此规则与所有源匹配(不受源限制的流量)。如果此字段至少包含一个项,则该规则仅在流量与 from 列表中至少一个项匹配时才允许流量。
类型
array

19.1.12. .spec.ingress[].from[]

描述
NetworkPolicyPeer 描述了允许进出流量的对等点。只允许某些字段组合
类型
object
属性类型描述

ipBlock

对象

IPBlock 描述了特定的 CIDR (Ex)"192.168.1.0/24","2001:db8::/64"),允许与 NetworkPolicySpec 的 podSelector 匹配的 pod。例外条目描述了不应包含在此规则中的 CIDR。

namespaceSelector

LabelSelector

namespaceSelector 使用集群范围的标签选择命名空间。此字段遵循标准标签选择器语义;如果存在,它会选择所有命名空间。

如果也设置了 podSelector,则 NetworkPolicyPeer 作为整个选择在 namespaceSelector 选择的命名空间中与 podSelector 匹配的 pod。否则,它会选择 namespaceSelector 选择的命名空间中的所有 pod。

podSelector

LabelSelector

podSelector 是一个标签选择器,它选择 pod。此字段遵循标准标签选择器语义;如果存在,它会选择所有 pod。

如果还设置了 namespaceSelector,则 NetworkPolicyPeer 作为整个选择在 NamespaceSelector 选择的 Namespaces 中与 podSelector 匹配的 pod。否则,它会在策略自己的命名空间中选择与 podSelector 匹配的 pod。

19.1.13. .spec.ingress[].from[].ipBlock

描述
IPBlock 描述了特定的 CIDR (Ex)"192.168.1.0/24","2001:db8::/64"),允许与 NetworkPolicySpec 的 podSelector 匹配的 pod。例外条目描述了不应包含在此规则中的 CIDR。
类型
object
必填
  • cidr
属性类型描述

cidr

string

CIDR 是代表 IPBlock Valid 示例的字符串,即 "192.168.1.0/24" 或 "2001:db8::/64"

except

数组(字符串)

例外是不应包含在 IPBlock Valid 示例中的 CIDR 片段为 "192.168.1.0/24" 或 "2001:db8::/64" Except 值(如果它们不在 cidr 范围之外)

19.1.14. .spec.ingress[].ports

描述
ports 是应该可在针对此规则选择的 pod 上访问的端口的列表。此列表中的每个项目都使用逻辑 OR 合并。如果此字段为空或缺失,此规则匹配所有端口(不受端口限制的流量)。如果此字段至少包含一个项,则此规则仅在流量至少与列表中的一个端口匹配时才允许流量。
类型
array

19.1.15. .spec.ingress[].ports[]

描述
NetworkPolicyPort 描述了允许流量的端口
类型
object
属性类型描述

endPort

整数

endPort 表示策略允许端口到 endPort 的端口范围。如果没有定义 port 字段,或者 port 字段定义为命名(字符串)端口,则无法定义此字段。endPort 必须相等或大于 port。

port

IntOrString

port 代表给定协议上的端口。这可以是 pod 上的数字或指定端口。如果没有提供此字段,则匹配所有端口名称和编号。如果存在,则仅匹配指定协议和端口上的流量。

protocol

string

protocol 代表流量必须匹配的协议(TCP、UDP 或 SCTP)。如果没有指定,此字段默认为 TCP。

可能枚举值: - "SCTP" 是 SCTP 协议。- "TCP" 是 TCP 协议。- "UDP" 是 UDP 协议。

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.