NetworkPolicy
apiVersion: networking.k8s.io/v1
import "k8s.io/api/networking/v1"
NetworkPolicy
NetworkPolicy 描述了允許一組 Pod 訪問的網路流量。
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata (ObjectMeta)
標準物件的元資料。更多資訊:https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
spec (NetworkPolicySpec)
spec 代表此 NetworkPolicy 的期望行為的規範。
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 物件的列表。
apiVersion: networking.k8s.io/v1
kind: NetworkPolicyList
metadata (ListMeta)
標準列表元資料。更多資訊:https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
items ([]NetworkPolicy), required
items 是 schema 物件的列表。
操作
get
讀取指定的 NetworkPolicy
HTTP 請求
GET /apis/networking.k8s.io/v1/namespaces/{namespace}/networkpolicies/{name}
引數
響應
200 (NetworkPolicy): OK
401: 未授權
list
列出或監視 NetworkPolicy 型別的物件
HTTP 請求
GET /apis/networking.k8s.io/v1/namespaces/{namespace}/networkpolicies
引數
namespace (在路徑中): string,必填
allowWatchBookmarks (在查詢中): boolean
continue (在查詢中): string
fieldSelector (在查詢中): string
labelSelector (在查詢中): string
limit (在查詢中): integer
pretty (在查詢中): string
resourceVersion (在查詢中): string
resourceVersionMatch (在查詢中): string
sendInitialEvents (在查詢中): boolean
timeoutSeconds (在查詢中): integer
watch (在查詢中): boolean
響應
200 (NetworkPolicyList): OK
401: 未授權
list
列出或監視 NetworkPolicy 型別的物件
HTTP 請求
GET /apis/networking.k8s.io/v1/networkpolicies
引數
allowWatchBookmarks (在查詢中): boolean
continue (在查詢中): string
fieldSelector (在查詢中): string
labelSelector (在查詢中): string
limit (在查詢中): integer
pretty (在查詢中): string
resourceVersion (在查詢中): string
resourceVersionMatch (在查詢中): string
sendInitialEvents (在查詢中): boolean
timeoutSeconds (在查詢中): integer
watch (在查詢中): boolean
響應
200 (NetworkPolicyList): OK
401: 未授權
create
建立一個 NetworkPolicy
HTTP 請求
POST /apis/networking.k8s.io/v1/namespaces/{namespace}/networkpolicies
引數
namespace (在路徑中): string,必填
body: NetworkPolicy, required
dryRun (在查詢中): string
fieldManager (在查詢中): string
fieldValidation (在查詢中): string
pretty (在查詢中): string
響應
200 (NetworkPolicy): OK
201 (NetworkPolicy): Created
202 (NetworkPolicy): Accepted
401: 未授權
update
替換指定的 NetworkPolicy
HTTP 請求
PUT /apis/networking.k8s.io/v1/namespaces/{namespace}/networkpolicies/{name}
引數
name (在路徑中): string,必填
NetworkPolicy 的名稱
namespace (在路徑中): string,必填
body: NetworkPolicy, required
dryRun (在查詢中): string
fieldManager (在查詢中): string
fieldValidation (在查詢中): string
pretty (在查詢中): string
響應
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
fieldManager (在查詢中): string
fieldValidation (在查詢中): string
force (在查詢中): boolean
pretty (在查詢中): string
響應
200 (NetworkPolicy): OK
201 (NetworkPolicy): Created
401: 未授權
delete
刪除一個 NetworkPolicy
HTTP 請求
DELETE /apis/networking.k8s.io/v1/namespaces/{namespace}/networkpolicies/{name}
引數
name (在路徑中): string,必填
NetworkPolicy 的名稱
namespace (在路徑中): string,必填
body: DeleteOptions
dryRun (在查詢中): string
gracePeriodSeconds (在查詢中): integer
ignoreStoreReadErrorWithClusterBreakingPotential (在查詢中): boolean
pretty (在查詢中): string
propagationPolicy (在查詢中): string
響應
200 (Status): OK
202 (Status): 已接受
401: 未授權
deletecollection
刪除 NetworkPolicy 集合
HTTP 請求
DELETE /apis/networking.k8s.io/v1/namespaces/{namespace}/networkpolicies
引數
namespace (在路徑中): string,必填
body: DeleteOptions
continue (在查詢中): string
dryRun (在查詢中): string
fieldSelector (在查詢中): string
gracePeriodSeconds (在查詢中): integer
ignoreStoreReadErrorWithClusterBreakingPotential (在查詢中): boolean
labelSelector (在查詢中): string
limit (在查詢中): integer
pretty (在查詢中): string
propagationPolicy (在查詢中): string
resourceVersion (在查詢中): string
resourceVersionMatch (在查詢中): string
sendInitialEvents (在查詢中): boolean
timeoutSeconds (在查詢中): integer
響應
200 (Status): OK
401: 未授權
本頁面是自動生成的。
如果你打算報告此頁面存在的問題,請在問題描述中提及此頁面是自動生成的。修復可能需要在 Kubernetes 專案的其他地方進行。