gpt4 book ai didi

go - 如何强制对自定义 Controller 中的 SharedIndexInformer 进行完全重新同步

转载 作者:行者123 更新时间:2023-12-01 20:22:59 24 4
gpt4 key购买 nike

我正在 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.StorenewInformer 中的 k8s.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()

关于go - 如何强制对自定义 Controller 中的 SharedIndexInformer 进行完全重新同步,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60059602/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com