通过切换到新池进行 GKE 群集升级:群集间服务通信会失败吗?



从这篇文章(https://cloudplatform.googleblog.com/2018/06/Kubernetes-最佳实践-升级-您的集群-零停机时间.html(中,我了解到可以创建一个新的节点池,并逐个封锁和排出旧节点,以便工作负载重新调度到新池中的新节点。

对我来说,一个新的节点池似乎表示一个新的集群。原因是:我们在 GKE 中有两个节点池,它们被列为两个单独的集群。

我的问题是:在服务下的 Pod 移动到新节点后,如果从旧节点中的其他 Pod 调用该服务,此群集间服务调用会失败吗?

您本身不会创建新集群。升级主节点,然后创建一个具有较新版本的节点的新节点池。确保新节点池与原始节点池共享同一网络。

如果你有一个服务有一个副本(一个 Pod(,如果该 Pod 位于你要升级的节点之一中,你需要让 Kubernetes 有时间在另一个未升级的节点上创建一个新副本。届时,您的服务将不可用。

如果您的服务具有多个副本,则您可能不会看到任何停机时间,除非出于某种奇怪的原因,所有副本都安排在同一节点上。

建议:在执行节点升级之前,将提供服务的资源(部署、守护程序集、有状态集等(扩展一个或两个副本。

StatefulSet 提示:如果您在重新调度 mysql 主节点时在主从配置中运行类似 mysql 的东西,您将有一些写入停机时间。

请注意,创建新的节点池不会创建新的群集。同一群集中可以有多个节点池。不同节点池中的工作负荷仍将相互交互,因为它们位于同一群集中。

gCloud Container Node-Pool-Create(创建节点池的命令(要求您指定 --cluster 标志,以便在现有集群中创建新的节点池。

因此,要直接回答这个问题,按照该Google链接中的步骤操作不会导致任何服务中断,也不会在迁移期间同一集群中的Pod相互通信出现任何问题。

最新更新