NetworkPolicy

NetworkPolicy 描述了为一组 Pod 允许哪些网络流量。

apiVersion: networking.k8s.io/v1

import "k8s.io/api/networking/v1"

NetworkPolicy

NetworkPolicy 描述了为一组 Pod 允许哪些网络流量。


NetworkPolicySpec

NetworkPolicySpec 提供了 NetworkPolicy 的规范。


  • podSelector (LabelSelector),必需

    podSelector 选择此 NetworkPolicy 对象要应用到的 Pod。入口规则数组应用于此字段选择的任何 Pod。多个网络策略可以选择同一组 Pod。在这种情况下,每个策略的入口规则是累加组合的。此字段为必需字段,并遵循标准的标签选择器语义。空的 podSelector 匹配此命名空间中的所有 Pod。

  • policyTypes ([]string)

    Atomic: 在合并期间将被替换

    policyTypes 是 NetworkPolicy 相关的规则类型列表。有效选项包括 ["Ingress"]、["Egress"] 或 ["Ingress", "Egress"]。如果未指定此字段,则将根据入口或出口规则是否存在进行默认设置;包含出口部分的策略被假定为影响出口,所有策略(无论是否包含入口部分)都被假定为影响入口。如果你想编写一个仅出口策略,你必须显式指定 policyTypes [ "Egress" ]。同样,如果你想编写一个指定不允许任何出口的策略,你必须指定一个包含 "Egress" 的 policyTypes 值(因为此类策略将不包含出口部分,否则将默认设置为仅 [ "Ingress" ])。此字段在 1.8 版本中是 Beta 级别。

  • ingress ([]NetworkPolicyIngressRule)

    Atomic: 在合并期间将被替换

    ingress 是要应用于所选 Pod 的入口规则列表。如果没有 NetworkPolicies 选择该 Pod(并且集群策略允许该流量),或者如果流量源是 Pod 的本地节点,或者如果流量匹配所有 podSelector 与该 Pod 匹配的 NetworkPolicy 对象中的至少一个入口规则,则允许流量进入该 Pod。如果此字段为空,则此 NetworkPolicy 不允许任何流量(并且仅用于确保其选择的 Pod 默认处于隔离状态)。

    NetworkPolicyIngressRule 描述了允许到与 NetworkPolicySpec 的 podSelector 匹配的 Pod 的特定流量集。流量必须匹配端口和来源。

    • ingress.from ([]NetworkPolicyPeer)

      Atomic: 在合并期间将被替换

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

      NetworkPolicyPeer 描述了一个允许流量进/出的对等方。仅允许某些字段组合。

      • ingress.from.ipBlock (IPBlock)

        ipBlock 定义特定 IPBlock 的策略。如果设置了此字段,则不能设置其他字段。

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

        • ingress.from.ipBlock.cidr (string),必需

          cidr 是表示 IPBlock 的字符串。有效示例是 "192.168.1.0/24" 或 "2001:db8::/64"

        • ingress.from.ipBlock.except ([]string)

          Atomic: 在合并期间将被替换

          except 是不应包含在 IPBlock 中的 CIDR 切片。有效示例是 "192.168.1.0/24" 或 "2001:db8::/64"。如果 except 值超出 cidr 范围,将被拒绝。

      • ingress.from.namespaceSelector (LabelSelector)

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

        如果同时设置了 podSelector,则整个 NetworkPolicyPeer 选择在 namespaceSelector 所选命名空间中匹配 podSelector 的 Pod。否则,它选择 namespaceSelector 所选命名空间中的所有 Pod。

      • ingress.from.podSelector (LabelSelector)

        podSelector 是一个标签选择器,用于选择 Pod。此字段遵循标准标签选择器语义;如果存在但为空,则选择所有 Pod。

        如果同时设置了 namespaceSelector,则整个 NetworkPolicyPeer 选择在 NamespaceSelector 所选命名空间中匹配 podSelector 的 Pod。否则,它选择在策略自身命名空间中匹配 podSelector 的 Pod。

    • ingress.ports ([]NetworkPolicyPort)

      Atomic: 在合并期间将被替换

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

      NetworkPolicyPort 描述了允许流量通过的端口。

      • ingress.ports.port (IntOrString)

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

        IntOrString 是一种可以容纳 int32 或字符串的类型。在 JSON 或 YAML 编组和解组时,它生成或消费内部类型。这允许你拥有一个可以接受名称或数字的 JSON 字段。

      • ingress.ports.endPort (int32)

        endPort 指示如果设置,则从 port 到 endPort(包含端点)的端口范围应该被策略允许。如果 port 字段未定义或 port 字段被定义为命名(字符串)端口,则不能定义此字段。endPort 必须大于或等于 port。

      • ingress.ports.protocol (string)

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

  • egress ([]NetworkPolicyEgressRule)

    Atomic: 在合并期间将被替换

    egress 是要应用于所选 Pod 的出口规则列表。向外流量被允许,如果没有任何 NetworkPolicies 选择该 Pod(并且集群策略允许该流量),或者如果流量匹配所有 podSelector 与该 Pod 匹配的 NetworkPolicy 对象中的至少一个出口规则。如果此字段为空,则此 NetworkPolicy 限制所有向外流量(并且仅用于确保其选择的 Pod 默认处于隔离状态)。此字段在 1.8 版本中是 Beta 级别。

    NetworkPolicyEgressRule 描述了允许从与 NetworkPolicySpec 的 podSelector 匹配的 Pod 出去的特定流量集。流量必须匹配端口和目的地。此类型在 1.8 版本中是 Beta 级别。

    • egress.to ([]NetworkPolicyPeer)

      Atomic: 在合并期间将被替换

      to 是为此规则选择的 Pod 的向外流量目的地列表。此列表中的项使用逻辑 OR 操作组合。如果此字段为空或缺失,则此规则匹配所有目的地(流量不受目的地限制)。如果此字段存在且包含至少一项,则此规则仅在流量匹配 to 列表中的至少一项时才允许流量。

      NetworkPolicyPeer 描述了一个允许流量进/出的对等方。仅允许某些字段组合。

      • egress.to.ipBlock (IPBlock)

        ipBlock 定义特定 IPBlock 的策略。如果设置了此字段,则不能设置其他字段。

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

        • egress.to.ipBlock.cidr (string),必需

          cidr 是表示 IPBlock 的字符串。有效示例是 "192.168.1.0/24" 或 "2001:db8::/64"

        • egress.to.ipBlock.except ([]string)

          Atomic: 在合并期间将被替换

          except 是不应包含在 IPBlock 中的 CIDR 切片。有效示例是 "192.168.1.0/24" 或 "2001:db8::/64"。如果 except 值超出 cidr 范围,将被拒绝。

      • egress.to.namespaceSelector (LabelSelector)

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

        如果同时设置了 podSelector,则整个 NetworkPolicyPeer 选择在 namespaceSelector 所选命名空间中匹配 podSelector 的 Pod。否则,它选择 namespaceSelector 所选命名空间中的所有 Pod。

      • egress.to.podSelector (LabelSelector)

        podSelector 是一个标签选择器,用于选择 Pod。此字段遵循标准标签选择器语义;如果存在但为空,则选择所有 Pod。

        如果同时设置了 namespaceSelector,则整个 NetworkPolicyPeer 选择在 NamespaceSelector 所选命名空间中匹配 podSelector 的 Pod。否则,它选择在策略自身命名空间中匹配 podSelector 的 Pod。

    • egress.ports ([]NetworkPolicyPort)

      Atomic: 在合并期间将被替换

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

      NetworkPolicyPort 描述了允许流量通过的端口。

      • egress.ports.port (IntOrString)

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

        IntOrString 是一种可以容纳 int32 或字符串的类型。在 JSON 或 YAML 编组和解组时,它生成或消费内部类型。这允许你拥有一个可以接受名称或数字的 JSON 字段。

      • egress.ports.endPort (int32)

        endPort 指示如果设置,则从 port 到 endPort(包含端点)的端口范围应该被策略允许。如果 port 字段未定义或 port 字段被定义为命名(字符串)端口,则不能定义此字段。endPort 必须大于或等于 port。

      • egress.ports.protocol (string)

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

NetworkPolicyList

NetworkPolicyList 是 NetworkPolicy 对象的列表。


操作


get 读取指定的 NetworkPolicy

HTTP 请求

GET /apis/networking.k8s.io/v1/namespaces/{namespace}/networkpolicies/{name}

参数

  • name (在路径中): string,必需

    NetworkPolicy 的名称

  • namespace (在路径中): string,必需

    命名空间

  • pretty (在查询中): string

    pretty

响应

200 (NetworkPolicy): 正常

401: 未授权

list 列出或监听 NetworkPolicy 类型的对象

HTTP 请求

GET /apis/networking.k8s.io/v1/namespaces/{namespace}/networkpolicies

参数

响应

200 (NetworkPolicyList): 正常

401: 未授权

list 列出或监听 NetworkPolicy 类型的对象

HTTP 请求

GET /apis/networking.k8s.io/v1/networkpolicies

参数

响应

200 (NetworkPolicyList): 正常

401: 未授权

create 创建一个 NetworkPolicy

HTTP 请求

POST /apis/networking.k8s.io/v1/namespaces/{namespace}/networkpolicies

参数

响应

200 (NetworkPolicy): 正常

201 (NetworkPolicy): 已创建

202 (NetworkPolicy): 已接受

401: 未授权

update 替换指定的 NetworkPolicy

HTTP 请求

PUT /apis/networking.k8s.io/v1/namespaces/{namespace}/networkpolicies/{name}

参数

响应

200 (NetworkPolicy): 正常

201 (NetworkPolicy): 已创建

401: 未授权

patch 部分更新指定的 NetworkPolicy

HTTP 请求

PATCH /apis/networking.k8s.io/v1/namespaces/{namespace}/networkpolicies/{name}

参数

  • name (在路径中): string,必需

    NetworkPolicy 的名称

  • namespace (在路径中): string,必需

    命名空间

  • body: Patch,必需

  • dryRun (在查询中): string

    dryRun

  • fieldManager (在查询中): string

    fieldManager

  • fieldValidation (在查询中): string

    fieldValidation

  • force (在查询中): boolean

    force

  • pretty (在查询中): string

    pretty

响应

200 (NetworkPolicy): 正常

201 (NetworkPolicy): 已创建

401: 未授权

delete 删除一个 NetworkPolicy

HTTP 请求

DELETE /apis/networking.k8s.io/v1/namespaces/{namespace}/networkpolicies/{name}

参数

响应

200 (Status): 正常

202 (Status): 已接受

401: 未授权

deletecollection 删除 NetworkPolicy 集合

HTTP 请求

DELETE /apis/networking.k8s.io/v1/namespaces/{namespace}/networkpolicies

参数

响应

200 (Status): 正常

401: 未授权

本页是自动生成的。

如果你计划报告此页面的问题,请在你的问题描述中提及该页面是自动生成的。修复可能需要在 Kubernetes 项目的其他地方进行。

最后修改于 2025 年 4 月 9 日下午 6:36 PST: 更新 v1.32 的 API 参考文档 (a3b579d035)