協助改進此頁面
本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
若要為本使用者指南貢獻內容,請點選每個頁面右側面板中的在 GitHub 上編輯此頁面連結。
本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
選擇最佳的 Amazon EC2 節點執行個體類型
Amazon EC2 為工作節點提供多種執行個體類型選擇。每個執行個體類型皆提供不同的運算、記憶體、儲存與網路功能。每個執行個體也會依照這些功能分組為執行個體系列。有關清單,請參閱《Amazon EC2 使用者指南》中的可用的執行個體類型。Amazon EKS 發佈了多種 Amazon EC2 AMI 變體以啟用支援。若要確保您選取的執行個體類型與 Amazon EKS 相容,請考慮以下條件。
-
所有 Amazon EKS AMI 目前不支援
mac系列。 -
Arm 和非加速的 Amazon EKS AMI 不支援
g3、g4、inf及p系列。 -
加速的 Amazon EKS AMI 不支援
a、c、hpc、m及t系列。 -
對於 ARM 型執行個體,Amazon Linux 2023 (AL2023) 僅支援使用 Graviton2 或更新版本處理器的執行個體類型。AL2023 不支援
A1執行個體。
在 Amazon EKS 支援的執行個體類型之間進行選擇時,請考慮每種類型的以下功能。
- 節點群組中的執行個體數量
-
一般來說,較少、較大的執行個體更好,特別是在有很多 Daemonsets. 的情況下。每個執行個體都需要對 API 伺服器進行 API 呼叫,因此擁有的執行個體越多,API 伺服器上的負載就越大。
- 作業系統
-
檢閱 Linux、Windows 以及 Bottlerocket
支援的執行個體類型。建立 Windows 執行個體前,請檢閱在 EKS 叢集上部署 Windows 節點。 - 硬體架構
-
您需要 x86 還是 Arm? 部署 Arm 執行個體前,請檢閱 Amazon EKS 最佳化 Arm Amazon Linux AMI。您是否需要建置在 Nitro 系統 (Linux 或 Windows) 上的執行個體,或具有加速功能的執行個體? 如果您需要加速功能,則只能將 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。
優先順序 (從高到低):
-
受管節點群組強制執行 – 當您使用沒有自訂 AMI 的受管節點群組時,Amazon EKS 會在節點的使用者資料
maxPods中強制執行 上的上限。對於少於 30 個 vCPUs執行個體,上限為110。對於 vCPUs執行個體,上限為250。此值優先於任何其他maxPods組態,包括maxPodsExpression。 -
kubelet
maxPods組態 – 如果您maxPods直接在 kubelet 組態中設定 (例如,透過具有自訂 AMI 的啟動範本),則此值優先於maxPodsExpression。 -
nodeadm
maxPodsExpression– 如果您在maxPodsExpression中使用 NodeConfig, nodeadm 會評估表達式來計算maxPods。這只有在較高優先順序的來源尚未設定值時才會有效。 -
預設 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值一律為上限110或250取決於執行個體大小。 -
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 最大數量計算的結果。