我当时正在使用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中(升级正在进行中)。我们如何在这里进行部署而不会失败?如果您已经在使用k8,那么您将遵循的最佳做法是什么。
答案 0 :(得分:2)
如Enable Rolling updates in Kubernetes with Zero downtime中的“ Nilesh Jayanandana”所示,您可以检查实现readiness probe是否有助于服务B等待服务A在V2中。
另一种方法是通过Helm程序包,如“ Deploy, Scale and Upgrade an Application on Kubernetes with Helm”中所示,该程序包可以对依赖关系进行建模,然后通过helm update
执行滚动升级。