簡體   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