本頁面說明如何在 Google Distributed Cloud (GDC) 實體隔離方案中,設定專案內流量網路政策。
專案網路政策會定義輸入或輸出規則。您可以定義政策,允許專案內部、專案之間,以及與外部 IP 位址之間的通訊。
根據預設,這些政策會全域套用至所有可用區。如要進一步瞭解 GDC 宇宙中的全域資源,請參閱「多可用區總覽」。
如需在單一可用區內強制執行專案內流量,請參閱「建立單一可用區工作負載層級專案內政策」。
事前準備
如要設定專案內流量網路政策,您必須具備下列條件:
- 必要的身分和存取權角色。如要管理流量網路政策,您必須具備專案網路政策管理員 (
global-project-networkpolicy-admin) 角色。詳情請參閱「準備預先定義的角色和存取權」。 - 現有專案。詳情請參閱「建立專案」一文。
- 如為輸出網路政策,您也必須停用專案的資料竊取防護功能。
建立專案內政策
對於專案內的流量,GDC 會對每項專案套用預先定義的專案網路政策,也就是預設專案內政策。根據預設,專案命名空間中的工作負載可以互相通訊,不會向外部資源公開任何內容。
根據預設,系統不會設定輸出政策,因此所有專案內流量都允許傳出。不過,套用輸出政策後,所選工作負載只能傳送輸出政策允許的流量。如要與同一專案中的其他工作負載和服務保持連線能力,請先建立輸出專案內政策,再套用輸出政策。如果資料竊取防護功能仍處於啟用狀態,請在停用該功能前建立 egress intra-project 政策,因為現有的輸出政策會在該時間點生效。詳情請參閱「預設專案內政策」。
建立 ingress 專案內政策
建立專案時,GDC 會自動在專案命名空間中,建立名為 base-policy-allow-intra-project-traffic 的預設 ProjectNetworkPolicy 資源。這項 Ingress 政策會選取專案中的所有使用者工作負載,並允許來自同一專案中其他工作負載的傳入流量。GDC 只會建立這項政策一次,如果您變更或刪除,系統不會還原。
如要移除預設政策,請使用 kubectl delete 指令:
kubectl --kubeconfig GLOBAL_API_SERVER delete pnp base-policy-allow-intra-project-traffic -n PROJECT
如要重新加入預設政策,請套用下列資訊清單:
kubectl --kubeconfig GLOBAL_API_SERVER apply -f - <<EOF
apiVersion: networking.global.gdc.goog/v1
kind: ProjectNetworkPolicy
metadata:
namespace: PROJECT
name: base-policy-allow-intra-project-traffic
spec:
policyType: Ingress
ingress:
- from:
- projectSelector:
projects:
matchNames:
- PROJECT
EOF
資訊清單省略 spec.subject,因此政策會套用至專案中的所有使用者工作負載,就像原始預設政策一樣。
更改下列內容:
GLOBAL_API_SERVER:全域 API 伺服器的 kubeconfig 路徑。詳情請參閱「全域和可用區 API 伺服器」。 如果您尚未為 API 伺服器產生 kubeconfig 檔案,請參閱「登入」一節瞭解詳情。PROJECT:專案名稱。
如要確認政策是否已準備就緒,請參閱「確認政策是否已準備就緒」。
建立輸出內部專案政策
停用資料竊取防護功能,並對專案套用 ProjectNetworkPolicy 輸出政策 (例如禁止存取外部資源) 時,請使用下列必要政策,允許專案內部的傳出流量:
kubectl --kubeconfig GLOBAL_API_SERVER apply -f - <<EOF
apiVersion: networking.global.gdc.goog/v1
kind: ProjectNetworkPolicy
metadata:
namespace: PROJECT
name: allow-intra-project-outbound-traffic
spec:
policyType: Egress
egress:
- to:
- projectSelector:
projects:
matchNames:
- PROJECT
EOF
更改下列內容:
GLOBAL_API_SERVER:全域 API 伺服器的 kubeconfig 路徑。詳情請參閱「全域和可用區 API 伺服器」。如果您尚未為 API 伺服器產生 kubeconfig 檔案,請參閱「登入」一節瞭解詳情。PROJECT:專案名稱。
如要確認政策是否已準備就緒,請參閱「確認政策是否已準備就緒」。
建立工作負載層級的專案內政策
工作負載層級網路政策可精細控管專案內個別工作負載之間的通訊。這種精細程度可讓您更嚴格控管網路存取權,提升安全性及資源使用效率。
建立輸入工作負載層級專案內政策
建立專案時,GDC 會自動建立名為 base-policy-allow-intra-project-traffic 的預設 ProjectNetworkPolicy 資源,允許專案中所有工作負載之間的傳入流量。
刪除預設基本政策後,工作負載層級的專案內政策才會限制流量。為避免服務中斷,請建立政策並確認已準備就緒,然後刪除預設基本政策:
如要建立 ingress 工作負載層級專案內政策,請建立並套用下列自訂資源:
kubectl --kubeconfig GLOBAL_API_SERVER apply -f - <<EOF apiVersion: networking.global.gdc.goog/v1 kind: ProjectNetworkPolicy metadata: namespace: PROJECT name: allow-workload-level-intra-project-inbound-traffic spec: policyType: Ingress subject: subjectType: UserWorkload userWorkloadSelector: labelSelector: workloads: matchLabels: SUBJECT_LABEL_KEY: SUBJECT_LABEL_VALUE ingress: - from: - projectSelector: projects: matchNames: - PROJECT workloadSelector: labelSelector: workloads: matchLabels: PEER_LABEL_KEY: PEER_LABEL_VALUE EOF更改下列內容:
GLOBAL_API_SERVER:全域 API 伺服器的 kubeconfig 路徑。詳情請參閱「全域和可用區 API 伺服器」。 如果您尚未為 API 伺服器產生 kubeconfig 檔案,請參閱「登入」一節。PROJECT:專案名稱。SUBJECT_LABEL_KEY:用於選取主體工作負載的標籤鍵。例如:app、tier或role。如果您參照的是 VM 標籤,則必須在這個索引鍵中加入前置字元,請參閱這份清單後方的警告。SUBJECT_LABEL_VALUE:與SUBJECT_LABEL_KEY相關聯的值。舉例來說,如果SUBJECT_LABEL_KEY為app,SUBJECT_LABEL_VALUE為backend,則標籤為app: backend的工作負載會接收流量。PEER_LABEL_KEY:用於選取對等互連工作負載的標籤鍵。如果您參照的是 VM 標籤,則必須在這個索引鍵中加入前置字元,請參閱這份清單後方的警告。PEER_LABEL_VALUE:與PEER_LABEL_KEY相關聯的值。
如要確認政策是否已準備就緒,請參閱「確認政策是否已準備就緒」。
政策準備就緒後,請刪除預設基礎政策,讓政策生效:
kubectl --kubeconfig GLOBAL_API_SERVER delete pnp base-policy-allow-intra-project-traffic -n PROJECT
建立輸出工作負載層級專案內政策
如要建立輸出工作負載層級專案內政策,請建立並套用下列自訂資源:
kubectl --kubeconfig GLOBAL_API_SERVER apply -f - <<EOF apiVersion: networking.global.gdc.goog/v1 kind: ProjectNetworkPolicy metadata: namespace: PROJECT name: allow-workload-level-intra-project-outbound-traffic spec: policyType: Egress subject: subjectType: UserWorkload userWorkloadSelector: labelSelector: workloads: matchLabels: SUBJECT_LABEL_KEY: SUBJECT_LABEL_VALUE egress: - to: - projectSelector: projects: matchNames: - PROJECT workloadSelector: labelSelector: workloads: matchLabels: PEER_LABEL_KEY: PEER_LABEL_VALUE EOF更改下列內容:
GLOBAL_API_SERVER:全域 API 伺服器的 kubeconfig 路徑。詳情請參閱「全域和可用區 API 伺服器」。 如果您尚未為 API 伺服器產生 kubeconfig 檔案,請參閱「登入」一節。PROJECT:專案名稱。SUBJECT_LABEL_KEY:用於選取主體工作負載的標籤鍵。例如:app、tier或role。如果您參照的是 VM 標籤,則必須在這個索引鍵中加入前置字元,請參閱這份清單後方的警告。SUBJECT_LABEL_VALUE:與SUBJECT_LABEL_KEY相關聯的值。舉例來說,如果SUBJECT_LABEL_KEY為app,SUBJECT_LABEL_VALUE為backend,則標籤為app: backend的工作負載會傳送流量。PEER_LABEL_KEY:用於選取對等互連工作負載的標籤鍵。如果您參照的是 VM 標籤,則必須在這個索引鍵中加入前置字元,請參閱這份清單後方的警告。PEER_LABEL_VALUE:與PEER_LABEL_KEY相關聯的值。
如要確認政策是否已準備就緒,請參閱「確認政策是否已準備就緒」。
建立單一可用區工作負載層級專案內政策
工作負載層級的網路政策可在單一可用區強制執行 PNP。您可以為單一可用區內的工作負載新增特定標籤,控管該可用區內專案或不同專案中個別工作負載之間的通訊。
建立單一可用區輸入工作負載層級專案內政策
建立專案時,GDC 會自動建立名為 base-policy-allow-intra-project-traffic 的預設 ProjectNetworkPolicy 資源,允許專案中所有工作負載之間的傳入流量。
刪除預設基本政策後,單一可用區工作負載層級專案內政策才會限制流量。為避免服務中斷,請建立政策並確認已準備就緒,然後刪除預設基本政策:
如要建立單一可用區輸入工作負載層級專案內流量網路政策,請建立並套用下列自訂資源:
kubectl --kubeconfig GLOBAL_API_SERVER apply -f - <<EOF apiVersion: networking.global.gdc.goog/v1 kind: ProjectNetworkPolicy metadata: namespace: PROJECT name: allow-single-zone-intra-project-inbound-traffic spec: policyType: Ingress subject: subjectType: UserWorkload userWorkloadSelector: labelSelector: workloads: matchLabels: SUBJECT_LABEL_KEY: SUBJECT_LABEL_VALUE ZONE_SUBJECT_LABEL_KEY: ZONE_SUBJECT_LABEL_VALUE ingress: - from: - projectSelector: projects: matchNames: - PROJECT workloadSelector: labelSelector: workloads: matchLabels: PEER_LABEL_KEY: PEER_LABEL_VALUE ZONE_PEER_LABEL_KEY: ZONE_PEER_LABEL_VALUE EOF更改下列內容:
GLOBAL_API_SERVER:全域 API 伺服器的 kubeconfig 路徑。詳情請參閱「全域和可用區 API 伺服器」。 如果您尚未為 API 伺服器產生 kubeconfig 檔案,請參閱「登入」一節。PROJECT:專案名稱。SUBJECT_LABEL_KEY:用於選取主體工作負載的標籤鍵。例如:app、tier或role。如果您參照的是 VM 標籤,則必須在這個索引鍵中加入前置字元,請參閱這份清單後方的警告。SUBJECT_LABEL_VALUE:與SUBJECT_LABEL_KEY相關聯的值。舉例來說,如果SUBJECT_LABEL_KEY為app,SUBJECT_LABEL_VALUE為backend,則標籤為app: backend的工作負載會接收流量。PEER_LABEL_KEY:用於選取對等互連工作負載的標籤鍵。如果您參照的是 VM 標籤,則必須在這個索引鍵中加入前置字元,請參閱這份清單後方的警告。PEER_LABEL_VALUE:與PEER_LABEL_KEY相關聯的值。ZONE_SUBJECT_LABEL_KEY:用於選取主體區域的標籤鍵。例如zone或region。如果您參照的是 VM 標籤,則必須在這個索引鍵中加入前置字元,請參閱這份清單後方的警告。ZONE_SUBJECT_LABEL_VALUE:與ZONE_SUBJECT_LABEL_KEY相關聯的值。舉例來說,如果ZONE_SUBJECT_LABEL_KEY為zone,ZONE_SUBJECT_LABEL_VALUE為us-central1-a,則標籤為zone: us-central1-a的工作負載會接收流量。ZONE_PEER_LABEL_KEY:標籤的鍵,用於選取與對等互連相關聯的可用區。如果您參照的是 VM 標籤,則必須在這個索引鍵中加入前置字元,請參閱這份清單後方的警告。ZONE_PEER_LABEL_VALUE:與ZONE_PEER_LABEL_KEY相關聯的值。
如要確認政策是否已準備就緒,請參閱「確認政策是否已準備就緒」。
政策準備就緒後,請刪除預設基礎政策,讓政策生效:
kubectl --kubeconfig GLOBAL_API_SERVER delete pnp base-policy-allow-intra-project-traffic -n PROJECT
建立單一可用區輸出工作負載層級專案內政策
如要建立單一可用區輸出工作負載層級專案內政策,請建立並套用下列自訂資源:
kubectl --kubeconfig GLOBAL_API_SERVER apply -f - <<EOF apiVersion: networking.global.gdc.goog/v1 kind: ProjectNetworkPolicy metadata: namespace: PROJECT name: allow-single-zone-intra-project-outbound-traffic spec: policyType: Egress subject: subjectType: UserWorkload userWorkloadSelector: labelSelector: workloads: matchLabels: SUBJECT_LABEL_KEY: SUBJECT_LABEL_VALUE ZONE_SUBJECT_LABEL_KEY: ZONE_SUBJECT_LABEL_VALUE egress: - to: - projectSelector: projects: matchNames: - PROJECT workloadSelector: labelSelector: workloads: matchLabels: PEER_LABEL_KEY: PEER_LABEL_VALUE ZONE_PEER_LABEL_KEY: ZONE_PEER_LABEL_VALUE EOF更改下列內容:
GLOBAL_API_SERVER:全域 API 伺服器的 kubeconfig 路徑。詳情請參閱「全域和可用區 API 伺服器」。 如果您尚未為 API 伺服器產生 kubeconfig 檔案,請參閱「登入」一節。PROJECT:專案名稱。SUBJECT_LABEL_KEY:用於選取主體工作負載的標籤鍵。例如:app、tier或role。如果您參照的是 VM 標籤,則必須在這個索引鍵中加入前置字元,請參閱這份清單後方的警告。SUBJECT_LABEL_VALUE:與SUBJECT_LABEL_KEY相關聯的值。舉例來說,如果SUBJECT_LABEL_KEY為app,SUBJECT_LABEL_VALUE為backend,則標籤為app: backend的工作負載會接收流量。PEER_LABEL_KEY:用於選取對等互連工作負載的標籤鍵。如果您參照的是 VM 標籤,則必須在這個索引鍵中加入前置字元,請參閱這份清單後方的警告。PEER_LABEL_VALUE:與PEER_LABEL_KEY相關聯的值。ZONE_SUBJECT_LABEL_KEY:用於選取主體區域的標籤鍵。例如zone或region。如果您參照的是 VM 標籤,則必須在這個索引鍵中加入前置字元,請參閱這份清單後方的警告。ZONE_SUBJECT_LABEL_VALUE:與ZONE_SUBJECT_LABEL_KEY相關聯的值。舉例來說,如果ZONE_SUBJECT_LABEL_KEY為zone,ZONE_SUBJECT_LABEL_VALUE為us-central1-a,則標籤為zone: us-central1-a的工作負載會接收流量。ZONE_PEER_LABEL_KEY:標籤的鍵,用於選取與對等互連相關聯的可用區。如果您參照的是 VM 標籤,則必須在這個索引鍵中加入前置字元,請參閱這份清單後方的警告。ZONE_PEER_LABEL_VALUE:與ZONE_PEER_LABEL_KEY相關聯的值。
如要確認政策是否已準備就緒,請參閱「確認政策是否已準備就緒」。
為標準叢集建立專案內政策
標準叢集是專案範圍的 Kubernetes 叢集,可提供更強大的控制能力、彈性和叢集管理員權限。建立專案內政策時,標準叢集預設會繼承該政策。這項政策允許位於相同專案的標準叢集內的所有通訊。
為標準叢集建立 ingress 專案內政策
建立專案時,GDC 會自動建立名為 base-policy-allow-intra-project-traffic 的預設 ProjectNetworkPolicy 資源,允許專案中所有工作負載之間的傳入流量,包括專案中標準叢集內所有工作負載之間的叢集內通訊。
刪除預設基礎政策後,標準叢集的 ingress 專案內政策才會限制流量。為避免服務中斷,請按照下列步驟建立政策,並確認政策已準備就緒,然後刪除預設基本政策:
如要在標準叢集中建立輸入叢集內 Pod 對 Pod 政策,請建立並套用下列自訂資源
kubectl --kubeconfig GLOBAL_API_SERVER apply -f - <<EOF apiVersion: networking.global.gdc.goog/v1 kind: ProjectNetworkPolicy metadata: namespace: STANDARD_CLUSTER_PROJECT name: allow-ingress-from-intra-cluster-traffic spec: policyType: Ingress subject: subjectType: UserWorkload userWorkloadSelector: labelSelector: clusters: matchLabels: kubernetes.io/metadata.name: STANDARD_CLUSTER_NAME namespaces: matchLabels: kubernetes.io/metadata.name: SUBJECT_NAMESPACE workloads: matchLabels: SUBJECT_LABEL_KEY: SUBJECT_LABEL_VALUE ingress: - from: - projectSelector: projects: matchNames: - STANDARD_CLUSTER_PROJECT workloadSelector: labelSelector: clusters: matchLabels: kubernetes.io/metadata.name: STANDARD_CLUSTER_NAME namespaces: matchLabels: kubernetes.io/metadata.name: PEER_NAMESPACE workloads: matchLabels: PEER_LABEL_KEY: PEER_LABEL_VALUE EOF更改下列內容:
GLOBAL_API_SERVER:全域 API 伺服器的 kubeconfig 路徑。詳情請參閱「全域和可用區 API 伺服器」。 如果您尚未為 API 伺服器產生 kubeconfig 檔案,請參閱「登入」一節。STANDARD_CLUSTER_PROJECT:標準叢集專案的名稱。STANDARD_CLUSTER_NAME:標準叢集的名稱。SUBJECT_NAMESPACE:標準叢集中的主體命名空間。PEER_NAMESPACE:標準叢集中的對等命名空間。SUBJECT_LABEL_KEY:用於選取主體工作負載的標籤鍵。例如:app、tier或role。如果您參照的是 VM 標籤,則必須在這個索引鍵中加入前置字元,請參閱這份清單後方的警告。SUBJECT_LABEL_VALUE:與SUBJECT_LABEL_KEY相關聯的值。舉例來說,如果SUBJECT_LABEL_KEY為app,SUBJECT_LABEL_VALUE為backend,則標籤為app: backend的工作負載會接收流量。PEER_LABEL_KEY:用於選取對等互連工作負載的標籤鍵。如果您參照的是 VM 標籤,則必須在這個索引鍵中加入前置字元,請參閱這份清單後方的警告。PEER_LABEL_VALUE:與PEER_LABEL_KEY相關聯的值。
如要確認政策是否已準備就緒,請參閱「確認政策是否已準備就緒」。
使用
ipBlocks欄位控管 Pod 和特定叢集節點之間的流量,是預先發布版功能。如需詳細資訊和規模考量,請參閱「使用 IP 區塊指定叢集節點」。如要在標準叢集中建立 ingress 叢集內節點對 Pod 政策,請建立並套用下列自訂資源:kubectl --kubeconfig GLOBAL_API_SERVER apply -f - <<EOF apiVersion: networking.global.gdc.goog/v1 kind: ProjectNetworkPolicy metadata: namespace: STANDARD_CLUSTER_PROJECT name: allow-ingress-from-node-to-pod-traffic spec: policyType: Ingress subject: subjectType: UserWorkload userWorkloadSelector: labelSelector: clusters: matchLabels: kubernetes.io/metadata.name: STANDARD_CLUSTER_NAME namespaces: matchLabels: kubernetes.io/metadata.name: SUBJECT_NAMESPACE workloads: matchLabels: SUBJECT_LABEL_KEY: SUBJECT_LABEL_VALUE ingress: - from: - ipBlocks: - cidr: NODE_IP ports: - protocol: TCP port: PORT EOF更改下列內容:
GLOBAL_API_SERVER:全域 API 伺服器的 kubeconfig 路徑。詳情請參閱「全域和可用區 API 伺服器」。 如果您尚未為 API 伺服器產生 kubeconfig 檔案,請參閱「登入」一節。STANDARD_CLUSTER_PROJECT:標準叢集專案的名稱。STANDARD_CLUSTER_NAME:標準叢集的名稱。SUBJECT_NAMESPACE:標準叢集中的主體命名空間。SUBJECT_LABEL_KEY:用於選取主體工作負載的標籤鍵。例如:app、tier或role。SUBJECT_LABEL_VALUE:與SUBJECT_LABEL_KEY相關聯的值。舉例來說,如果SUBJECT_LABEL_KEY為app,且SUBJECT_LABEL_VALUE為webhook,則標籤為app: webhook的工作負載會接收流量。NODE_IP:來源叢集節點的 IP 位址 (採用/32標記法) 或 CIDR 範圍,系統會允許來自該節點的流量。PORT:主體工作負載上允許流量的通訊埠 (例如8443或443)。
如要確認政策是否已準備就緒,請參閱「確認政策是否已準備就緒」。
政策準備就緒後,請刪除預設基本政策,讓政策生效:
kubectl --kubeconfig GLOBAL_API_SERVER delete pnp base-policy-allow-intra-project-traffic -n PROJECT
還原預設政策
如果新政策導致服務發生問題,您可以還原預設政策,同時調查並開發解決方案。如要還原預設政策,請套用下列資訊清單:
kubectl --kubeconfig GLOBAL_API_SERVER apply -f - <<EOF
apiVersion: networking.global.gdc.goog/v1
kind: ProjectNetworkPolicy
metadata:
namespace: PROJECT
name: base-policy-allow-intra-project-traffic
spec:
policyType: Ingress
ingress:
- from:
- projectSelector:
projects:
matchNames:
- PROJECT
EOF
更改下列內容:
GLOBAL_API_SERVER:全域 API 伺服器的 kubeconfig 路徑。詳情請參閱「全域和可用區 API 伺服器」。 如果您尚未為 API 伺服器產生 kubeconfig 檔案,請參閱「登入」一節。PROJECT:專案名稱。
如要確認政策是否已準備就緒,請參閱「確認政策是否已準備就緒」。
為標準叢集建立輸出專案內政策
如要在標準叢集建立輸出叢集內 Pod 對 Pod 政策,請建立並套用下列自訂資源:
kubectl --kubeconfig GLOBAL_API_SERVER apply -f - <<EOF apiVersion: networking.global.gdc.goog/v1 kind: ProjectNetworkPolicy metadata: namespace: STANDARD_CLUSTER_PROJECT name: allow-egress-to-intra-cluster-traffic spec: policyType: Egress subject: subjectType: UserWorkload userWorkloadSelector: labelSelector: clusters: matchLabels: kubernetes.io/metadata.name: STANDARD_CLUSTER_NAME namespaces: matchLabels: kubernetes.io/metadata.name: SUBJECT_NAMESPACE workloads: matchLabels: SUBJECT_LABEL_KEY: SUBJECT_LABEL_VALUE egress: - to: - projectSelector: projects: matchNames: - STANDARD_CLUSTER_PROJECT workloadSelector: labelSelector: clusters: matchLabels: kubernetes.io/metadata.name: STANDARD_CLUSTER_NAME namespaces: matchLabels: kubernetes.io/metadata.name: PEER_NAMESPACE workloads: matchLabels: PEER_LABEL_KEY: PEER_LABEL_VALUE EOF更改下列內容:
GLOBAL_API_SERVER:全域 API 伺服器的 kubeconfig 路徑。詳情請參閱「全域和可用區 API 伺服器」。 如果您尚未為 API 伺服器產生 kubeconfig 檔案,請參閱「登入」一節。STANDARD_CLUSTER_PROJECT:標準叢集專案的名稱。STANDARD_CLUSTER_NAME:標準叢集的名稱。SUBJECT_NAMESPACE:標準叢集中的主體命名空間。PEER_NAMESPACE:標準叢集中的對等命名空間。SUBJECT_LABEL_KEY:用於選取主體工作負載的標籤鍵。例如:app、tier或role。如果您參照的是 VM 標籤,則必須在這個索引鍵中加入前置字元,請參閱這份清單後方的警告。SUBJECT_LABEL_VALUE:與SUBJECT_LABEL_KEY相關聯的值。舉例來說,如果SUBJECT_LABEL_KEY為app,SUBJECT_LABEL_VALUE為backend,則標籤為app: backend的工作負載會傳送流量。PEER_LABEL_KEY:用於選取對等互連工作負載的標籤鍵。如果您參照的是 VM 標籤,則必須在這個索引鍵中加入前置字元,請參閱這份清單後方的警告。PEER_LABEL_VALUE:與PEER_LABEL_KEY相關聯的值。
如要確認政策是否已準備就緒,請參閱「確認政策是否已準備就緒」。
使用
ipBlocks欄位控管 Pod 和特定叢集節點之間的流量,是預先發布版功能。如需詳細資訊和規模考量,請參閱「使用 IP 區塊指定叢集節點」。如要在標準叢集中建立輸出叢集內 Pod 對節點政策,請建立並套用下列自訂資源:kubectl --kubeconfig GLOBAL_API_SERVER apply -f - <<EOF apiVersion: networking.global.gdc.goog/v1 kind: ProjectNetworkPolicy metadata: namespace: STANDARD_CLUSTER_PROJECT name: allow-egress-from-pod-to-node-traffic spec: policyType: Egress subject: subjectType: UserWorkload userWorkloadSelector: labelSelector: clusters: matchLabels: kubernetes.io/metadata.name: STANDARD_CLUSTER_NAME namespaces: matchLabels: kubernetes.io/metadata.name: SUBJECT_NAMESPACE workloads: matchLabels: SUBJECT_LABEL_KEY: SUBJECT_LABEL_VALUE egress: - to: - ipBlocks: - cidr: NODE_IP ports: - protocol: TCP port: PORT EOF更改下列內容:
GLOBAL_API_SERVER:全域 API 伺服器的 kubeconfig 路徑。詳情請參閱「全域和可用區 API 伺服器」。 如果您尚未為 API 伺服器產生 kubeconfig 檔案,請參閱「登入」一節。STANDARD_CLUSTER_PROJECT:標準叢集專案的名稱。STANDARD_CLUSTER_NAME:標準叢集的名稱。SUBJECT_NAMESPACE:標準叢集中的主體命名空間。SUBJECT_LABEL_KEY:用於選取主體工作負載的標籤鍵。例如:app、tier或role。SUBJECT_LABEL_VALUE:與SUBJECT_LABEL_KEY相關聯的值。舉例來說,如果SUBJECT_LABEL_KEY為app,且SUBJECT_LABEL_VALUE為controller,則標籤為app: controller的工作負載會傳送流量。NODE_IP:目的地叢集節點的 IP 位址 (採用/32標記法) 或 CIDR 範圍,允許流量傳送至該節點。PORT:目的地節點上允許流量的通訊埠 (例如6444或443)。
如要確認政策是否已準備就緒,請參閱「確認政策是否已準備就緒」。
確認政策是否就緒
執行下列指令,確認專案網路政策已就緒:
kubectl --kubeconfig GLOBAL_API_SERVER get pnp POLICY_NAME -n PROJECT -oyaml
將 POLICY_NAME 替換為要驗證的政策名稱,並將 PROJECT 替換為建立政策的專案名稱。
在輸出內容的 Ready 條件中,尋找 status: "True":
...
status:
...
conditions:
- lastTransitionTime: "2026-03-24T10:55:25Z"
message: ProjectNetworkPolicy propagated to remote clusters
observedGeneration: 1
reason: Propagated
status: "True"
type: Ready
...