選擇最佳的 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 數量,請參閱

AWS Nitro 系統執行個體類型可選擇性地支援比非 Nitro 系統執行個體類型更多的 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

maxPods的判斷方式

套用至節點的最終maxPods值取決於以特定優先順序互動的數個元件。了解此順序有助於您在自訂 時避免意外行為maxPods

優先順序 (從高到低):

  1. 受管節點群組強制執行 – 當您使用沒有自訂 AMI 的受管節點群組時,Amazon EKS 會在節點的使用者資料maxPods中強制執行 上的上限。對於少於 30 個 vCPUs執行個體,上限為 110。對於 vCPUs執行個體,上限為 250。此值優先於任何其他maxPods組態,包括 maxPodsExpression

  2. kubelet maxPods組態 – 如果您maxPods直接在 kubelet 組態中設定 (例如,透過具有自訂 AMI 的啟動範本),則此值優先於 maxPodsExpression

  3. nodeadm maxPodsExpression – 如果您在 maxPodsExpression中使用 NodeConfig, nodeadm 會評估表達式來計算 maxPods。這只有在較高優先順序的來源尚未設定值時才會有效。

  4. 預設 ENI 型計算 – 如果未設定其他值,AMI maxPods會根據執行個體類型支援的彈性網路介面和 IP 地址數目來計算。這相當於公式 (number of ENIs × (IPs per ENI − 1)) + 2。每個節點kube-proxy上執行的 Amazon VPC CNI + 2帳戶,不會使用 Pod IP 地址。

重要

如果您使用受管節點群組並在 maxPodsExpression中設定 NodeConfig,受管節點群組的強制執行會覆寫您的表達式。若要搭配受管節點群組使用自訂maxPods值,您必須在啟動範本中指定自訂 AMI 並maxPods直接設定。如需詳細資訊,請參閱使用啟動範本自訂受管節點

受管節點群組與自我管理節點

使用受管節點群組 (沒有自訂 AMI),Amazon EKS 會將maxPods值注入節點的引導使用者資料。這表示:

  • maxPods 值一律為上限110250取決於執行個體大小。

  • maxPodsExpression 您設定的任何 都會被此注入值覆寫。

  • 若要使用不同的maxPods值,請在啟動範本中指定自訂 AMI,然後與 --use-max-pods false一起傳遞--kubelet-extra-args '--max-pods=my-value'bootstrap.sh指令碼。如需範例,請參閱 使用啟動範本自訂受管節點

透過自我管理節點,您可以完全控制引導程序。您可以在 maxPodsExpression中使用 NodeConfig--max-pods直接傳遞至 bootstrap.sh

EKS 自動模式的考量事項

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

  • 110 個 Pod 的硬性上限

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