選擇最佳的 Amazon EC2 節點執行個體類型 - Amazon EKS

協助改進此頁面

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

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

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

選擇最佳的 Amazon EC2 節點執行個體類型

Amazon EC2 為工作節點提供多種執行個體類型選擇。每個執行個體類型皆提供不同的運算、記憶體、儲存與網路功能。每個執行個體也會依照這些功能分組為執行個體系列。有關清單,請參閱《Amazon EC2 使用者指南》中的可用的執行個體類型。Amazon EKS 發佈了多種 Amazon EC2 AMI 變體以啟用支援。若要確保您選取的執行個體類型與 Amazon EKS 相容,請考慮以下條件。

  • 所有 Amazon EKS AMI 目前不支援 mac 系列。

  • Arm 和非加速的 Amazon EKS AMI 不支援 g3g4infp 系列。

  • 加速的 Amazon EKS AMI 不支援 achpcmt 系列。

  • 對於 ARM 型執行個體,Amazon Linux 2023 (AL2023) 僅支援使用 Graviton2 或更新版本處理器的執行個體類型。AL2023 不支援 A1 執行個體。

在 Amazon EKS 支援的執行個體類型之間進行選擇時,請考慮每種類型的以下功能。

節點群組中的執行個體數量

一般來說,較少、較大的執行個體更好,特別是在有很多 Daemonsets. 的情況下。每個執行個體都需要對 API 伺服器進行 API 呼叫,因此擁有的執行個體越多,API 伺服器上的負載就越大。

作業系統

檢閱 LinuxWindows 以及 Bottlerocket 支援的執行個體類型。建立 Windows 執行個體前,請檢閱在 EKS 叢集上部署 Windows 節點

硬體架構

您需要 x86 還是 Arm? 部署 Arm 執行個體前,請檢閱 Amazon EKS 最佳化 Arm Amazon Linux AMI。您是否需要建置在 Nitro 系統 (LinuxWindows) 上的執行個體,或具有加速功能的執行個體? 如果您需要加速功能,則只能將 Linux 與 Amazon EKS 搭配使用。

Pod 數目上限

由於每個 Pod 都指派了自己的 IP 位址,因此執行個體類型支援的 IP 位址數量是決定可在執行個體上執行之 Pod 數量的因素。若要手動確定執行個體類型所能支援的 Pod 數量,請參閱 Amazon EKS 為每種 Amazon EC2 執行個體類型建議 Pod 數量上限

注意

如果您使用 Amazon EKS 最佳化的 Amazon Linux 2 AMI (v20220406 或更新版本),您可以使用新的執行個體類型,而無需升級至最新的 AMI。對於這些 AMI,AMI 會自動計算必要的 max-pods 值 (如果未列於 eni-max-pods.txt 檔案)。預設情況下,Amazon EKS 可能不支援目前處於預覽版中的執行個體類型。此類類型的 max-pods 值仍需新增至我們 AMI 中的 eni-max-pods.txt

與非 Nitro 系統執行個體類型相比,AWSNitro 系統執行個體類型可選擇支援為數更多的 IP 地址。然而,並非為執行個體指派的所有 IP 位址都可用於 Pod。要為您的執行個體指派大量的 IP 地址,您必須在叢集中安裝並適當設定 Amazon VPC CNI 附加元件 1.9.0 或更新版本。如需詳細資訊,請參閱 將更多 IP 位址指派給具有字首的 Amazon EKS 節點。要將最大數量的 IP 地址指派給執行個體,您必須在叢集中安裝版本 1.10.1 或更新版本的 Amazon VPC CNI 附加元件,並使用 IPv6 系列部署叢集。

IP 系列

在將 IPv4 系列用於叢集時,您可以使用任何受支援的執行個體類型,這允許您的叢集將私有 IPv4 位址指派給您的 Pod 和服務。但是,如果您想在叢集中使用 IPv6 系列,則必須使用 AWS Nitro 系統執行個體類型或裸機類型。Windows 執行個體僅支援 IPv4。您的叢集必須是執行版本 1.10.1 或更新版本 Amazon VPC CNI 附加元件的叢集。如需有關使用 IPv6 的詳細資訊,請參閱 了解叢集、Pod 與服務的 IPv6 位址

您正在執行的 Amazon VPC CNI 附加元件版本

最新版的 Kubernetes 專用 Amazon VPC CNI 外掛程式支援這些執行個體類型。您可能需要更新 Amazon VPC CNI 附加元件版本,才能利用最新支援的執行個體類型。如需詳細資訊,請參閱 使用 Amazon VPC CNI 將 IP 指派給 Pod。最新版本支援與 Amazon EKS 搭配使用的最新功能。舊版不支援所有功能。您可以在 GitHub 上的變更日誌檢視不同版本支援的功能。

您正在其中建立節點的 AWS 區域

並非所有 AWS 區域皆提供執行個體類型。

您是否使用 Pod 的安全群組

如果您正在使用 Pod 的安全群組,則僅支援特定的執行個體類型。如需詳細資訊,請參閱 將安全群組指派至個別 Pod

Amazon EKS 為每種 Amazon EC2 執行個體類型建議 Pod 數量上限

由於每個 Pod 都指派了自己的 IP 位址,因此執行個體類型支援的 IP 位址數量是決定可在執行個體上執行之 Pod 數量的因素。Amazon EKS 提供一個可以下載並執行的指令碼,以便判斷 Amazon EKS 建議在每種執行個體類型上所能執行的 Pod 數量上限。該指令碼會使用每個執行個體的硬體屬性和組態選項來判斷 Pod 數量上限。您可以使用這些步驟中傳回的數字來啟用功能,例如將 IP 位址指派給來自與執行個體不同子網路的 Pod,以及大幅增加執行個體的 IP 位址數量。如果您使用的是具有多個執行個體類型的受管節點群組,請使用適用於所有執行個體類型的值。

  1. 下載可用來計算每種執行個體類型的 Pod 數量上限的指令碼。

    curl -O https://raw.githubusercontent.com/awslabs/amazon-eks-ami/master/templates/al2/runtime/max-pods-calculator.sh
  2. 將指令碼標記為電腦上的可執行檔。

    chmod +x max-pods-calculator.sh
  3. 執行指令碼,使用您計劃部署的執行個體類型取代 m5.large,並使用 Amazon VPC CNI 附加元件版本取代 1.9.0-eksbuild.1。要確定您的附加元件版本,請參閱使用 Amazon VPC CNI 將 IP 指派給 Pod 中的更新程序。

    ./max-pods-calculator.sh --instance-type m5.large --cni-version 1.9.0-eksbuild.1

    範例輸出如下。

    29

    您可以在指令碼中新增下列選項,查看使用選用功能時支援的 Pod 數量上限。

    • --cni-custom-networking-enabled:想要從不同於執行個體的子網路指派 IP 位址時,請使用此選項。如需詳細資訊,請參閱 使用自訂聯網在替代子網路中部署 Pod。將此選項新增至具有相同範例值的前一個指令碼會產生 20

    • --cni-prefix-delegation-enabled:想要為每個彈性網路介面指派更大量的 IP 地址時,請使用此選項。此功能需要在 Nitro 系統上執行的 Amazon Linux 執行個體,以及 Amazon VPC CNI 附加元件 1.9.0 版或更新版本。如需詳細資訊,請參閱 將更多 IP 位址指派給具有字首的 Amazon EKS 節點。將此選項新增至具有相同範例值的前一個指令碼會產生 110

您還可以使用 --help 選項執行指令碼,以查看所有可用選項。

注意

最大 Pod 計算器指令碼會根據 Kubernetes 可擴展性閾值和建議的設定,將傳回值限制為 110。如果您的執行個體類型有超過 30 個 vCPU,則此限制會跳轉至 250,這是根據內部 Amazon EKS 可擴展性團隊測試而定的數字。如需詳細資訊,請參閱 Amazon VPC CNI 外掛程式增加每節點的 Pod 限制部落格文章。

EKS 自動模式的考量事項

EKS 自動模式會將節點上的 Pod 數量限制為以下兩者中較低的值:

  • 110 個 Pod 的硬性上限

  • 上述 Pod 最大數量計算的結果。