【问题标题】:Kubernetes namespace migration to another clusterKubernetes 命名空间迁移到另一个集群
【发布时间】:2020-07-20 12:28:17
【问题描述】:

假设我们有一个名为 CLUSTER_01 的 Kubernetes 集群和 DEV 命名空间。我想在另一个名为 CLUSTER_02 的集群中重新创建这个 DEV 名称空间。什么是最简单和最好的方法。

【问题讨论】:

  • 只是好奇 - 尝试过什么?

标签: docker kubernetes google-kubernetes-engine kubernetes-pod azure-aks


【解决方案1】:

Velero (formerly Heptio Ark) 为您提供备份和恢复 Kubernetes 集群资源和持久卷的工具。您可以通过云提供商或本地运行 Velero。 Velero 让您:

  1. 备份您的集群并在丢失时恢复。
  2. 将集群资源迁移到其他集群。
  3. 将您的生产集群复制到开发和测试集群。 Velero 包括:

在您的集群上运行的服务器

本地运行的命令行客户端

【讨论】:

    【解决方案2】:

    如果您通过 Jenkins 或类似工具等工具对 Kubernetes 部署进行了标准化,那么您就有了为每个部署创建的一组标准对象,例如 configmap、secret、ingress、deployment、hpa 等。

    那么最简单的方法是将对象作为 YAML 转储到文件中,然后将它们重新应用到新的 Custer。虽然这不是一个好的做法,但却是最简单的做法。

    kubectl get configmap -n <namespace> -o yaml > CLUSTER_O1_Namespace.yaml
    

    从 configmap、secrets、外部端点等较低的对象开始,然后应用部署、入口和 hpa 等主要对象。

    确保您具有 k8s 对象所需的外部依赖项,例如 ingress 控制器首先应用并且与您的 CLUSTER_01 相同。

    正如@Arghya 建议的那样,如果您有带宽,请使用Velero (formerly Heptio Ark)

    【讨论】:

    • 感谢大家的快速回复。另一个快速的问题,如果我需要将此作为未来集群配置的模板,什么是最好的解决方案。 Terraform 会解决我的问题吗?
    • 请详细说明您的问题,集群配置是什么意思?
    • 假设将来我将拥有一个集群,其中包含 dev、qa、staging 作为运行的命名空间。我需要在每个命名空间中部署相同的抵消应用程序。而是每次在每个命名空间中一个一个地重新创建所有资源,最简单的方法是什么。
    • Terraform + velero 是您的答案。 Terraform 将配置您的集群,velero 将转储 k8s 对象。希望我的回答有帮助。
    【解决方案3】:

    虽然理论上可以从 etcd 数据存储中查询数据并将其迁移到另一个集群,但无论如何您都会遇到本地设置和变量的不一致。最简单的方法是从清单或 Helm 图表(无论您拥有什么)重新创建命名空间中的所有资源。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-08-05
      • 1970-01-01
      • 1970-01-01
      • 2023-02-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多