如何通过 Kubernetes Operator 中的协调器跟踪长时间运行的操作

问题描述 投票:0回答:1

我在 k8s 运算符中编写了一段代码,该任务需要更长的时间才能完成,从而阻塞了我的协调器直到完成任务。我想实现一个逻辑,我不必等到完成任务,而是想在完成任务后收到协调器的通知。

kubernetes operators kubernetes-operator
1个回答
1
投票

正如您所建议的,最佳实践是使操作员的协调过程尽可能短暂,以确保操作员可以快速协调事件并及时通过资源状态传达更新。优化操作员协调方法的最佳方法对于操作员来说始终是唯一的,但我提供了一些可能适用于您的操作员的场景:

场景 1:协调 CR 时,您的操作员需要创建一组子资源并确保它们处于某种状态。

在这种情况下,最好的选择是在子资源达到正确状态时使用 所有者标签重新排队 CR。您的运营商的协调方法需要更新为:

  • 如果资源不存在,则创建资源。
  • 检查资源是否处于正确状态。

场景 2:您的操作员在协调资源时需要执行长时间运行的逻辑

在这种情况下,将长时间运行的逻辑移动到 Kubernetes Job 或外部运行的进程中可能是有意义的。一旦作业完成,您的操作员控制器将需要重新排队 CR,类似于场景 1 中描述的过程。

也可以将操作员配置为同时协调多个 CR,但这不会解决协调方法中固有的设计问题。

希望这对您有所帮助,如果上述情况不适用,请联系我们提供更多详细信息。

© www.soinside.com 2019 - 2024. All rights reserved.