使用 kubectl 從 Karpenter 移轉至 EKS 自動模式 - Amazon EKS

協助改進此頁面

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

使用 kubectl 從 Karpenter 移轉至 EKS 自動模式

本主題將逐步引導您使用 kubectl 將工作負載從 Karpenter 移轉至 Amazon EKS 自動模式。移轉可以逐步進行,讓您能夠按照自己的步調移動工作負載,同時在整個轉換期間保持叢集穩定性和應用程式可用性。

下面概述的逐步方法使您能夠在移轉期間同時執行 Karpenter 和 EKS 自動模式。這種雙重操作策略有助於確保平穩轉換,讓您可以在完全停用 Karpenter 之前,驗證工作負載在 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 安裝說明