你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
本文介绍将典型的无状态工作负荷和有状态工作负荷从 Amazon Elastic Kubernetes 服务(EKS)迁移到 Azure Kubernetes 服务(AKS)的策略。
注意事项
实际生产工作负荷的部署过程因以下因素而异:
部署策略: GitOps 方法与传统的 DevOps 持续集成和持续部署(CI/CD)方法会影响部署方法。 GitOps 优先考虑通过版本控制的存储库管理的声明性基础结构。 DevOps CI/CD 侧重于用于应用程序交付的自动化工作流。
部署项目: 部署项目有助于定义部署结构。 YAML 文件、清单文件、Helm 图表和 Kustomize 配置提供了各种方法来指定和自定义部署设置。 每个方法都有独特的优势,有利于特定的用例。
工作负荷身份验证和授权: 根据设置,身份验证和授权方法有所不同。 可以使用 Amazon Web Services (AWS) 标识和访问管理 (IAM) 角色、工作负荷标识机制或连接字符串进行访问控制。
监测: 实现监视解决方案时,可以使用各种工具和方法来帮助确保已部署工作负载的性能和运行状况。 有关 AKS 和 EKS 监视比较的详细信息,请参阅 Kubernetes 监视和日志记录。
在迁移之前,请查看并考虑以下常规指南和最佳做法资源:
查看 群集运营商和开发人员最佳实践。
定义 监视和警报策略 ,以帮助确保应用程序按预期执行。
定义应用程序和 AKS 环境的 安全性和 符合性要求。
定义 访问控制策略 以及如何强制执行它们。 确定工作负荷必须遵循的任何符合性标准。
定义 AKS 环境和应用程序的 灾难恢复和业务连续性计划 。
定义 备份 和还原策略和过程。 确定恢复时间目标(RTO)和恢复点目标(RPO)。
确定在部署过程中可能会遇到的任何风险或挑战。
测试功能,以确保应用程序在将实时流量重定向到新的 AKS 群集之前按预期工作。
工作负荷迁移注意事项
在将工作负载从 Amazon EKS 迁移到 AKS 之前,请考虑以下几个方面。
了解现有的 Amazon EKS 环境
分析现有的 EKS 环境,了解当前的体系结构、资源和配置。
查看 EKS 配置: 评估 EKS 群集配置,例如节点类型、节点数、Kubernetes 版本和支持策略以及缩放配置。
注释
EKS 允许为 EKS 节点创建自定义 AMI 映像 。 AKS 不允许使用自定义节点映像。 如果您的部署需要节点自定义,则可以应用 kubelet 自定义配置 和 DaemonSets 来自定义您的节点。
查看应用程序工作负载: 确定在 EKS 群集上运行的所有 Kubernetes 工作负荷,包括部署、服务、有状态集、入口配置和永久性卷声明(PVC)。 创建应用程序及其关联资源的完整列表。
检查依赖项: 确定特定于 EKS 的 AWS 服务的任何依赖项。
AWS 服务 依赖 AWS 机密管理器 Azure Key Vault Amazon GuardDuty Agent 适用于容器的 Microsoft Defender EKS Pod Identity Agent Microsoft Entra 工作负载 ID Amazon Elastic File System (EFS) 或弹性块存储 (EBS) 容器存储接口 (CSI) 驱动程序 AKS CSI 驱动程序 备份 EKS 群集: 可以使用非Microsoft工具(如 Velero )来备份和迁移 Kubernetes 资源和永久性卷(PV)。
准备 Azure AKS 环境
Amazon 虚拟私有云(VR)容器网络接口(CNI)是 EKS 支持的默认网络插件。 AKS 群集支持以下网络插件和方法,用于在虚拟网络中部署群集:
- Kubenet 网络 (AKS 中的默认值)
- Azure CNI 网络
- Azure CNI 覆盖
- 用于动态分配的 Azure CNI 网络
- Azure CNI 与 Cilium 集成
- 非 Microsoft CNI
按照以下步骤准备 AKS 群集:
在 Azure 中创建新的 AKS 群集。 配置所需的网络设置,以满足你的要求。
查看在 EKS 中使用的 Kubernetes 清单和 YAML 文件。 检查任何潜在的 Kubernetes API 版本不兼容或 AKS 不支持的特定 EKS 配置。
确保可从 AKS 群集访问 Docker 映像和容器映像注册表位置。 验证网络连接以及访问映像所需的身份验证和授权设置。
按照以下步骤顺利创建 AKS 群集,以帮助确保 Kubernetes 配置文件和 Docker 镜像的兼容性。 适当的兼容性有助于确保从 EKS 到 AKS 的顺利迁移过程。
迁移概述
从 Amazon EKS 迁移到 AKS 的过程涉及以下步骤:
容器映像迁移: 使用 kubectl、Docker 或容器注册表等工具导出和导入映像。
- 从 EKS 导出图像。
- 设置 Azure 容器注册表,并根据需要将其附加到 AKS。
- 将映像推送 到容器注册表。
还可以直接从非 Azure 公共或专用存储库将容器映像导入容器注册表。 有关详细信息,请参阅 导入容器映像。
Kubernetes 清单迁移: AKS 使用 Kubernetes YAML 文件清单来定义 Kubernetes 对象。 通常使用
kubectl create
或kubectl apply
来创建和管理部署。 若要创建部署,请以 YAML 格式定义清单文件。 有关详细信息,请参阅 AKS 示例清单。数据迁移: 仔细规划有状态应用程序的迁移,以避免数据丢失或意外停机。
无状态工作负载迁移注意事项
迁移 Kubernetes 清单时,必须调整配置才能在 Azure 环境中工作。
更新清单::更新 Kubernetes 清单,以使用容器注册表中的新图像位置。 将 YAML 文件中的映像引用替换为容器注册表路径。
查看现有的 Kubernetes 清单文件,了解 AWS 特定的配置,如 VPC 和 IAM 角色。
查看与节点、服务帐户和其他资源关联的 EKS IAM 角色。 将角色与同等的 Azure AKS 基于角色的访问控制 (RBAC) 角色进行映射。 有关详细信息,请参阅 Kubernetes 工作负荷标识和访问权限。
修改清单文件,将特定于 AWS 的设置替换为特定于 Azure 的设置,例如批注。
将清单应用于 AKS:
使用
kubectl apply -f
应用修改后的 Kubernetes 清单文件。
有状态工作负载迁移注意事项
如果应用程序使用 PV 或 PVC 进行数据存储,请确保备份其数据。 使用 Velero 等工具执行群集备份,包括 PV 和 PVC 数据。 有关详细信息,请参阅 使用 Velero 备份和还原 Amazon EKS 群集资源。
有状态应用程序通常具有持久性数据存储要求,这会增加迁移过程的复杂性。 有关 Amazon EKS 和 AKS 的存储功能的比较,请参阅 Kubernetes 群集的存储选项。
按照以下步骤备份持久性数据:
执行 EKS 群集的备份。
使用 AzCopy 命令将 Velero 备份从 S3 存储桶复制到 Azure Blob 存储。
如果 AKS 和 EKS 对 PVC 使用不同的
storageClassNames
,请创建一个configMap
,以便将源storageClassNames
转换为 AKS 兼容的类名。 如果在 EKS 和 AKS Kubernetes 群集上使用相同的存储解决方案,请跳过此步骤。使用 Velero 还原命令将备份还原到 AKS。
对还原的对象应用必要的更改,例如对 Amazon Elastic Container Registry 中的容器映像的引用或对机密的访问。
供稿人
Microsoft维护本文。 以下参与者撰写了本文。
主要作者:
- Dixit Arora | 高级客户工程师,ISV DN CoE
- Ketan Chawda |ISV DN CoE 高级客户工程师
其他参与者:
- Paolo Salvatori | ISV & DN CoE 首席客户工程师
- Anthony Nevico | 首席云解决方案架构师
- 弗朗西斯·西米·纳扎雷斯 |高级技术专家
要查看非公开的 LinkedIn 个人资料,请登录到 LinkedIn。