選擇 Amazon EC2 執行個體類型 - Amazon EKS

協助改善此頁面

想要為此使用者指南做出貢獻嗎? 捲動至此頁面底部,然後選取 [編輯此頁面於] GitHub。您的貢獻將有助於使我們的用戶指南更適合所有人。

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

選擇 Amazon EC2 執行個體類型

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

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

  • 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 執行個體之前,請檢閱 為您的 Amazon EKS 叢集啟用 Windows 支援

硬體架構

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

Pods數目上限

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

注意

如果您使用 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

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

IP 系列

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

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

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

AWS 區域 你正在創建你的節點

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

您是否使用 Pods 的安全群組

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

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

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

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

    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 plugin for Kubernetes Amazon EKS 附加元件 中的更新程序。

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

    範例輸出如下。

    29

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

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

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

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

注意

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