You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

能否将AKS节点池托管在与控制平面不同的Azure订阅中?

解决方案:将AKS工作负载迁移至新订阅的节点池

由于AKS不支持直接迁移现有集群或节点池到其他订阅,可通过以下步骤实现工作负载的平滑迁移,同时利用目标订阅的额度:

1. 在目标订阅中创建新的AKS集群

使用Azure CLI在带有额外额度的订阅中部署新AKS集群,确保集群版本、网络配置(如VNet、子网)与原集群保持一致,避免兼容性问题:

az aks create --name new-aks-cluster --resource-group target-rg --subscription target-sub-id --kubernetes-version <原集群版本> --vnet-subnet-id <子网ID>

2. 迁移集群配置与资源

  • 导入kubeconfig:获取新集群的kubeconfig并切换上下文:
    az aks get-credentials --name new-aks-cluster --resource-group target-rg --subscription target-sub-id --overwrite-existing
    
  • 迁移配置资源:将原集群中的ConfigMap、Secret、ServiceAccount、ClusterRoleBinding等配置资源导出后导入新集群:
    # 导出原集群配置
    kubectl --context old-aks get configmaps,secrets,serviceaccounts,clusterrolebindings -o yaml > cluster-config.yaml
    # 导入到新集群
    kubectl --context new-aks apply -f cluster-config.yaml
    

3. 迁移工作负载

采用滚动迁移方式逐步将应用从原节点池转移到新集群:

  • 部署应用到新集群:将原集群的Deployment、StatefulSet、Service等资源导出并部署到新集群,确保镜像拉取权限正常:
    kubectl --context old-aks get deployments,statefulsets,services -o yaml > workloads.yaml
    kubectl --context new-aks apply -f workloads.yaml
    
  • 流量切换:若使用负载均衡器或Ingress,更新DNS记录或流量路由,将用户流量逐步切换到新集群的端点,验证服务正常后停止原集群的工作负载。

4. 处理有状态应用(如数据库)

对于StatefulSet类型的有状态应用,需额外处理数据迁移:

  • 先停止原应用的写入操作,创建PersistentVolume的快照。
  • 在新集群中基于快照创建新的PersistentVolumeClaim,重新部署StatefulSet并挂载新存储。
  • 验证数据一致性后,切换流量并删除原集群的相关资源。

5. 清理原资源

确认新集群所有工作负载正常运行后,删除原AKS集群或节点池,避免不必要的成本支出:

az aks delete --name old-aks-cluster --resource-group old-rg --subscription old-sub-id --yes

内容的提问来源于stack exchange,提问作者Matthias Güntert

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 07:30:50