5

我最近开始构建Kubernetes operator。我正在使用Fabric8 Java Kubernetes 客户端,但我认为我的问题更笼统,也适用于其他编程语言和库。

在阅读解释运算符模式的博客文章、文档或教科书时,我发现设计运算符似乎有两种选择:

  1. 使用无限协调循环,其中所有相应的 Kubernetes 对象都从 API 中检索,然后执行一些操作。
  2. 使用通知者,只要观察到的Kubernetes资源发生变化,就会调用它们。

但是,我没有找到任何源讨论在这种情况下应该使用哪个选项。有没有最佳实践?

4

1 回答 1

2

你应该同时使用两者。

使用通知者时,处理程序可能会乱序甚至根本没有事件。前者意味着处理程序需要定义和协调状态——这种方法被称为基于级别,而不是基于边缘。后者意味着需要定期触发和解以解决这种可能性。

控制器运行时做事的方式,协调是由与控制器和计时器监视的资源相关的集群事件(在幕后使用通知者)触发的。此外,根据设计,事件不会传递给协调器,因此它被迫定义并作用于状态。

于 2022-01-03T15:36:36.963 回答