我们有一个 kubernetes 集群,其中会触发协调以响应自定义事件。使用以下格式在 Golang 中实现:
type reconciler struct {}
func (reconciler) Reconcile(ctx context.Context, o reconcile.Request) (reconcile.Result, error) {
// Implement business logic of reading and writing objects here
return reconcile.Result{}, nil
}
当自定义事件过多时,我们已经确定了协调逻辑中可能存在的瓶颈。因此,代码已更新为具有非阻塞协调逻辑。例子:
type reconciler struct {}
func (reconciler) Reconcile(ctx context.Context, o reconcile.Request) (reconcile.Result, error) {
go func() {
// Implement business logic of reading and writing objects here
}()
return reconcile.Result{}, nil
}
但是,在某些地方非阻塞 go routine 可能会返回 return ctrl.Result{Requeue: true}, nil 或 return ctrl.Result{RequeueAfter: someTime}, nil
在这种情况下,我们如何将此类事件重新排队到协调循环,因为返回不会返回给调用者 Reconcile()
子衿沉夜
相关分类