k8s - 具有服务依赖性的部署

k8s - deployment with service dependency

我正在玩 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 升级两个应用程序时,如果服务 B 启动并且 运行 在服务 A 之前,一些请求将失败,因为服务 A 仍在 v1 中(因为升级正在进行中) .我们如何才能在这里没有任何失败地进行部署?如果您已经在使用 k8s,您将遵循的最佳实践是什么。

如“Enable Rolling updates in Kubernetes with Zero downtime" from Nilesh Jayanandana, you could check if implementing a readiness probe将帮助服务B等待服务A在V2中。

另一种方法是通过 Helm 包,如“Deploy, Scale and Upgrade an Application on Kubernetes with Helm”,它可以对依赖项进行建模,然后通过 helm update 执行滚动升级。