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

Kubernetes k8s-具有服务依赖性的部署,kubernetes,kubernetes-deployment,Kubernetes,Kubernetes Deployment,我在玩k8s部署滚动更新,它工作得非常好。 我很想知道当我们有服务依赖时如何进行部署!不确定我是否正确地解释了我的问题。这只是一个非常高级的场景 让我们来考虑这个例子。我部署了两个应用,每个应用有10个副本,作为服务公开 Service-A Deployment-A Pod-A - v1 - (10) Service-B Deployment-B Pod-B - v1 - (10) 服务A依赖于B。现在作为v2版本的一部分,两个应用程序都需要使用v2。服务B api需

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

让我们来考虑这个例子。我部署了两个应用,每个应用有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,您将遵循的最佳实践是什么。

如中的“”所示,您可以检查实现a是否有助于服务B等待服务a进入V2


另一种方法是通过Helm包,如“”,它可以对依赖项进行建模,然后通过
Helm update
,执行滚动升级。

Hm,如果我在pod A上使用
readinessProbe
等待服务B的端口,并且在
rollingUpdate
期间两者都被更新,我无法确保“端口已打开”意味着B已完成更新。也可能是运行在那里的旧服务,不是吗?如果我想等待B,因为我知道B有A也需要的初始化进程(如db迁移),这可能容易出错,或者我遗漏了什么?@leberknecht是的,我想这不是一个灵丹妙药(不适用于statefulset:)。