受管節點群組 - 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 主控台、 AWS CLI; AWS API 或基礎設施做為程式碼工具eksctl,將受管節點群組新增至新的或現有 AWS CloudFormation叢集。作為受管節點群組的一部份而啟動的節點,會自動標記為由 KubernetesCluster 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 自動擴展,您應該設定多個節點群組,每個群組的範圍皆為單一可用區域。另外,您應該啟用 --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 日eksctl或之後使用或 Amazon EKS 供貨 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 Outposts或部署在 AWS Wavelength L AWS ocal Zones 中。

  • 您可以在單一叢集內建立多個受管節點群組。例如,您可以使用標準 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 中斷預算。這些動作會嘗試在該節點上移出 Pods。但如果需要超過 15 分鐘,則無論節點上的所有 Pods 是否終止,都會終止節點。若要延長期間直到節點終止,請將 lifecycle hook 新增至 Auto Scaling 群組。如需詳細資訊,請參閱 Amazon EC2 Auto Scaling 使用者指南中的新增 lifecycle hook

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

  • 更新受管理節點群組會遵守您為 Pods 設定的 Pod 中斷預算。如需詳細資訊,請參閱 受管節點更新行為

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

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

受管節點群組容量類型

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

On-Demand

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

運作方式

依預設,如果未指定 Capacity Type (容量類型),則會使用隨需執行個體佈建受管節點群組。受管節點群組會代表您設定 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 使用者指南中的競價型執行個體。您可以使用 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 節點可確保正在執行的 Pods 可以正常地移出。

  • 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 傳遞多個執行個體類型。請勿透過啟動範本傳遞單一執行個體類型。如需使用啟動範本部署節點群組的詳細資訊,請參閱 使用啟動範本自訂受管節點