繁体   English   中英

如何将实时生产 kubernetes 集群迁移到另一个集群,同时最大限度地减少停机时间?

[英]How can I migrate a live production kubernetes cluster to another cluster while minimizing downtime?

我想将应用程序从一个 GKE 集群迁移到另一个,我想知道如何在避免此过程停机的同时完成此操作。

该应用程序是 HTTP web 后端。

通常我在非 GCP/K8S 上下文中通常如何处理这个问题是在应用程序前面有一个负载均衡器,设置一个新的 web 后端,然后只需更新负载均衡器中适当的 IP 地址以从旧的 ZA1226A3079E84CBA 指向新的 IP。 这基本上将有 0 停机时间,同时还允许在出现任何问题时进行无缝回滚。

我不明白为什么这也不适用于这种情况,但我不是 100% 确定。 如果有更强大或替代的方式来做到这一点(GCP/GKE 友好方式),我想对此进行调查。

所以总结一下我的问题, GCP/GKE 是否支持这种类型的迁移功能? 如果没有,我需要注意上面提到的常用负载均衡器方法有什么影响吗?


迁移的原因是当前的 k8s 集群运行的是相当旧的版本(1.18),如果将 GKE 版本升级到更新的版本(如 1.22),我怀疑存在很多不兼容性以及风险。

我看到两种方法:

  1. 在新集群中获取新的 IP 地址并更新 DNS 记录以指向新的负载均衡器
  2. 看看您是否可以切换到多集群网关,但这可能需要您使用方法 1 来切换到多集群网关: https://cloud.google.com/kubernetes-engine/docs/how-to /部署-多集群网关

您会遇到的几个痛点:

  1. 作为曾经 DIY Kubernetes 的人,我讨厌 GKE 的托管入口证书,因为它们很难在新集群上预先提供 HTTPS 证书。 (GKE's defacto method of provisioning HTTPS certs is to update DNS to point to the LB, and then wait 10-60 minutes. That means if you cutover to a new cluster the new cluster's HTTPS cert supplied by a managedcertificate Custom Resource, won't提前准备好。)
  2. 可以在 GCP 上使用 ACME-DNS 挑战使用预配置 HTTPS 证书,但它的文档记录很差,用户体验糟糕透顶,没有 GUI,而且 CLI API 很糟糕。 您可以使用gcloud services enable certificatemanager.googleapis.com来做到这一点,但我强烈建议不要使用 2022 年 6 月 GA 推出的证书管理器服务。用户体验很痛苦。
  3. 当涉及到这种情况时,GKE 的官方文档非常糟糕

你基本上想做两件事:

  1. 按照这个如何指导零停机时间 HTTPS 通过利用 Lets Encrypt 免费证书从 cluster1 切换到 cluster2
    https://gist.github.com/neoakris/4aafeac7628995da8dd423f1702c975b
    (我知道只有链接的答案不好,但它是 github (正常运行时间长),而且这里发布的时间太长而且微妙。)
  2. 使用 Velero 将工作负载从集群 1 迁移到集群 2(它可以迁移 CRD、CR、通用 yaml 对象和 PV/PVC。值得注意的是,当您迁移到和从相同版本的集群迁移时 Velero 效果最佳,如果您 go 从一个非常旧的版本到一个非常新的版本,您可能会遇到 kubernetes yaml API 在新版本中被删除的问题。迁移到和从相同版本的集群的路径结果是最好的。)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM