库伯内特斯是否患有“癌症”;“更新顺序不正确”;Docker Swarm在出现';有几个部署正在运行?

库伯内特斯是否患有“癌症”;“更新顺序不正确”;Docker Swarm在出现';有几个部署正在运行?,docker,kubernetes,docker-swarm,Docker,Kubernetes,Docker Swarm,我发现,当我执行计划的docker stack部署时,它们几乎同时发生,我可能会在部署中遇到“更新顺序错误”错误 我在这方面看到了很多错误和问题 其中一些已经关闭,但对一些人来说,问题显然仍然持续到今天。我想知道Kubernetes是否已经解决了这个问题,所以它不会发生在K8S集群上。我不会说一般问题在Kubernetes中已经“解决”,因为任何共享系统更新数据都可能存在同步问题。不过,您不会经常遇到kubernetes原语的问题 直到您开始使用复杂的外部Kubernetes API客

我发现,当我执行计划的docker stack部署时,它们几乎同时发生,我可能会在部署中遇到“更新顺序错误”错误

我在这方面看到了很多错误和问题


其中一些已经关闭,但对一些人来说,问题显然仍然持续到今天。我想知道Kubernetes是否已经解决了这个问题,所以它不会发生在K8S集群上。

我不会说一般问题在Kubernetes中已经“解决”,因为任何共享系统更新数据都可能存在同步问题。不过,您不会经常遇到kubernetes原语的问题

直到您开始使用复杂的外部Kubernetes API客户端。另一个领域可能与您竞争进行更新(例如设置
副本

更新示例 所有kubernetes资源的元数据中都有一个“资源版本”,并且该数据有可能通过另一个更改进行带外更新。这通常发生在需要检索和检查数据以进行更新时:

  • A检索
    val
  • A增量
    val
  • B检索
    val
  • B增量
    val
  • A应用
    val
    resourceVersion
    增量
  • B应用
    val
    resourceVersion
    不匹配,失败 你也可以在混合物中加入“C”。“C”不是一个非常负责任的共享api客户端(糟糕的C!)。当应用它的
    val
    change时,C不会在其更新上提供
    resourceVersion
    ,并静默地清除自检索
    val
    以来所做的任何更新


    您会发现大多数kubernetes资源都可以管理。因此,通过对kube apiserver上的现有资源原子地应用补丁程序(原子性是针对单个资源的)。

    Kubernetes对这些资源有一个统一的定义,它们是应用程序的一部分。我认为我从未见过Kubernetes出现过类似“无序更新”这样的错误(在API级别,您可以得到
    409冲突
    ,但大多数客户端通常会重试)。