Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/clojure/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Kubernetes中缩放CRD控制器_Kubernetes - Fatal编程技术网

如何在Kubernetes中缩放CRD控制器

如何在Kubernetes中缩放CRD控制器,kubernetes,Kubernetes,我正在阅读大量关于 我已经用我的业务逻辑实现了一个,有时我会遇到这样的竞争条件: 我创建了一个自定义对象,我们将其命名为Foo,名称为bar 我的业务逻辑适用,假设它创建了一个Deployment,并生成了一个名称,我将该名称(作为参考)保存在Foo对象中 我删除自定义对象 我用相同的名称快速重新创建它,有时我会得到以下日志: 问题是因为我的Deployment有一个生成的名称,可能保存(Foo)失败了,所以我得到了两个Deployment,有两个名称 目前我还没有找到解决方法,但它提出了一

我正在阅读大量关于

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

  • 我创建了一个自定义对象,我们将其命名为
    Foo
    ,名称为
    bar
  • 我的业务逻辑适用,假设它创建了一个
    Deployment
    ,并生成了一个名称,我将该名称(作为参考)保存在
    Foo
    对象中
  • 我删除自定义对象
  • 我用相同的名称快速重新创建它,有时我会得到以下日志:
问题是因为我的
Deployment
有一个生成的名称,可能保存(Foo)失败了,所以我得到了两个
Deployment
,有两个名称

目前我还没有找到解决方法,但它提出了一个问题

如果我有多个控制器在运行,该怎么办?

我启动了两个控制器,通过创建一个新对象,我得到了相同的竞争条件


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

通常,您只运行一个控制器副本,或者在任何给定时间至少只有一个控制器处于活动状态。只要您小心地聚合编写代码,那么从技术上讲,这并不重要,但实际上没有太多理由运行多个

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