將 EC2 Spot 執行個體與 Amazon EKS 搭配使用的最佳實務做法有哪些?

1 分的閱讀內容
0

我想要將 Amazon Elastic Compute Cloud (Amazon EC2) Spot 執行個體與 Amazon Elastic Kubernetes Service (Amazon EKS) 搭配使用。最佳實務有哪些?

簡短說明

以下是將 Amazon EC2 Spot 執行個體與 Amazon EKS 搭配使用的一些最佳實務做法:

  • 請勿將 Spot 執行個體用於長時間執行的任務或有狀態的應用程式。
  • 將受管節點群組與 Spot 執行個體搭配使用。
  • 將多個執行個體類型新增至節點群組。
  • 使用適用於自我管理節點群組的 AWS 節點終止處理程式 (NTH)。

解決方案

請勿將 Spot 執行個體用於長時間執行的任務或有狀態的應用程式

Spot 執行個體的使用壽命較短,可能會導致長時間執行的任務出現不必要的終止。它還會影響有狀態的應用程式,因為有狀態的應用程式無法承受關閉。而是將隨需執行個體用於長時間執行的任務。

將受管節點群組與 Spot 執行個體搭配使用

您可以將受管節點群組的容量類型設定為 Spot。然後受管節點群組會設定一個 Auto Scaling 群組,以使用 EC2 Auto Scaling 容量重新平衡。當 EC2 Auto Scaling 容量重新平衡已啟用且 Spot 節點收到重新平衡建議時,Amazon EKS 會嘗試取代 Spot 節點。

在新的 Spot 節點準備就緒後,Amazon EKS 會分離並耗盡之前的 Spot 節點。這有助於降低 Amazon Elastic Block Store (Amazon EBS) 磁碟區損毀或資料庫連線中斷的風險。

將多個執行個體類型新增至節點群組

每個 Spot 執行個體集區均包含特定可用區域中特定執行個體類型的未使用 EC2 執行個體容量。當節點群組嘗試佈建新節點時,節點群組會使用其組態中定義的其中一個執行個體類型。如果執行個體類型在任何可用區域中均沒有 Spot 容量,則節點群組無法擴展並降級。

若要避免此問題,請增加節點群組中類似執行個體類型的數目。

例如,您的執行個體類型為 m5.large (2 個 vCPU /8 GiB RAM)。新增具有相同 vCPU 和 RAM 值 (例如 m5a.large、m5n.large 和 m4.large) 的執行個體。

使用適用於自我管理節點群組的 AWS NTH

GitHub 網站的 AWS 節點終止處理程式 (NTH) 會以部署或 DaemonSet 的形式部署至 Amazon EKS 叢集。NTH 可增加自我管理節點群組所欠缺的功能。該處理常式可偵測 Amazon EC2 維護事件、Spot 中斷通知、Auto Scaling 群組擴展事件和可用區域重新平衡,並適當地做出回應。使用佇列處理程式選項,將每個 NTH 功能新增至自我管理節點群組。

使用 Karpenter 來管理 Spot 執行個體

Karpenter 是開放原始碼叢集的自動資源配置器,可因應無法排程的 Pod 自動佈建新節點。Karpenter 還具有縮減和合併節點的功能,可減少浪費、降低成本。它使用 capacity-optimized-prioritized 分配策略來佈建 EC2 執行個體。

Karpenter 使用 Amazon EKS 叢集之 AWS 區域和可用區域中所有可用的 EC2 執行個體類型來最佳化 Spot 執行個體。您可以將 Karpenter 與 EC2 執行個體選取器工具搭配使用,以產生符合特定運算需求的執行個體類型清單。透過使用各種執行個體類型,您可降低容量不足錯誤的風險。最佳實務做法是將執行個體分散到多個不同的可用區域,以便使用不同的 Spot 集區。

如需有關 Karpenter 最佳實務做法和限制的詳細資訊,請參閱 GitHub 上的 Karpenter best practices (Karpenter 最佳實務做法)。

**重要事項:**Karpenter 目前缺乏處理兩分鐘 Spot 中斷終止通知 (ITN) 警告的能力。為了解決這個問題,您可以安裝 NTH 以便在中斷時從容地封鎖並耗盡 Spot 節點。


AWS 官方
AWS 官方已更新 1 年前