協助改進此頁面
若要為本使用者指南貢獻內容,請點選每個頁面右側面板中的在 GitHub 上編輯此頁面連結。
使用 kubectl 從 Karpenter 移轉至 EKS 自動模式
本主題將逐步引導您使用 kubectl 將工作負載從 Karpenter 移轉至 Amazon EKS 自動模式。移轉可以逐步進行,讓您能夠按照自己的步調移動工作負載,同時在整個轉換期間保持叢集穩定性和應用程式可用性。
下面概述的逐步方法使您能夠在移轉期間同時執行 Karpenter 和 EKS 自動模式。這種雙重操作策略有助於確保平穩轉換,讓您可以在完全停用 Karpenter 之前,驗證工作負載在 EKS 自動模式上的行為。您可以單獨或分組移轉應用程式,提供靈活性以適應您的特定運營要求與風險承受能力。
先決條件
開始移轉之前,請確保您已具備下列項目:
-
在叢集上安裝了 Karpenter v1.1 或以上版本。如需詳細資訊,請參閱 Karpenter 文件中的升級至版本 1.1.0 及以上
。 -
已安裝並將
kubectl連接到您的叢集。如需詳細資訊,請參閱 設定以使用 Amazon EKS。
本主題假設您熟悉 Karpenter 及 NodePools。如需詳細資訊,請參閱 Karpenter
步驟 1:在叢集上啟用 EKS 自動模式
使用 AWS CLI 或管理主控台在您現有的叢集上啟用 EKS 自動模式。如需詳細資訊,請參閱 在現有叢集上啟用 EKS 自動模式。
注意
啟用 EKS 自動模式時,切勿在轉換期間的此階段啟用 general purpose nodepool。此節點集區不具選擇性。
如需詳細資訊,請參閱 啟用或停用內建的 NodePool。
步驟 2:建立帶有污點的 EKS 自動模式 NodePool
為 EKS 自動模式建立帶有污點的新 NodePool。這確保了現有的 Pod 不會自動排程到新的 EKS 自動模式節點上。此節點集區使用 EKS 自動模式內建的 default NodeClass。如需詳細資訊,請參閱 建立 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 自動模式的工作負載。向這些工作負載新增容差和節點選取器:
apiVersion: apps/v1 kind: Deployment spec: template: spec: tolerations: - key: "eks-auto-mode" effect: "NoSchedule" nodeSelector: eks.amazonaws.com/compute-type: auto
此變更可讓工作負載排程至新的 EKS 自動模式節點。
EKS 自動模式使用與 Karpenter 不同的標籤。與 EC2 受管執行個體相關的標籤以 eks.amazonaws.com 開頭。如需詳細資訊,請參閱 為 EKS 自動模式建立節點集區。
步驟 4:逐步移轉工作負載
針對要移轉的每個工作負載重複步驟 3。這使您可根據需求和風險承受能力,單獨或分組移動工作負載。
步驟 5:移除原始 Karpenter NodePool
所有工作負載移轉完成後,即可移除原始的 Karpenter NodePool:
kubectl delete nodepool <original-nodepool-name>
步驟 6:從 EKS 自動模式 NodePool 移除污點 (選用)
如果您希望 EKS 自動模式成為新工作負載的預設值,可以從 EKS 自動模式 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 自動模式 NodePool 移除污點,可以選擇從工作負載移除節點選取器,因為 EKS 自動模式現在是預設值:
apiVersion: apps/v1 kind: Deployment spec: template: spec: # Remove the nodeSelector section tolerations: - key: "eks-auto-mode" effect: "NoSchedule"
步驟 8:從叢集解除安裝 Karpenter
移除 Karpenter 的步驟取決於您的安裝方式。如需詳細資訊,請參閱 Karpenter 安裝說明