第 19 章 NetworkPolicy [networking.k8s.io/v1]
- 描述
- NetworkPolicy 描述一组 Pod 允许哪些网络流量
- 类型
-
对象
19.1. 规格
属性 | 类型 | 描述 |
---|---|---|
|
| APIVersion 定义对象的这个表示法的版本化的 schema。服务器应该将识别的模式转换为最新的内部值,并可拒绝未识别的值。更多信息: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources |
|
| kind 是一个字符串值,代表此对象所代表的 REST 资源。服务器可以从客户端向其提交请求的端点推断。无法更新。采用驼峰拼写法 (CamelCase)。更多信息: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds |
| 标准对象元数据。更多信息: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata | |
|
| NetworkPolicySpec 提供 NetworkPolicy 的规格 |
19.1.1. .spec
- 描述
- NetworkPolicySpec 提供 NetworkPolicy 的规格
- 类型
-
object
- 必填
-
podSelector
-
属性 | 类型 | 描述 |
---|---|---|
|
| egress 是要应用到所选 pod 的出口规则列表。如果没有 NetworkPolicies 选择 pod (和集群策略也允许流量),或者流量至少匹配 podSelector 与 pod 匹配的所有 NetworkPolicy 对象,则允许传出流量。如果此字段为空,则此 NetworkPolicy 会限制所有传出流量(且单独用于确保它选择的 pod 默认被隔离)。此字段在 1.8 中是 beta 级别 |
|
| NetworkPolicyEgressRule 描述了允许没有与 NetworkPolicySpec 的 pod 匹配的 pod 集合的流量。流量必须与端口 和 匹配。这个类型是 1.8 中的 beta 级别 |
|
| Ingress 是要应用到所选 pod 的 ingress 规则列表。如果没有 NetworkPolicies 选择 pod (并且集群策略允许流量),或者流量源是 pod 的本地节点,或者如果流量源是 pod 的本地节点,或者如果流量至少匹配 pod 的所有 NetworkPolicy 对象中的一个入站规则,则允许流量。如果此字段为空,则此 NetworkPolicy 不允许任何流量(只服务来确保它选择的 pod 默认被隔离) |
|
| NetworkPolicyIngressRule 描述了允许 pod 集合与 NetworkPolicySpec 的 pod 匹配的特定流量。流量必须与端口 和 from 匹配。 |
| podSelector 选择此 NetworkPolicy 对象应用到的 pod。ingress 规则数组应用到此字段选择的任何 pod。多个网络策略可以选择同一组 pod。在这种情况下,每个的入站规则都会有一定的合并。此字段不可选,并遵循标准标签选择器语义。空 podSelector 匹配此命名空间中的所有 pod。 | |
|
| 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 是传出流量的目标端口列表。此列表中的每个项目都使用逻辑 OR 合并。如果此字段为空或缺失,此规则匹配所有端口(不受端口限制的流量)。如果此字段至少包含一个项,则此规则仅在流量至少与列表中的一个端口匹配时才允许流量。 |
|
| NetworkPolicyPort 描述了允许流量的端口 |
|
| to 是为这个规则选择的 pod 的传出流量的目的地列表。此列表中的项目使用逻辑 OR 操作来合并。如果此字段为空或缺失,此规则与所有目的地匹配(不受目的地限制的流量)。如果此字段至少存在并包含一项,则该规则仅在流量至少与 to 列表中某一项匹配时才允许流量。 |
|
| NetworkPolicyPeer 描述了允许进出流量的对等点。只允许某些字段组合 |
19.1.4. .spec.egress[].ports
- 描述
- ports 是传出流量的目标端口列表。此列表中的每个项目都使用逻辑 OR 合并。如果此字段为空或缺失,此规则匹配所有端口(不受端口限制的流量)。如果此字段至少包含一个项,则此规则仅在流量至少与列表中的一个端口匹配时才允许流量。
- 类型
-
array
19.1.5. .spec.egress[].ports[]
- 描述
- NetworkPolicyPort 描述了允许流量的端口
- 类型
-
object
属性 | 类型 | 描述 |
---|---|---|
|
| endPort 表示策略允许端口到 endPort 的端口范围。如果没有定义 port 字段,或者 port 字段定义为命名(字符串)端口,则无法定义此字段。endPort 必须相等或大于 port。 |
| port 代表给定协议上的端口。这可以是 pod 上的数字或指定端口。如果没有提供此字段,则匹配所有端口名称和编号。如果存在,则仅匹配指定协议和端口上的流量。 | |
|
| protocol 代表流量必须匹配的协议(TCP、UDP 或 SCTP)。如果没有指定,此字段默认为 TCP。
可能枚举值: - |
19.1.6. .spec.egress[].to
- 描述
- to 是为这个规则选择的 pod 的传出流量的目的地列表。此列表中的项目使用逻辑 OR 操作来合并。如果此字段为空或缺失,此规则与所有目的地匹配(不受目的地限制的流量)。如果此字段至少存在并包含一项,则该规则仅在流量至少与 to 列表中某一项匹配时才允许流量。
- 类型
-
array
19.1.7. .spec.egress[].to[]
- 描述
- NetworkPolicyPeer 描述了允许进出流量的对等点。只允许某些字段组合
- 类型
-
object
属性 | 类型 | 描述 |
---|---|---|
|
| IPBlock 描述了特定的 CIDR (Ex)"192.168.1.0/24","2001:db8::/64"),允许与 NetworkPolicySpec 的 podSelector 匹配的 pod。例外条目描述了不应包含在此规则中的 CIDR。 |
| namespaceSelector 使用集群范围的标签选择命名空间。此字段遵循标准标签选择器语义;如果存在,它会选择所有命名空间。 如果也设置了 podSelector,则 NetworkPolicyPeer 作为整个选择在 namespaceSelector 选择的命名空间中与 podSelector 匹配的 pod。否则,它会选择 namespaceSelector 选择的命名空间中的所有 pod。 | |
| 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 是代表 IPBlock Valid 示例的字符串,即 "192.168.1.0/24" 或 "2001:db8::/64" |
|
| 例外是不应包含在 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 是源列表,应能够访问为此规则选择的 pod。此列表中的项目使用逻辑 OR 操作来合并。如果此字段为空或缺失,此规则与所有源匹配(不受源限制的流量)。如果此字段至少包含一个项,则该规则仅在流量与 from 列表中至少一个项匹配时才允许流量。 |
|
| NetworkPolicyPeer 描述了允许进出流量的对等点。只允许某些字段组合 |
|
| ports 是应该可在针对此规则选择的 pod 上访问的端口的列表。此列表中的每个项目都使用逻辑 OR 合并。如果此字段为空或缺失,此规则匹配所有端口(不受端口限制的流量)。如果此字段至少包含一个项,则此规则仅在流量至少与列表中的一个端口匹配时才允许流量。 |
|
| NetworkPolicyPort 描述了允许流量的端口 |
19.1.11. .spec.ingress[].from
- 描述
- from 是源列表,应能够访问为此规则选择的 pod。此列表中的项目使用逻辑 OR 操作来合并。如果此字段为空或缺失,此规则与所有源匹配(不受源限制的流量)。如果此字段至少包含一个项,则该规则仅在流量与 from 列表中至少一个项匹配时才允许流量。
- 类型
-
array
19.1.12. .spec.ingress[].from[]
- 描述
- NetworkPolicyPeer 描述了允许进出流量的对等点。只允许某些字段组合
- 类型
-
object
属性 | 类型 | 描述 |
---|---|---|
|
| IPBlock 描述了特定的 CIDR (Ex)"192.168.1.0/24","2001:db8::/64"),允许与 NetworkPolicySpec 的 podSelector 匹配的 pod。例外条目描述了不应包含在此规则中的 CIDR。 |
| namespaceSelector 使用集群范围的标签选择命名空间。此字段遵循标准标签选择器语义;如果存在,它会选择所有命名空间。 如果也设置了 podSelector,则 NetworkPolicyPeer 作为整个选择在 namespaceSelector 选择的命名空间中与 podSelector 匹配的 pod。否则,它会选择 namespaceSelector 选择的命名空间中的所有 pod。 | |
| 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 是代表 IPBlock Valid 示例的字符串,即 "192.168.1.0/24" 或 "2001:db8::/64" |
|
| 例外是不应包含在 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 的端口范围。如果没有定义 port 字段,或者 port 字段定义为命名(字符串)端口,则无法定义此字段。endPort 必须相等或大于 port。 |
| port 代表给定协议上的端口。这可以是 pod 上的数字或指定端口。如果没有提供此字段,则匹配所有端口名称和编号。如果存在,则仅匹配指定协议和端口上的流量。 | |
|
| protocol 代表流量必须匹配的协议(TCP、UDP 或 SCTP)。如果没有指定,此字段默认为 TCP。
可能枚举值: - |