協助改善此頁面
本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
若要提供此使用者指南,請選擇位於每個頁面右窗格中的 GitHub 上編輯此頁面連結。
本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
選擇最佳的 Amazon EC2 節點執行個體類型
Amazon EC2 為工作節點提供多種執行個體類型選擇。每個執行個體類型皆提供不同的運算、記憶體、儲存與網路功能。每個執行個體也會依照這些功能分組為執行個體系列。如需清單,請參閱《Amazon EC2 使用者指南》中的可用執行個體類型。Amazon EKS 發佈了多種 Amazon EC2 AMI 變體以啟用支援。若要確保您選取的執行個體類型與 Amazon EKS 相容,請考慮以下條件。
-
所有 Amazon EKS AMIs 目前都不支援
g5g
和mac
系列。 -
Arm 和非加速 Amazon EKS AMIs 不支援
g3
、inf
、g4
和p
系列。 -
加速的 Amazon EKS AMIs 不支援
a
、c
、hpc
、m
和t
系列。 -
對於 Arm 型執行個體,Amazon Linux 2023 (AL2023) 僅支援使用 Graviton2 或更新版本處理器的執行個體類型。AL2023 不支援
A1
執行個體。
在 Amazon EKS 支援的執行個體類型之間進行選擇時,請考慮每種類型的以下功能。
- 節點群組中的執行個體數量
-
一般而言,越少越大的執行個體越好,尤其是如果您有許多 Daemonset。每個執行個體都需要對 API 伺服器進行 API 呼叫,因此擁有的執行個體越多,API 伺服器上的負載就越大。
- 作業系統
-
檢閱 Linux、Windows 以及 Bottlerocket
支援的執行個體類型。建立 Windows 執行個體之前,請檢閱 EKS 叢集上的部署 Windows 節點。 - 硬體架構
-
您需要 x86 或 Arm 嗎? 部署 Arm 執行個體之前,請檢閱 Amazon EKS 最佳化 Arm Amazon Linux AMIs。您需要在 Nitro 系統 ( Linux 或 Windows) 上建置的執行個體,還是具有加速功能的執行個體? 如果您需要加速功能,則只能將 Linux 與 Amazon EKS 搭配使用。
- Pod 數量上限
-
由於每個 Pod 都會指派自己的 IP 地址,因此執行個體類型支援的 IP 地址數量是決定可在執行個體上執行之 Pod 數量的因素。若要手動判斷執行個體類型支援的 Pod 數量,請參閱 Amazon EKS 為每種 Amazon EC2 執行個體類型建議 Pod 數量上限。
注意
如果您使用的是 Amazon EKS 最佳化的 Amazon Linux 2 AMI
v20220406
或更新版本,則可以使用新的執行個體類型,而無需升級至最新的 AMI。對於這些 AMIs,如果 AMI 未列在 eni-max-pods.txt檔案中,則 AMI 會自動計算必要的 max-pods
值。預設情況下,Amazon EKS 可能不支援目前處於預覽版中的執行個體類型。此類類型的max-pods
值仍需新增至我們 AMI 中的eni-max-pods.txt
。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 將 IPs 指派給 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 地址數量。如果您使用的是具有多個執行個體類型的受管節點群組,請使用適用於所有執行個體類型的值。
-
下載可用來計算每種執行個體類型的 Pod 數量上限的指令碼。
curl -O https://raw.githubusercontent.com/awslabs/amazon-eks-ami/master/templates/al2/runtime/max-pods-calculator.sh
-
將指令碼標記為電腦上的可執行檔。
chmod +x max-pods-calculator.sh
-
執行指令碼,將
m5.large
取代為您計劃部署的執行個體類型,並將1.9.0-eksbuild.1
取代為您的 Amazon VPC CNI 附加元件版本。若要判斷您的附加元件版本,請參閱使用 Amazon VPC CNI 將 IPs 指派給 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
選項執行指令碼,以查看所有可用選項。
注意
最大 Pods 計算器指令碼110
會根據 Kubernetes 可擴展性閾值250
,這是根據內部 Amazon EKS 可擴展性團隊測試而定的數字。如需詳細資訊,請參閱 Amazon VPC CNI 外掛程式增加每節點的 Pod 限制
EKS Auto 模式的考量事項
EKS Auto Mode 將節點上的 Pod 數量限制為以下兩者中較低的數量:
-
110 個 Pod 硬蓋
-
上述最大 Pod 計算的結果。