2

我正在玩 k8s 部署 - 滚动更新,它运行得非常好。我很想知道当我们有服务依赖时如何进行部署!不确定我是否正确解释了我的问题。这只是一个非常高级的场景!

让我们考虑这个例子。我已经部署了 2 个应用程序,每个应用程序有 10 个副本,作为服务公开。

Service-A
  Deployment-A
    Pod-A - v1 - (10)

Service-B
  Deployment-B
    Pod-B - v1 - (10)

服务 A 依赖于 B。现在作为 v2 版本的一部分,两个应用程序都需要使用 v2。服务 B api 需要很少的附加参数/略有变化。当我们用更新的 v2 版本升级这两个应用程序时,如果 service-B 在 Service-A 之前启动并运行,则某些请求将失败,因为 Service-A 仍在 v1 中(因为升级正在进行中)。我们怎样才能在没有任何失败的情况下进行部署?如果您已经在使用 k8s,那么您将遵循的最佳实践是什么。

4

1 回答 1

2

Nilesh Jayanandana的“在 Kubernetes 中以零停机时间启用滚动更新”所示,您可以检查实施就绪探测是否有助于服务 B 等待服务 A 处于 V2 中。

另一种方法是通过 Helm 包,如“使用 Helm 在 Kubernetes 上部署、扩展和升级应用程序”,它可以对依赖关系进行建模,然后通过helm update执行滚动升级。

于 2019-03-19T06:00:37.693 回答