繁体   English   中英

如何在Kubernetes中扩展CRD控制器

[英]How to scale a CRD Controller in Kubernetes

我正在阅读很多关于CRD控制器的文档

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

  • 我创建了一个自定义对象,让我们用名称bar称它为Foo
  • 我的业务逻辑适用,让我们说它创建一个带有生成名称的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有一个生成的名称,也许save(Foo)失败了,我有两个Deployment有两个名字。

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

如果我有多个控制器在运行?

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM