View a markdown version of this page

使用具有受管節點群組的暖集區,減少開機時間較長之應用程式的延遲 - Amazon EKS

協助改進此頁面

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

若要為本使用者指南貢獻內容,請點選每個頁面右側面板中的在 GitHub 上編輯此頁面連結。

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

使用具有受管節點群組的暖集區,減少開機時間較長之應用程式的延遲

當您的應用程式有很長的初始化或開機時間時,向外擴展事件可能會導致延遲 - 新的節點必須完全開機並加入叢集,才能排程 Pod。此延遲可能會影響流量尖峰或快速擴展事件期間的應用程式可用性。暖集區透過維護已完成開機程序的預先初始化 EC2 執行個體集區來解決此問題。在橫向擴展事件期間,執行個體會直接從暖集區移至叢集,略過耗時的初始化步驟,並大幅減少新容量變成可用所需的時間。如需詳細資訊,請參閱《Amazon EC2 Auto Scaling 使用者指南》中的使用暖集區縮短開機時間的應用程式延遲Amazon EC2 Auto Scaling

Amazon EKS 受管節點群組支援 Amazon EC2 Auto Scaling 暖集區。暖集區會與 Auto Scaling 群組一起維護預先初始化的 EC2 執行個體,以便在橫向擴展事件期間快速加入叢集。暖集區中的執行個體已完成開機初始化程序,並且可以保持在 StoppedRunningHibernated 狀態。

Amazon EKS 使用AWSServiceRoleForAmazonEKSNodegroup服務連結角色在整個節點群組生命週期中管理暖集區,以建立、更新和刪除暖集區資源。

運作方式

當您設定暖集區時,Amazon EKS 會建立連接到節點群組 Auto Scaling 群組的 EC2 Auto Scaling 暖集區。執行個體會在暖集區中啟動、完成開機初始化程序,並保持設定狀態 (RunningStoppedHibernated),直到需要為止。在橫向擴展事件期間,執行個體會從暖集區移至 Auto Scaling 群組,完成 Amazon EKS 初始化程序以加入叢集,並可用於 Pod 排程。啟用執行個體重複使用時,執行個體可以在縮減事件期間返回暖集區。

重要

一律使用 create-nodegroup或 透過 Amazon EKS API 設定暖集區update-nodegroup-config。請勿使用 EC2 Auto Scaling API 手動修改暖集區設定,因為這可能會導致與 資源的 Amazon EKS 管理發生衝突。

考量事項

重要

在設定暖集區之前,請參閱《Amazon EC2 Auto Scaling 使用者指南》中的 Amazon EC2 Auto Scaling 暖集區中的先決條件和限制。 Amazon EC2 Auto Scaling 並非所有執行個體類型、AMIs或組態都受到支援。

  • IAM 許可AWSServiceRoleForAmazonEKSNodegroup服務連結角色 (使用第一個受管節點群組自動建立) 包含必要的暖集區管理許可。

  • AMI 限制 – 暖集區不支援自訂 AMIs。您必須使用 Amazon EKS 最佳化 AMIs。

  • Bottlerocket 限制 – 如果使用 Bottlerocket AMIs,則不支援Hibernated集區狀態。僅限使用 StoppedRunning集區狀態。此外, Bottlerocket AMIs 不支援reuseOnScaleIn此功能。

  • 休眠支援 – 集Hibernated區狀態僅支援特定執行個體類型。如需支援的執行個體類型,請參閱《Amazon EC2 使用者指南》中的休眠先決條件

  • 成本影響 – 在不需要時建立暖集區可能會導致不必要的成本。

  • 容量規劃 – 根據擴展模式調整暖集區大小,以平衡成本和可用性。從 10-20% 的預期尖峰容量開始。

  • VPC 聯網 – 確保 Auto Scaling 群組和暖集區執行個體都有足夠的 IP 地址。

設定暖集區

您可以在建立新的受管節點群組時設定暖集區,或更新現有的受管節點群組以新增暖集區支援。

組態參數

  • enabled – (布林值) 表示您將暖集區連接至受管節點群組的意圖。啟用暖集區支援時需要。

  • maxGroupPreparedCapacity – (整數) 跨暖集區和 Auto Scaling 群組合併的執行個體總數上限。

  • minSize – (整數) 在暖集區中維護的執行個體數目下限。預設:0

  • poolState – (字串) 暖集區執行個體的狀態。預設:Stopped

  • reuseOnScaleIn – (布林值) 執行個體是否在縮減事件期間返回暖集區,而不是終止它們。預設:false。Bottlerocket AMIs不支援。

使用 AWS CLI

您可以在建立受管節點群組時設定暖集區,或將暖集區新增至現有的節點群組。

使用暖集區建立節點群組

aws eks create-nodegroup \ --cluster-name my-cluster \ --nodegroup-name my-nodegroup \ --node-role arn:aws:iam::111122223333:role/AmazonEKSNodeRole \ --subnets subnet-12345678 subnet-87654321 \ --region us-east-1 \ --scaling-config minSize=2,maxSize=10,desiredSize=3 \ --warm-pool-config enabled=true,maxGroupPreparedCapacity=8,minSize=2,poolState=Stopped,reuseOnScaleIn=true

將暖集區新增至現有的節點群組

aws eks update-nodegroup-config \ --cluster-name my-cluster \ --nodegroup-name my-nodegroup \ --region us-east-1 \ --warm-pool-config enabled=true,maxGroupPreparedCapacity=8,minSize=2,poolState=Stopped,reuseOnScaleIn=true

更新組態

隨時使用 更新暖集區設定update-nodegroup-config。現有的暖集區執行個體不會立即受到影響;新設定適用於更新後進入暖集區的執行個體。

aws eks update-nodegroup-config \ --cluster-name my-cluster \ --nodegroup-name my-nodegroup \ --region us-east-1 \ --warm-pool-config enabled=true,maxGroupPreparedCapacity=10,minSize=3,poolState=Running,reuseOnScaleIn=true

若要停用連接到節點群組的暖集區,請設定 enabled=false

aws eks update-nodegroup-config \ --cluster-name my-cluster \ --nodegroup-name my-nodegroup \ --region us-east-1 \ --warm-pool-config enabled=false

其他資源