啟用 的傳出網際網路存取 pods - Amazon EKS

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

啟用 的傳出網際網路存取 pods

適用於:Linux IPv4 Fargate 節點、Linux 具有 Amazon EC2 執行個體的節點

如果您使用 IPv6 系列部署叢集,則此主題中的資訊不適用於叢集,因為IPv6地址未進行網路翻譯。如需搭配使用 IPv6 與叢集的詳細資訊,請參閱 了解叢集的 IPv6 地址、pods、 和服務

根據預設,每個 Pod 在叢集中,系統會指派一個連結:AWSEC2/latest/UserGuide/using-instance-addressing.html#concepts-private-addressesIPv4 地址,該地址來自與 VPC 相關聯的無類別網域間路由 (CIDR) 區塊,Pod 已部署在 中。Pods 在相同的 VPC 中,使用這些私有 IP 地址作為端點彼此通訊。當 Pod 會與不在與 CIDR 相關聯的 VPC 區塊內的任何IPv4地址通訊,Amazon VPC CNI 外掛程式 (適用於 LinuxWindows) 會轉譯 Pod’s IPv4 地址為節點的主要彈性網路介面的主要私有IPv4地址,Pod 在 上執行,依預設是 ^* ^。

注意

用於 Windows 節點,還有其他要考慮的詳細資訊。根據預設,Windows 的 VPC CNI外掛程式是以網路組態定義,其中 SNAT 會排除流向相同 VPC 內目的地的流量。這表示內部 VPC 通訊已停用 SNAT,且 IP 地址已配置給 Pod 可在 VPC 內路由。但流向 VPC 外部目的地的流量具有來源 Pod IP SNAT 至執行個體 ENI 的主要 IP 地址。此預設組態 Windows 確保 Pod 能以與主機執行個體相同的方式存取 VPC 外部的網路。

由於此行為:

  • 您的 Pods 只有在執行的節點具有指派給網際網路資源的有或彈性 IP 地址,且位於公有子網路中時,才能與網際網路資源通訊。公有子網路的關聯路由表具有網際網路閘道的路由。我們建議儘可能將節點部署到私有子網。

  • 對於早於 的外掛程式版本1.8.0,使用 VPCs 對等、傳輸 Word 或 AWS Direct Connect 連接至叢集 VPC 的網路或 Word 中的資源無法啟動與 的通訊 VPC VPC Pods 次要彈性網路介面後方。您的 Pods 不過, 可以啟動與這些資源的通訊,並從這些資源接收回應。

如果在您的環境中下列任一陳述式成立,請使用下列命令變更預設組態。

  • 您的網路或 VPCs 中有使用 VPC VPC對等傳輸 VPCAWS Direct Connect 連接至叢集 Word 的資源,而這些資源需要與您的 進行通訊 Pods 使用 IPv4 地址,且您的外掛程式版本早於 1.8.0

  • 您的 Pods 位於私有子網路中,且需要向網際網路傳出通訊。子網路具有 NAT 閘道的路由。

kubectl set env daemonset -n kube-system aws-node AWS_VPC_K8S_CNI_EXTERNALSNAT=true
注意

AWS_VPC_K8S_CNI_EXTERNALSNATAWS_VPC_K8S_CNI_EXCLUDE_SNAT_CIDRS CNI 組態變數不適用於 Windows 節點。不支援停用 SNAT Windows。 對於從 IPv4 CIDRs 中排除 SNAT 清單,您可以透過在 中指定 ExcludedSnatCIDRs 參數來定義此項目 Windows 引導指令碼。如需使用此參數的詳細資訊,請參閱 引導指令碼組態參數

主機聯網

^*^如果 Pod’s spec 包含 hostNetwork=true(預設為 false),則其 IP 地址不會轉譯為不同的地址。這是 kube-proxy和 的案例 Amazon VPC CNI plugin for Kubernetes Pods 根據預設, 會在叢集上執行。對於這些 Pods,IP 地址與節點的主要 IP 地址相同,因此 Pod’s IP 地址未翻譯。如需 的詳細資訊 Pod’s hostNetwork 設定,請參閱中的 PodSpec v1 核心 Kubernetes API參考。