共用方式為


從 Amazon EKS 遷移至 Azure Kubernetes Service (AKS)

本文提供將一般無狀態和具狀態工作負載從 Amazon EKS 遷移至 Azure Kubernetes Service (AKS) 的策略。

考量

實際生產工作負載的實際部署程式可能會因下列因素而有所不同:

  • 部署策略: GitOps 與傳統 DevOps 持續整合/持續部署 (CI/CD) 方法之間的選擇,會大幅影響部署方法。 GitOps 會優先使用透過版本控制的存放庫所管理的宣告式基礎結構,而 DevOps CI/CD 則著重於應用程式傳遞的自動化工作流程。

  • 部署成品:選取部署成品在定義部署結構方面扮演重要角色。 YAML 檔案、指令清單檔、Helm 圖表和 Kustomize 組態代表各種方法來指定和自定義部署設定,每個方法都有其強度和使用案例。

  • 工作負載驗證和授權:視設定而定,驗證和授權方法可能會有所不同。 您可以使用 Amazon Web Services (AWS) 身分識別和存取管理 (IAM) 角色、工作負載身分識別機制或 連接字串 來進行存取控制。

  • 監視: 實作監視解決方案是一個重要層面,可涉及各種工具和方法,以確保已部署工作負載的效能和健康情況。 如需 AKS 監視與 EKS 比較方式的詳細資訊,請參閱 Kubernetes 監視和記錄

開始移轉之前,請先檢閱並考慮下列一般指引和最佳做法資源:

工作負載移轉考慮

本節會檢閱將工作負載從 Amazon EKS 移轉至 AKS 之前,應考慮的一些事項。

了解您現有的 Amazon EKS 環境

分析現有的 EKS 環境,以瞭解目前的架構、資源和組態。

  • 檢閱 EKS 設定:評估 EKS 叢集設定,例如節點類型、節點數目、Kubernetes 版本和支持原則,以及調整設定。

    注意

    EKS 允許建立 EKS 節點的自定義 AMI 映像 。 AKS 不允許使用自訂節點映像。 如果您的部署需要節點自定義,您可以套用 kubelet 自定義 和/或 DaemonSets 來自定義您的節點。

  • 檢閱應用程式工作負載:識別在 EKS 叢集上執行的所有 Kubernetes 工作負載,包括部署、服務、具狀態集、輸入組態和永續性磁碟區宣告。 請確定您有應用程式及其相關聯資源的完整清單。

  • 檢查相依性:識別 EKS 專屬 AWS 服務的任何相依性

    AWS 服務 Dependency
    AWS 秘密管理員 Azure Key Vault
    AWS Guard 值班代理程式 適用於容器的 Microsoft Defender (部分機器翻譯)
    EKS Pod 身分識別代理程式 Microsoft項目標識碼工作負載身分識別
    Amazon Elastic File System (EFS) 或彈性區塊存放區 (EBS) 容器記憶體介面 (CSI) 驅動程式 AKS CSI 驅動程式
  • 備份 EKS 叢集:您可以使用 Velero 之類的非Microsoft工具來備份和遷移 Kubernetes 資源和永續性磁碟區。

準備 Azure AKS 環境

Amazon 虛擬私人雲端 (VP) 容器網路介面 (CNI) 是 EKS 支援的預設網路外掛程式。 AKS 叢集支援多個網路外掛程式和方法,以在虛擬網路中部署叢集,包括:

若要準備 AKS 叢集,請遵循下列步驟:

  1. 在 Azure 中建立新的 AKS 叢集,設定所需的網路設定以符合您的需求。
  2. 檢閱 EKS 中使用的 Kubernetes 指令清單和 YAML 檔案。 檢查 AKS 不支援的任何潛在 Kubernetes API 版本不相容或特定 EKS 設定。
  3. 請確定您的 Docker 映像和容器映像登錄位置可從 AKS 叢集存取。 驗證網路連線能力,以及存取映像所需的驗證和授權設定。

遵循這些步驟,您可以成功建立 AKS 叢集,並確保 Kubernetes 指令清單和 Docker 映射的相容性,確保從 EKS 順利移轉至 AKS。

移轉概觀

從 Amazon EKS 移轉至 AKS 牽涉到數個步驟,例如:

  • 容器映射移轉:從 EKS 移轉至 AKS 時,移轉容器映像是關鍵步驟。 您可以使用 kubectl、Docker 或容器登錄等工具來匯出和匯入映像。

    1. 從 EKS 導出影像。
    2. 設定 Azure Container Registry ,如果您尚未將它附加至 AKS。
    3. 將映像 推送至 Container Registry。

    容器映像也可以直接從非 Azure 公用或私人存放庫匯入 Container Registry。 如需詳細資訊,請參閱 匯入容器映像

  • Kubernetes 指令清單移轉:AKS 會使用 Kubernetes YAML 檔案指令清單來定義 Kubernetes 物件。 部署通常會使用 kubectl create 或 kubectl apply 來建立和管理。 藉由以 YAML 格式定義資訊清單檔來建立部署。 如需詳細資訊,請參閱此 範例 AKS 指令清單。 您可以檢閱 部署和 YAML 指令清單,深入瞭解 YAML 檔案在 Kubernetes 上的運作方式。

  • 數據遷移:仔細規劃移轉具狀態應用程式,以避免數據遺失或非預期的停機時間。 如需詳細資訊,請參閱具狀態工作負載移轉考慮一節

無狀態工作負載移轉考慮

移轉 Kubernetes 指令清單牽涉到調整組態以在 Azure 環境中運作,包括下列步驟:

  1. 更新指令清單:更新 Kubernetes 指令清單,以使用 Container Registry 中的新映射位置。 將 YAML 檔案中的映像參考取代為 Container Registry 路徑。

    1. 檢閱您現有的 Kubernetes 指令清單檔案,以取得 AWS 特定組態,例如VP和 IAM 角色。
    2. 檢閱與節點、服務帳戶和其他資源相關聯的 EKS IAM 角色。 使用對等的 Azure AKS 角色型存取控制 (RBAC) 角色對應。 如需詳細資訊,請參閱 Kubernetes 工作負載身分識別和存取
    3. 修改指令清單檔案,以 Azure 特定設定取代 AWS 特定設定,例如批注。
  2. 將指令清單套用至 AKS

    1. 線上到 AKS 叢集
    2. 使用套用 kubectl apply -f修改過的 Kubernetes 指令清單檔案。

具狀態工作負載移轉考慮

如果您的應用程式使用 永續性磁碟區 (PV)永續性磁碟區宣告 (PVC) 來儲存數據,請確定您備份此數據。 您可以使用 Velero 之類的工具來執行叢集備份,包括適用於 PV 和 PVC 數據。 如需詳細資訊,請參閱 使用 Velero 備份和還原 Amazon EKS 叢集資源。

具狀態應用程式通常具有持續性的數據記憶體需求,這會增加移轉程式的複雜性。 如需 Amazon EKS 和 AKS 記憶體功能的比較,請參閱 Kubernetes 叢集的記憶體選項。

請遵循下列步驟來備份永續性數據:

  1. 在 AKS 和 EKS 叢集中設定 Velero
  2. 執行 EKS 叢集的備份。
  3. 使用 az copy 命令,將 Velero 備份從 S3 貯體複製到 Azure Blob 記憶體。
  4. 因為 AKS 和 EKS 可能會針對永續性磁碟區宣告使用不同的 storageClassNames ,因此請建立 configMap ,將來源 storageClassNames 轉譯為 AKS 相容的類別名稱。 如果您在 EKS 和 AKS Kubernetes 叢集上使用相同的記憶體解決方案,則可以忽略此步驟。
  5. 將備份還原至 AKS(使用 Velero restore 命令)。
  6. 對還原的物件套用必要的變更,例如 Amazon Elastic Container Registry (ECR) 中容器映像的參考,或存取秘密。

參與者

本文由 Microsoft 維護。 原始投稿人如下。

主要作者:

  • Dixit Arora |資深客戶工程師ISV DN CoE
  • Ketan Chawda |資深客戶工程師ISV DN CoE

其他投稿人:

若要查看非公開的 LinkedIn 設定檔,請登入 LinkedIn。

下一步