代码之家  ›  专栏  ›  技术社区  ›  Ijaz Ahmad

Kubernetes资源版本控制

  •  0
  • Ijaz Ahmad  · 技术社区  · 7 年前

    使用 kubectl get with -o yaml 在资源上,我看到每个资源都有版本控制:

    kind: ConfigMap
    metadata:
      creationTimestamp: 2018-10-16T21:44:10Z
      name: my-config
      namespace: default
      resourceVersion: "163"
    

    我想知道这些版本控制的意义是什么,它们的用途是什么(用例)

    2 回复  |  直到 7 年前
        1
  •  3
  •   Konstantin Vustin    7 年前

    一个更详细的解释,帮助我准确地理解了它的工作原理:

    你在这个书架上创建的所有物体, ReplicationControllers, Services, Secrets 因此被认为是 以持久的方式存储在某个地方,以便它们的清单在API中存活 服务器重新启动并出现故障。为此,Kubernetes使用 etcd ,其中 与之对话的组件 etcd公司 所有其他组件通过 API服务器。

    乐观的 锁定 系统及验证;而且,通过把 实际的存储机制从所有其他组件,它的很多 以后更换更简单。值得强调的是,etcd 是Kubernetes存储集群状态和元数据的唯一地方。

    (有时称为 锁定 防止在锁定到位时读取或更新, 更新后,版本号增加。更新数据时 客户端读取数据和提交更新的时间。如果这个 如果发生这种情况,更新将被拒绝,客户端必须重新读取新的 并尝试再次更新它。结果是当两个客户 尝试更新相同的数据项,只有第一个成功。

    结果是,当两个客户端试图更新同一个数据条目时, 只有第一个成功

    所以,所有的库伯内特斯资源包括 metadata.resourceVersion etcd公司 ,API服务器拒绝更新

        2
  •  2
  •   Jordan Liggitt    7 年前

    resourceVersion在单个资源上的主要用途是乐观锁定。您可以获取资源、进行更改并将其作为更新提交,如果另一个客户端同时更新了该更新,服务器将拒绝该更新,并出现冲突错误(他们的更新会使resourceVersion发生冲突,并且您提交的值会告诉服务器您认为要更新的版本)