我正在使用client-go在Go中为Kubernetes编写自定义 Controller 。
它基于sample-controller并到目前为止运行良好。
SharedIndexInformer可以选择定期重新同步所有对象。 (Parameter resyncPeriod 中的sample-controller设置为30秒。)

有没有办法立即强制重新同步?

似乎处理定期重新同步的代码似乎称为 store.Resync()
我尝试调用fooInformer.Informer().GetStore().Resync()。调用成功,但是未发生重新同步。我错过了什么?

我正在使用client-go v0.17.2,而服务器是EKS v1.14.9-eks-c0eccc

最佳答案

这是不可能的。
周期性重新同步的cache.StorenewInformerk8s.io/client-go/tools/cache/controller.go中实例化为cache.DeltaFIFO队列:

    // This will hold incoming changes. Note how we pass clientState in as a
    // KeyLister, that way resync operations will result in the correct set
    // of update/delete deltas.
    fifo := NewDeltaFIFOWithOptions(DeltaFIFOOptions{
        KnownObjects:          clientState,
        EmitDeltaTypeReplaced: true,
    })
cache.New()将其返回为未导出的字段cache.controller{}.config.Queue,该字段没有导出的访问功能-因此无法手动调用Resync()

09-28 06:29