我已经实现了一个自定义的kubernetes控制器,该控制器监视我的自定义资源(CR)并采取措施。我想添加一个数据库(MySQL),以便可以备份配置以跟踪历史记录。
我对定制控制器中数据库的实现有些困惑。 Kubernetes控制器协调思想相信最终的一致性,即实际状态移至所需状态。当CR的资源状态发生变化时,会调用协调功能,借此我们采取措施以确保实际状态与所需状态相匹配。永远不能保证Reconcile函数中的请求是最新状态,并且可以是陈旧的(API服务器具有更新的条目)或可以是重复的。因此,建议使用level based implementation控制器。
但是,我不确定如何在请求顺序很重要的状态数据库等有状态的应用程序中实现基于级别的协调。例如:在mysql中,我们必须使用CREATE创建条目,并使用UPDATE命令进行更新。这意味着没有先前CREATE的UPDATE将失败。从kubernetes控制器将条目写入DB时,是否需要每次检查条目是否已经存在?但是,没有任何表和条目巨大,并且该方法不可扩展。
是否存在更好的方法来处理基于级别的数据库对帐?