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。多個網路策略可以匹配同一組 Pod。在這種情況下,每個策略的入口規則會累加組合。此欄位是可選的。如果未指定,則預設為空選擇器。

  • policyTypes ([]string)

    原子性:在合併期間將被替換

    policyTypes 是 NetworkPolicy 相關的規則型別的列表。有效選項是 ["Ingress"]、["Egress"] 或 ["Ingress", "Egress"]。如果未指定此欄位,它將根據入口或出口規則的存在情況進行預設設定;包含出口部分的策略假定會影響出口,而所有策略(無論是否包含入口部分)都假定會影響入口。如果要編寫僅影響出口的策略,則必須顯式指定 policyTypes [ "Egress" ]。同樣,如果要編寫指定不允許任何出口流量的策略,則必須指定包含 "Egress" 的 policyTypes 值(因為此類策略不包含出口部分,否則將預設僅為 [ "Ingress" ])。此欄位在 1.8 中為 Beta 級別。

  • ingress ([]NetworkPolicyIngressRule)

    原子性:在合併期間將被替換

    ingress 是應用於所選 Pod 的入口規則列表。如果不存在選擇該 Pod 的 NetworkPolicies(且叢集策略另外允許流量),或者流量源是 Pod 的本地節點,或者流量匹配 NetworkPolicy 物件(其 podSelector 匹配該 Pod)中的至少一個入口規則,則允許流量進入該 Pod。如果此欄位為空,則此 NetworkPolicy 不允許任何流量(僅用於確保其選擇的 Pod 預設是隔離的)。

    NetworkPolicyIngressRule 描述了允許進入 NetworkPolicySpec 的 podSelector 匹配的 Pod 的特定流量集。流量必須同時匹配埠和源。

    • ingress.from ([]NetworkPolicyPeer)

      原子性:在合併期間將被替換

      from 是應該能夠訪問所選 Pod 的流量源列表。此列表中的條目透過邏輯 OR 操作進行組合。如果此欄位為空或缺失,則此規則匹配所有源(流量不受源限制)。如果此欄位存在且至少包含一個條目,則此規則僅在流量至少匹配 from 列表中的一個條目時才允許流量。

      NetworkPolicyPeer 描述了允許流量進出(to/from)的對等節點。只有某些欄位組合是允許的。

      • 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), required

          cidr 是一個字串,表示 IPBlock。有效示例如“192.168.1.0/24”或“2001:db8::/64”。

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

          原子性:在合併期間將被替換

          except 是一個 CIDR 切片,不應包含在 IPBlock 中。有效示例如“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)

      原子性:在合併期間將被替換

      ports 是應可供此規則選擇的 Pod 訪問的埠列表。此列表中的每個條目都使用邏輯 OR 進行組合。如果此欄位為空或缺失,則此規則匹配所有埠(流量不受埠限制)。如果此欄位存在且至少包含一個條目,則此規則僅在流量匹配列表中的至少一個埠時才允許流量。

      NetworkPolicyPort 描述了允許流量透過的埠。

      • ingress.ports.port (IntOrString)

        port 表示給定協議上的埠。這可以是 Pod 上的數值埠或命名埠。如果未提供此欄位,則匹配所有埠名稱和數字。如果存在,則僅匹配指定協議和埠上的流量。

        IntOrString 是一種可以包含 int32 或 string 的型別。在 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)

    原子性:在合併期間將被替換

    egress 是應用於所選 Pod 的出口規則列表。如果不存在選擇該 Pod 的 NetworkPolicies(且叢集策略另外允許流量),或者流量匹配 NetworkPolicy 物件(其 podSelector 匹配該 Pod)中的至少一個出口規則,則允許出站流量。如果此欄位為空,則此 NetworkPolicy 限制所有出站流量(僅用於確保其選擇的 Pod 預設是隔離的)。此欄位在 1.8 中為 Beta 級別。

    NetworkPolicyEgressRule 描述了允許從 NetworkPolicySpec 的 podSelector 匹配的 Pod 流出的特定流量集。流量必須同時匹配埠和目標。此型別在 1.8 中為 Beta 級別。

    • egress.to ([]NetworkPolicyPeer)

      原子性:在合併期間將被替換

      to 是此規則選擇的 Pod 的出站流量的目的地列表。此列表中的條目透過邏輯 OR 操作進行組合。如果此欄位為空或缺失,則此規則匹配所有目的地(流量不受目的地限制)。如果此欄位存在且至少包含一個條目,則此規則僅在流量至少匹配 to 列表中的一個條目時才允許流量。

      NetworkPolicyPeer 描述了允許流量進出(to/from)的對等節點。只有某些欄位組合是允許的。

      • 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), required

          cidr 是一個字串,表示 IPBlock。有效示例如“192.168.1.0/24”或“2001:db8::/64”。

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

          原子性:在合併期間將被替換

          except 是一個 CIDR 切片,不應包含在 IPBlock 中。有效示例如“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)

      原子性:在合併期間將被替換

      ports 是出站流量的目的地埠列表。此列表中的每個條目都使用邏輯 OR 進行組合。如果此欄位為空或缺失,則此規則匹配所有埠(流量不受埠限制)。如果此欄位存在且至少包含一個條目,則此規則僅在流量匹配列表中的至少一個埠時才允許流量。

      NetworkPolicyPort 描述了允許流量透過的埠。

      • egress.ports.port (IntOrString)

        port 表示給定協議上的埠。這可以是 Pod 上的數值埠或命名埠。如果未提供此欄位,則匹配所有埠名稱和數字。如果存在,則僅匹配指定協議和埠上的流量。

        IntOrString 是一種可以包含 int32 或 string 的型別。在 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): OK

401: 未授權

list 列出或監視 NetworkPolicy 型別的物件

HTTP 請求

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

引數

響應

200 (NetworkPolicyList): OK

401: 未授權

list 列出或監視 NetworkPolicy 型別的物件

HTTP 請求

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

引數

響應

200 (NetworkPolicyList): OK

401: 未授權

create 建立一個 NetworkPolicy

HTTP 請求

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

引數

響應

200 (NetworkPolicy): OK

201 (NetworkPolicy): Created

202 (NetworkPolicy): Accepted

401: 未授權

update 替換指定的 NetworkPolicy

HTTP 請求

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

引數

響應

200 (NetworkPolicy): OK

201 (NetworkPolicy): Created

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): OK

201 (NetworkPolicy): Created

401: 未授權

delete 刪除一個 NetworkPolicy

HTTP 請求

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

引數

響應

200 (Status): OK

202 (Status): 已接受

401: 未授權

deletecollection 刪除 NetworkPolicy 集合

HTTP 請求

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

引數

響應

200 (Status): OK

401: 未授權

本頁面是自動生成的。

如果你打算報告此頁面存在的問題,請在問題描述中提及此頁面是自動生成的。修復可能需要在 Kubernetes 專案的其他地方進行。

上次修改時間:2025 年 9 月 4 日 下午 3:37 PST:更新 v1.34 的 API 資源參考 (3e10e8c195)