gpt4 book ai didi

kubernetes - 如何在 Kubernetes 中扩展 CRD Controller

转载 作者:行者123 更新时间:2023-12-02 11:56:52 24 4
gpt4 key购买 nike

我正在阅读很多关于 CRD Controller 的文档

我已经用我的业务逻辑实现了一个,有时我遇到了这种竞争条件:

  • 我创建了一个自定义对象,我们称之为 Foo有名字bar
  • 我的业务逻辑适用,假设它创建了一个 Deployment生成 名称,并将名称(作为引用)保存在 Foo对象
  • 我删除了自定义对象
  • 我很快用相同的名称重新创建它,有时我得到这个日志:
  • error syncing 'default/bar': Operation cannot be fulfilled on Foo.k8s.io "bar": 
    the object has been modified; please apply your changes to the latest version
    and try again, requeuing

    事情是因为我的 Deployment有一个生成的名称,也许保存 (Foo) 失败了,我得到了两个 Deployment有两个名字。

    我暂时没有找到修复它的方法,但它提出了一个问题。

    如果我有多个 Controller 正在运行怎么办?

    我已经启动了两个 Controller ,并且通过创建一个新对象得到了相同的竞争条件。

    那么,扩展 CRD Controller 并避免这种竞争条件的最佳设计是什么?

    最佳答案

    通常你只运行一个 Controller 的副本,或者在任何给定时间至少只有一个处于事件状态。只要你小心翼翼地编写代码,那么它在技术上应该不重要,但实际上没有太多理由运行多个。

    关于kubernetes - 如何在 Kubernetes 中扩展 CRD Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57084088/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com