使用 Kubernetes 網路政策限制 Pod 流量 - Amazon EKS

協助改進此頁面

若要為本使用者指南貢獻內容,請點選每個頁面右側面板中的在 GitHub 上編輯此頁面連結。

使用 Kubernetes 網路政策限制 Pod 流量

根據預設,Kubernetes 中沒有任何限制施加於 IP 位址、連接埠,或叢集中任何 Pod 之間或您的 Pod 與任何其他網路中的資源之間的連結。您可以使用 Kubernetes 網路政策來限制往返 Pod 之間的網路流量。如需詳細資訊,請參閱 Kubernetes 文件的網路政策

如果您在叢集上有版本 1.13 或更早版本的 Kubernetes 專用 Amazon VPC CNI 外掛程式,您需要實作第三方解決方案才能將 Kubernetes 套用至叢集的網路政策。外掛程式的 1.14 版本或更新版本可以實作網路政策,因此您不需要使用第三方解決方案。在本主題中,您將學習如何設定叢集以在叢集上使用 Kubernetes 網路政策,而不需要使用第三方附加元件。

Kubernetes 專用 Amazon VPC CNI 外掛程式中的網路政策在以下組態中受支援。

  • 叢集上安裝版本為 1.14 或更高版本的 Kubernetes 專用 Amazon VPC CNI 外掛程式。

  • 設定為 IPv4IPv6 地址的叢集。

  • 您可以搭配 Pod 的安全群組來使用網路政策。有了網路政策,您就可以控制所有叢集內通訊。搭配 Pod 的安全群組,您就可以從 Pod 中的應用程式控制對 AWS 的存取。

  • 您可以搭配自訂聯網字首委派來使用網路政策。

考量事項

架構

  • 使用 Kubernetes 專用 Amazon VPC CNI 外掛程式將 Kubernetes 專用 Amazon VPC CNI 外掛程式網路政策套用至您的叢集時,您只能將這些政策套用至 Amazon EC2 Linux 節點。您無法將這些政策套用至 Fargate 或 Windows 節點。

  • 網路政策只會套用 IPv4IPv6 位址,但不能同時套用兩者。在 IPv4 叢集中,VPC CNI 會將 IPv4 位址指派給 Pod 並套用 IPv4 政策。在 IPv6 叢集中,VPC CNI 會將 IPv6 位址指派給 Pod 並套用 IPv6 政策。套用至 IPv6 叢集的任何 IPv4 網路政策規則都會遭到忽略。套用至 IPv4 叢集的任何 IPv6 網路政策規則都會遭到忽略。

網路政策

  • 網路政策僅會套用至屬於部署一部分的 Pod。沒有 metadata.ownerReferences 集合的獨立 Pod 無法套用網路政策。

  • 您可以將多個網路政策套用至相同的 Pod。當設定了兩個以上選取相同 Pod 的政策,所有政策皆會套用至 Pod。

  • 在所有網路政策中,單一 IP 位址範圍 (CIDR) 的連接埠和通訊協定組合數目上限為 24。選取器,如 namespaceSelector 解析為一或多個 CIDRs。如果多個選擇器解析為單一 CIDR,或者您在相同或不同的網路政策中多次指定相同的直接 CIDR,這些都會計入此限制。

  • 對於任何一種您的 Kubernetes 服務,服務連接埠必須與容器連接埠相同。如果您使用的是已命名連接埠,請也要在服務規格中使用相同的名稱。

移轉

  • 如果您的叢集目前正在使用第三方解決方案來管理 Kubernetes 網路政策,您可以搭配 Kubernetes 專用 Amazon VPC CNI 外掛程式來使用那些相同的政策。然而,您必須移除現有的解決方案,如此才不會管理相同的政策。

警告

我們建議在移除網路政策解決方案後,更換所有曾套用該網路政策解決方案的節點。這是因為如果解決方案的 Pod 突然退出,流量規則可能會殘留。

安裝

  • 網路政策功能會建立且需要稱為 policyendpoints.networking.k8s.awsPolicyEndpoint 自訂資源定義 (CRD)。自訂資源的 PolicyEndpoint 物件是由 Amazon EKS 管理。您不應修改或刪除這些資源。

  • 如果您執行使用執行個體角色 IAM 憑證的 Pod 或連線至 EC2 IMDS,請小心檢查是否有會封鎖 EC2 IMDS 存取的網路政策。您可能需要新增網路政策以允許 EC2 IMDS 的存取權。如需詳細資訊,請參閱《Amazon EC2 使用者指南》中的執行個體中繼資料和使用者資料

    使用服務帳戶的 IAM 角色EKS Pod 身分識別的 Pod 不會存取 EC2 IMDS。

  • Kubernetes 專用 Amazon VPC CNI 外掛程式不會將網路政策套用至每個 Pod 的其他網路介面,而只會套用每個 Pod 的主要介面 (eth0)。這會影響下列架構:

    • ENABLE_V4_EGRESS 變數設定為 trueIPv6 Pod。此變數可讓 IPv4 輸出功能將 IPv6 Pod 連線到 IPv4 端點,例如叢集外部的端點。IPv4 輸出功能的運作方式是使用本機迴路 IPv4 地址建立額外的網路介面。

    • 使用鏈結的網絡外掛程式(例如 Multus)時。由於這些外掛程式會將網路介面新增至每個 Pod,因此網路政策不會套用至鏈結的網路外掛程式。