你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
将 Azure Kubernetes 服务 (AKS) 群集迁移到另一个区域
本文提供了将 Azure Kubernetes 服务群集迁移到另一个区域的指导。
出于多种原因,你可能希望将现有 Azure 资源从一个区域移到另一个区域。 你可以采取以下建议:
- 利用新的 Azure 区域。
- 部署仅在特定区域可用的功能和服务。
- 满足内部策略和治理要求。
- 与公司合并和收购保持一致
- 满足容量计划要求。
注意
具有快速发布周期的客户通常利用 CI/CD 管道。 在这些情况下,可以考虑更改生成和发布管道,而不是在目标区域中重新部署 AKS 群集。
先决条件
在开始重新定位的规划阶段之前,请先查看以下先决条件:
请确保目标区域有足够的容量 (VM SKU),以容纳新的群集节点。
验证你是否对目标订阅具有资源创建权限。 确认 Azure 策略没有限制可以部署 AKS 的区域。
(可选)收集你用于预配源 AKS 群集的基础结构即代码 (IaC) 模板或脚本。
收集 Kubernetes 清单,以便在目标群集中重新创建应用程序工作负载。
提示
评估一种用于部署工作负载的 GitOps 方法,其中 Kubernetes 配置清单存储在一个 git 存储库中,并由在群集内运行的 GitOps 操作程序(例如 Flux)自动应用。 GitOps 方法使得将工作负载重新部署到不同的群集非常简单,只需安装 GitOps 控制器并将其指向存储库即可。
检查群集入口实现。
记录将公共域指向群集入口终结点所需的 DNS 更改。
检查群集是否存储了迁移到目标群集所需的任何状态数据,例如任何永久性卷。
记录公共 TLS 证书管理和分发。
捕获 AKS API 服务允许列表中定义的任何 IP 地址。
了解所有依赖资源。 其中一些资源可以是:
- 队列、消息总线、缓存引擎
- Azure Key Vault
- 托管标识
- 虚拟网络配置。 定义足够的子网大小,以便在使用 Azure 高级网络模型时允许容器 IP 增长
- 公共 IP 地址
- 虚拟网络网关 (VNG)。 如果需要与目标区域中的本地环境进行站点对站点通信,则必须在目标虚拟网络中创建 VNG。
- Azure 专用终结点。 必须检查利用专用链接终结点的 Azure PaaS 资源,并在目标区域中创建新的专用链接实例,例如 ACR、Azure SQL DB、KeyVault,等等。
- Azure 应用程序网关
- Azure DNS
- Azure 防火墙
- Azure Monitor(容器见解)
- Azure 容器注册表可以在 ACR 实例之间复制映像。 为了在拉取映像时实现最佳性能,注册表应存在于目标区域中。
注意
如果使用 Azure 容器注册表向容器注册表进行身份验证,则可以向新 AKS 群集的托管标识授予
AcrPull
RBAC 角色。 - Azure 托管磁盘
- Azure 文件
准备
在开始群集迁移过程之前,请确保完成以下准备:
若要容纳 AKS 群集节点和 Pod,如果使用的是 Azure CNI 网络,请部署具有大小足够的许多子网的虚拟网络。
如果使用的是 Azure Key Vault,请部署 Key Vault。
确保相关的 TLS 入口证书可用于部署,理想情况下,位于安全的存储(例如 Azure Key Vault)中。
部署一个容器注册表。 自动同步源注册表映像,或使用 CI/CD 管道或脚本重建新映像并将其推送到目标注册表。
(可选)部署 Azure 应用程序网关以处理入口流量。应用程序网关入口控制器 (AGIC) 可以与群集紧密集成
部署群集工作负载所需的任何数据源,并还原或同步源数据。
执行 CI/CD 管道中定义的现有 IaC 生成工件,这些生成工件用于部署源群集及其所依赖的服务。 更改代码或模板输入参数以重新部署到其他资源组和 Azure 区域。
重新部署
按照以下步骤部署 AKS 群集,且不进行任何数据迁移:
若要在 Azure 中创建目标环境,请在本地工作站上手动运行现有的 IaC 生成工件。
如果没有现有的 IaC 资产,则可以将当前群集配置导出为 ARM 模板并针对目标区域执行。 IaC 模板是从头开始创建的,或者是使用 Bicep、JSON、Terraform 或其他解决方案的示例模板的修改版本。
注意
- 专用链接连接、ACR 连接的注册表和 Azure Monitor 工作区数据源当前不使用此方法导出,因此在执行之前必须将其从生成的模板中移除。
将容器工作负载部署到 AKS 群集,这可通过两种方式实现:
- 拉取 清单被从存储库中提取,并由在群集内运行的控制器应用,这称为 GitOps 方法。
- 推送。 清单被使用 Kubernetes API 服务和 kubectl 命令行工具从 CI/CD 管道或本地工作站推送到群集。
若要确保新群集按预期执行,请执行测试和验证。
将你的公共 DNS 条目更改为指向目标群集(Azure 公共负载均衡器 IP 或应用程序网关公共 IP)的外部入口 IP。
使用全局负载均衡解决方案(例如 Azure DNS 或 Azure 流量管理器)的部署需要将区域添加到配置中。
通过数据迁移重新部署
使用本地存储(例如永久性卷)在群集内存储数据或托管数据库服务的 AKS 工作负载可以备份到源群集上并还原到目标群集。 若要了解如何执行备份和还原,请参阅使用 Azure CLI 备份 Azure Kubernetes 服务。