我想要将应用程序从一个GKE集群迁移到另一个GKE集群,我想知道如何在实现这一目标的同时避免此过程的停机。
该应用程序是一个HTTP Web后端。
通常,我在非GCP/K8S环境中处理这一问题的方法是在应用程序前面设置一个负载均衡器,设置一个新的Web后端,然后只需更新负载均衡器中的适当IP地址,使其从旧IP指向新IP。这基本上是零停机时间,同时还允许在出现任何错误时进行无关紧要的回滚。
我不明白为什么这不适用于这种情况,但是我不是百分之百确定。如果有更健壮的或替代的方法(GCP/GKE友好的方法),我想调查一下。
**总结我的问题,**GCP/GKE是否支持这种类型的迁移功能?如果不是,我需要注意上面提到的常见负载均衡器方法有什么影响吗?
迁移的原因是当前的K8S集群运行的是相当旧的版本(1.18),如果将GKE版本升级到更新的版本(如1.22),我怀疑也会有很多不兼容的风险。
2条答案
按热度按时间2lpgd9681#
我认为有两种方法:
1.在新群集中获取新的IP地址,并更新DNS记录以指向新的负载均衡器
1.看看您是否可以切换到多群集网关,但这可能需要您使用方法1来切换到多群集网关:https://cloud.google.com/kubernetes-engine/docs/how-to/deploying-multi-cluster-gateways
d7v8vwbk2#
你会遇到的几个痛点:
1.作为习惯DIY Kubernetes的人,我讨厌GKE的托管入口证书,因为它们使得在新集群上预先配置HTTPS证书变得非常困难。(GKE提供HTTPS证书的实际方法是更新DNS以指向LB,然后等待10-60分钟。这意味着,如果您切换到新群集,则由托管证书自定义资源提供的新群集的HTTPS证书将不会提前准备好。)
1.可以在GCP上使用预先配置的HTTPS证书,使用ACME-DNS Challenges,但它的文档很少,而且用户体验糟糕透顶,没有图形用户界面,CLI API也很糟糕。您可以使用
gcloud services enable certificatemanager.googleapis.com
来做到这一点,但我强烈建议不要使用2022年6月正式上市的证书管理器服务。用户体验是痛苦的。1.在这种情况下,GKE的官方文档相当糟糕
你基本上想做两件事:
1.遵循以下指南:如何利用Lets Encrypt Free Cert实现从群集1到群集2的零宕机HTTPS切换
https://gist.github.com/neoakris/4aafeac7628995da8dd423f1702c975b
(我知道只有链接的答案很糟糕,但这是GitHub(很棒的正常运行时间),而且它太长了,而且有细微差别,不能在这里发布。)
1.使用Velero将工作负载从群集1迁移到群集2(它迁移可以执行CRD、CRS、通用YAML对象和PV/PVC。值得注意的是,Velero在同一版本的集群中迁移时效果最好,如果您从一个非常旧的版本迁移到一个真正的新版本,您可能会遇到新版本中删除了Kubernetes YAML API的问题。从旧版本到新版本是可以做到的,但最好留给有经验的人。对于Happy Path结果,最好是迁移到相同版本的集群或从集群迁移出来。)