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

能否将运行中K8s集群的指定资源迁移至另一运行中K8s集群?

可以实现这类K8s资源迁移

方法1:用kubectl原生命令导出+导入

这是最直接的轻量方案,适合小规模集群或特定命名空间的迁移:

  1. 导出目标资源
    切换到源集群上下文,导出指定命名空间下的目标资源(注意:Pod是Deployment/StatefulSet的副本,其实无需单独导出,Deployment会自动重建;Endpoints由Service自动生成,也不用单独导出):

    # 导出单个命名空间的指定资源
    kubectl get deployments,secrets,services,ingresses,pvc -n <目标命名空间> -o yaml > ns-resources.yaml
    # 导出所有命名空间的对应资源
    kubectl get deployments,secrets,services,ingresses,pvc --all-namespaces -o yaml > all-ns-resources.yaml
    

    如果你的kubectl版本较新,需要清理掉集群特有的元数据(避免导入冲突),可以用yq工具处理:

    kubectl get ... -o yaml | yq eval 'del(.items[]?.metadata.resourceVersion, .items[]?.metadata.uid, .items[]?.status)' - > clean-resources.yaml
    
  2. 导入到目标集群
    切换到目标集群上下文,直接应用清理后的YAML文件:

    kubectl apply -f clean-resources.yaml
    

方法2:用Velero做带状态的迁移

如果需要同步PVC里的存储数据,或者大规模集群迁移,Velero是更专业的选择:

  • 先在源、目标集群都安装Velero,配置同一个对象存储(如MinIO、S3)作为备份仓库。
  • 备份指定命名空间的依附资源:
    velero backup create ns-backup --include-namespaces <目标命名空间> --include-resources deployments,secrets,services,ingresses,pvc
    
  • 在目标集群恢复备份:
    velero restore create --from-backup ns-backup
    
    Velero会自动处理资源依赖顺序,比如先创建Secret、Service,再部署Deployment,最后恢复PVC数据。

关键注意事项

  • 存储类兼容:目标集群必须存在源集群中PVC使用的存储类,否则PVC会处于Pending状态。
  • Secret兼容性:导出的Secret是加密存储的,导入后可正常使用,但如果源集群用了自定义加密配置,需要确保目标集群加密配置一致。
  • PV处理:PV是集群级资源,不随命名空间删除,若要迁移PV数据,需用Velero或手动同步存储卷内容;如果是动态PV,目标集群创建PVC后会自动生成对应PV。

内容的提问来源于stack exchange,提问作者simple-thomas

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 01:42:07