協助改善此頁面
本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
若要提供此使用者指南,請選擇位於每個頁面右窗格的 GitHub 上的編輯此頁面連結。
本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
本主題將逐步引導您使用 kubectl 將工作負載從 Karpenter 遷移至 Amazon EKS Auto Mode。您可以逐步執行遷移,讓您以自己的步調移動工作負載,同時在整個轉換過程中保持叢集穩定性和應用程式可用性。
下面概述step-by-step方法可讓您在遷移期間並排執行 Karpenter 和 EKS Auto Mode。此雙操作策略可讓您在完全停用 Karpenter 之前驗證 EKS Auto Mode 上的工作負載行為,以確保順利轉換。您可以個別或群組遷移應用程式,提供彈性以適應您的特定操作需求和風險承受能力。
先決條件
開始遷移之前,請確定您已:
-
叢集上安裝 Karpenter v1.1 或更新版本。如需詳細資訊,請參閱 Karpenter 文件中的升級至 1.1.0+
。 -
kubectl
安裝並連接到您的叢集。如需詳細資訊,請參閱設定 以使用 Amazon EKS。
本主題假設您熟悉 Karpenter 和 NodePools。如需詳細資訊,請參閱 Karpenter 文件。
步驟 1:在叢集上啟用 EKS Auto Mode
使用 CLI 或 管理主控台在現有叢集上啟用 AWS EKS Auto Mode。如需詳細資訊,請參閱在現有叢集上啟用 EKS Auto Mode。
注意
啟用 EKS Auto Mode 時,請勿在轉換期間在此階段啟用general purpose
節點集區。此節點集區不是選擇性的。
如需詳細資訊,請參閱啟用或停用內建 NodePools。
步驟 2:建立污點 EKS 自動模式 NodePool
使用污點為 EKS Auto Mode 建立新的 NodePool。這可確保現有的 Pod 不會在新的 EKS Auto Mode 節點上自動排程。此節點集區使用default
NodeClass
內建於 EKS Auto 模式的 。如需詳細資訊,請參閱建立 Amazon EKS 的節點類別。
具有污點的範例節點集區:
apiVersion: karpenter.sh/v1
kind: NodePool
metadata:
name: eks-auto-mode
spec:
template:
spec:
requirements:
- key: "eks.amazonaws.com/instance-category"
operator: In
values: ["c", "m", "r"]
nodeClassRef:
group: eks.amazonaws.com
kind: NodeClass
name: default
taints:
- key: "eks-auto-mode"
effect: "NoSchedule"
更新節點集區的需求,以符合您要從中遷移的 Karpenter 組態。您需要至少一個需求。
步驟 3:更新工作負載以進行遷移
識別並更新要遷移至 EKS Auto Mode 的工作負載。將公差和節點選取器新增至這些工作負載:
apiVersion: apps/v1
kind: Deployment
spec:
template:
spec:
tolerations:
- key: "eks-auto-mode"
effect: "NoSchedule"
nodeSelector:
eks.amazonaws.com/compute-type: auto
此變更可讓工作負載排程在新的 EKS Auto Mode 節點上。
EKS Auto Mode 使用與 Karpenter 不同的標籤。與 EC2 受管執行個體相關的標籤以 開頭eks.amazonaws.com
。如需詳細資訊,請參閱為 EKS Auto 模式建立節點集區。
步驟 4:逐漸遷移工作負載
針對您要遷移的每個工作負載重複步驟 3。這可讓您根據您的需求和風險承受能力,個別或群組移動工作負載。
步驟 5:移除原始 Karpenter NodePool
遷移所有工作負載後,您可以移除原始 Karpenter NodePool:
kubectl delete nodepool <original-nodepool-name>
步驟 6:從 EKS Auto Mode NodePool 移除污點 (選用)
如果您希望 EKS Auto Mode 成為新工作負載的預設值,您可以從 EKS Auto Mode NodePool 中移除污點:
apiVersion: karpenter.sh/v1
kind: NodePool
metadata:
name: eks-auto-mode
spec:
template:
spec:
nodeClassRef:
group: eks.amazonaws.com
kind: NodeClass
name: default
# Remove the taints section
步驟 7:從工作負載移除節點選取器 (選用)
如果您已從 EKS Auto Mode NodePool 移除污點,您可以選擇從工作負載中移除節點選擇器,因為 EKS Auto Mode 現在是預設值:
apiVersion: apps/v1
kind: Deployment
spec:
template:
spec:
# Remove the nodeSelector section
tolerations:
- key: "eks-auto-mode"
effect: "NoSchedule"
步驟 8:從您的叢集解除安裝 Karpenter
移除 Karpenter 的步驟取決於您的安裝方式。如需詳細資訊,請參閱 Karpenter 安裝說明