使用受管節點群組簡化節點生命週期 - Amazon EKS

協助改善此頁面

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

若要提供此使用者指南,請選擇位於每個頁面右窗格中的 GitHub 上編輯此頁面連結。

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

使用受管節點群組簡化節點生命週期

Amazon EKS 受管節點群組會自動化 Amazon EKS Kubernetes 叢集節點 (Amazon EC2 執行個體) 的佈建和生命週期管理。

使用 Amazon EKS 受管節點群組時,不需要個別佈建或註冊提供運算容量的 Amazon EC2 執行個體,來執行 Kubernetes 應用程式。您可以透過單一操作來建立、自動更新或終止叢集的節點。節點更新和終止會自動耗盡節點,以確保您的應用程式保持可用。

每個受管節點都會佈建為由 Amazon EKS 為您管理的 Amazon EC2 Auto Scaling 群組的一部分。包括執行個體和 Auto Scaling 群組在內的每個資源都會在您的 AWS 帳戶中執行。每個節點群組都可以跨您定義的多個可用區域執行。

受管節點群組也可以選擇性地利用節點自動修復,持續監控節點的運作狀態。它會自動回應偵測到的問題,並盡可能取代節點。這有助於叢集的整體可用性,且只需最少的手動介入。如需詳細資訊,請參閱啟用節點自動修復並調查節點運作狀態問題

您可以使用 Amazon EKS 主控台、eksctl、 AWS CLI、 AWS API 或基礎設施做為程式碼工具,包括 AWS CloudFormation,將受管節點群組新增至新的或現有的叢集。Kubernetes Cluster Autoscaler 會自動標記作為受管節點群組一部分啟動的節點,以進行自動探索。您可以使用節點群組將 Kubernetes 標籤套用至節點,並隨時加以更新。

使用 Amazon EKS 受管節點群組無需額外費用,您只需支付您佈建 AWS 的資源。其中包括 Amazon EC2 執行個體、Amazon EBS 磁碟區、Amazon EKS 叢集時數,以及任何其他 AWS 基礎設施。沒有最低費用,也沒有前期承諾。

若要開始使用新的 Amazon EKS 叢集和受管節點群組,請參閱 開始使用 Amazon EKS – AWS Management Console 和 AWS CLI

若要將受管理的節點群組新增至現有叢集,請參閱 為您的叢集建立受管節點群組

受管節點群組概念

  • Amazon EKS 受管節點群組會為您建立和管理 Amazon EC2 執行個體。

  • 每個受管節點都會佈建為由 Amazon EKS 為您管理的 Amazon EC2 Auto Scaling 群組的一部分。此外,包括 Amazon EC2 執行個體和 Auto Scaling 群組在內的每個資源都會在您的 AWS 帳戶中執行。

  • 受管節點群組的 Auto Scaling 群組會跨越您在建立群組時指定的每個子網路。

  • Amazon EKS 會標記受管節點群組資源,以便將其設定為使用 Kubernetes Cluster Autoscaler

    重要

    如果您正在多個由 Amazon EBS 磁碟區支援的可用區域中執行具狀態的應用程式,並使用 Kubernetes Cluster Autoscaler,您應該設定多個節點群組,每個群組範圍都限定在單一可用區域。另外,您應該啟用 --balance-similar-node-groups 功能。

  • 部署受管節點時,您可以使用自訂啟動範本來獲得更高層級的靈活性和自訂能力。例如,可指定額外的 kubelet 引數並使用自訂 AMI。如需詳細資訊,請參閱使用啟動範本自訂受管節點。如果您在第一次建立受管節點群組時未使用自訂啟動範本,則會有自動產生的啟動範本。請勿手動修改此自動產生的範本,否則會發生錯誤。

  • Amazon EKS 會遵循受管節點群組上 CVE 和安全修補程式的共同責任模型。受管節點執行 Amazon EKS 最佳化 AMI 時,Amazon EKS 負責在報告錯誤或問題時建置 AMI 的修補版本。我們可以發佈修正程式。不過,您必須負責將這些修補的 AMI 版本部署到受管節點群組。當受管節點執行自訂 AMI 時,當回報錯誤或問題,然後部署 AMI 時,您需負責建置 AMI 的修補版本。如需詳細資訊,請參閱更新叢集的受管節點群組

  • Amazon EKS 受管節點群組可以在公有和私有子網路中啟動。如果在 2020 年 4 月 22 日或之後啟動公有子網路中的受管節點群組,則子網路必須將 MapPublicIpOnLaunch 設定為「true」,執行個體才能成功加入叢集。如果公有子網路是在 2020 年 3 月 26 日或之後使用 eksctlAmazon EKS vended AWS CloudFormation 範本建立,則此設定已設為 true。如果公有子網路是在 2020 年 3 月 26 日之前所建立,則必須手動變更設定。如需詳細資訊,請參閱修改子網的公有 IPv4 定址屬性

  • 在私有子網路中部署受管節點群組時,您必須確保該群組可存取 Amazon ECR 以提取容器映像。您可以藉由將 NAT 閘道連接至子網路的路由表,或新增下列 AWS PrivateLink VPC 端點來執行此操作:

    • Amazon ECR API 端點界面 – com.amazonaws.region-code.ecr.api

    • Amazon ECR Docker 登錄檔 API 端點界面 – com.amazonaws.region-code.ecr.dkr

    • Amazon S3 閘道端點 – com.amazonaws.region-code.s3

    如需了解其他常用的服務和端點,請參閱 部署網際網路存取受限的私有叢集

  • 受管節點群組無法部署在 AWS Outpost AWS Wavelength 中。您可以在 AWS Local Zones 上建立受管節點群組。如需詳細資訊,請參閱使用 AWS Local Zones 啟動低延遲 EKS 叢集

  • 您可以在單一叢集內建立多個受管節點群組。例如,您可以使用標準 Amazon EKS 最佳化 Amazon Linux AMI 為某些工作負載建立一個節點群組,而另一個節點群組則使用 GPU 變體為需要 GPU 支援的工作負載。

  • 如果受管節點群組遇到 Amazon EC2 執行個體狀態檢查故障問題,Amazon EKS 會傳回錯誤代碼,以協助您診斷問題。如需詳細資訊,請參閱受管節點群組錯誤代碼

  • Amazon EKS 會將 Kubernetes 標籤新增至受管節點群組執行個體。這些 Amazon EKS 提供的標籤前面會加上 eks.amazonaws.com

  • 在終止或更新期間,Amazon EKS 會使用 Kubernetes API 自動耗盡節點。

  • 使用 終止節點AZRebalance或減少所需的節點計數時,不遵守 Pod 中斷預算。這些動作會嘗試在節點上移出 Pod。但是,如果超過 15 分鐘,無論節點上的所有 Pod 是否終止,節點都會終止。若要延長期間直到節點終止,請將 lifecycle hook 新增至 Auto Scaling 群組。如需詳細資訊,請參閱 Amazon EC2 Auto Scaling 使用者指南中的新增 lifecycle hook

  • 若要在收到 Spot 中斷通知或容量重新平衡通知後正確執行耗盡程序,必須將 CapacityRebalance 設定為 true

  • 更新受管節點群組會遵守您為 Pod 設定的 Pod 中斷預算。如需詳細資訊,請參閱了解節點更新的每個階段

  • 使用 Amazon EKS 受管節點群組不會產生額外成本。您只需為佈建 AWS 的資源付費。

  • 如果要為節點加密 Amazon EBS 磁碟區,則可以使用啟動範本部署節點。若要在不使用啟動範本的情況下部署具有加密 Amazon EBS 磁碟區的受管節點,請加密帳戶中建立的所有新 Amazon EBS 磁碟區。如需詳細資訊,請參閱《Amazon EC2 使用者指南》中的預設加密

受管節點群組容量類型

建立受管節點群組時,您可以選擇隨需或 Spot 容量類型。Amazon EKS 部署具有 Amazon EC2 Auto Scaling 群組的受管節點群組,該群組僅包含隨需執行個體或僅包含 Amazon EC2 Spot 執行個體。您可以將容錯應用程式的 Pod 排程為 Spot 受管節點群組,並將容錯應用程式排程為單一 Kubernetes 叢集內的隨需節點群組。依預設,受管節點群組會部署隨需 Amazon EC2 執行個體。

On-Demand

透過隨需執行個體,您只需要按秒數支付運算容量開銷,無需簽訂長期合約。

預設情況下,如果未指定容量類型,則會使用隨需執行個體佈建受管節點群組。受管節點群組會代表您設定 Amazon EC2 Auto Scaling 群組,並套用下列設定:

  • 佈建隨需容量的配置策略設定為 prioritized。在滿足隨需容量時,受管節點群組會 API 中傳遞執行個體類型的順序,決定先使用哪一種執行個體類型。例如,您可以按照下列順序指定三種執行個體類型:c5.largec4.large,以及 c3.large。當您的隨需執行個體啟動時,受管節點群組會從 c5.large 開始,然後是 c4.large,再來是 c3.large,以滿足隨需容量。如需詳細資訊,請參閱《Amazon EC2 Auto Scaling 使用者指南》中的 Amazon EC2 Auto Scaling 群組

  • Amazon EKS 會將下列 Kubernetes 標籤新增至指定容量類型之受管節點群組中的所有節點:eks.amazonaws.com/capacityType: ON_DEMAND。您可以使用此標籤,在隨需節點上排程可設定狀態或可容錯的應用程式。

Spot

Amazon EC2 Spot 執行個體是備用的 Amazon EC2 容量,可提供隨需價格的極低折扣。EC2 需要取回容量時,就可能會以兩分鐘中斷通知的方式中斷 Amazon EC2 Spot 執行個體。如需詳細資訊,請參閱《Amazon EC2 使用者指南》中的 Spot 執行個體。您可以使用 Amazon EC2 Spot 執行個體設定受管節點群組,以最佳化 Amazon EKS 叢集中執行之運算節點的成本。

若要在受管節點群組內使用 Spot 執行個體,請將容量類型設定為spot,以建立受管節點群組。受管節點群組代表您設定 Amazon EC2 Auto Scaling 群組,並套用下列 Spot 最佳實務:

  • 為確保您的 Spot 節點已在最佳 Spot 容量集區中佈建,配置策略會設定為下列之一:

    • price-capacity-optimized (PCO) – 在具有 Kubernetes 版本1.28或更高版本的叢集中建立新的節點群組時,配置策略會設為 price-capacity-optimized。不過,在 Amazon EKS 受管節點群組開始支援 PCO capacity-optimized之前,對於已使用 建立的節點群組,配置策略不會變更。

    • capacity-optimized (CO) – 在具有 Kubernetes 版本1.27或更低版本的叢集中建立新的節點群組時,配置策略會設為 capacity-optimized

    若要增加可用於配置容量的 Spot 容量集區數量,請將受管節點群組設定為使用多個執行個體類型。

  • 已啟用 Amazon EC2 Spot 容量重新平衡功能,以便 Amazon EKS 可以正常地消耗和重新平衡 Spot 節點,在 Spot 節點中斷風險提高時,將應用程式中斷情況降至最低。如需詳細資訊,請參閱《Amazon EC2 Auto Scaling 使用者指南》中的 Amazon EC2 Auto Scaling 容量重新平衡

    • Spot 節點收到重新平衡建議時,Amazon EKS 會自動嘗試啟動新的替代 Spot 節點。

    • 如果 Spot 兩分鐘中斷通知在取代 Spot 節點處於 Ready 狀態前到達,則 Amazon EKS 會開始消耗收到重新平衡建議的 Spot 節點。Amazon EKS 將竭盡全力耗盡節點。因此,無法保證 Amazon EKS 會等待替換節點加入叢集,再耗盡現有的節點。

    • 啟動取代 Spot 節點,並且在 Kubernetes 處於 Ready 狀態時,Amazon EKS 會包圍隔離並消耗收到重新平衡建議的 Spot 節點。覆寫 Spot 節點可確保服務控制器不會傳送任何新請求至此 Spot 節點。它也會從狀況良好、作用中的 Spot 節點清單中移除。耗盡 Spot 節點可確保正常移出執行中的 Pod。

  • Amazon EKS 會將下列 Kubernetes 標籤新增至指定容量類型之受管節點群組中的所有節點:eks.amazonaws.com/capacityType: SPOT。您可以使用此標籤在 Spot 節點上排程可容錯的應用程式。

決定是否要部署具有隨需或 Spot 容量的節點群組時,應考慮下列條件:

  • Spot 執行個體適用於無狀態、容錯、靈活的應用程式。其中包括批次和機器學習訓練工作負載、大數據 ETL (例如 Apache Spark)、佇列處理應用程式,以及無狀態 API 端點。由於 Spot 是可能隨時間變更的備用 Amazon EC2 容量,因此建議您將 Spot 容量用於可接受中斷的工作負載。更具體地說,Spot 容量適合可容忍無法使用所需容量期間的工作負載。

  • 我們建議您將隨需模式用於不容錯的應用程式。這包括叢集管理工具 (例如監控和操作工具)、需要 StatefulSets 的部署,以及狀態應用程式 (例如資料庫)。

  • 為了在使用 Spot 執行個體時最大化應用程式的可用性,建議您將 Spot 受管節點群組設定為使用多個執行個體類型。建議您在使用多個執行個體類型時,套用下列規則:

    • 在受管節點群組中,如果您使用的是 Cluster Autoscaler,我們建議您使用一組具有相同 vCPU 和記憶體資源數量的彈性執行個體類型。這是為了確保叢集中的節點如預期般擴展。例如,如果您需要四個 vCPU 和八個 GiB 記憶體,請使用 c3.xlargec4.xlargec5.xlargec5d.xlargec5a.xlargec5n.xlarge 或其他類似的執行個體類型。

    • 若要增強應用程式可用性,建議部署多個 Spot 受管節點群組。為此,每個群組應該使用具有相同 vCPU 和記憶體資源的彈性執行個體類型集。例如,如果您需要 4 個 vCPU 和 8 個 GiB 記憶體,建議您使用 c3.xlargec4.xlargec5.xlargec5d.xlargec5a.xlargec5n.xlarge 或其他類似的執行個體類型建立一個受管節點群組,以及使用 m3.xlargem4.xlargem5.xlargem5d.xlargem5a.xlargem5n.xlarge 或其他類似的執行個體類型建立另一個受管節點。

    • 使用自訂啟動範本的 Spot 容量類型部署節點群組時,請使用 API 傳遞多個執行個體類型。請勿透過啟動範本傳遞單一執行個體類型。如需使用啟動範本部署節點群組的詳細資訊,請參閱 使用啟動範本自訂受管節點