Как принудительно установить полную ресин c на SharedIndexInformer в пользовательском контроллере - PullRequest
2 голосов
/ 04 февраля 2020

Я пишу пользовательский контроллер для Kubernetes в Go с помощью client- go. Он основан на sample-controller и отлично работает до сих пор.

У SharedIndexInformer есть возможность периодически повторно ресин c всех объектов. ( Параметр resyncPeriod установлен на 30 секунд в семп-контроллере .)

Есть ли способ немедленно вызвать ресин c ?

Код, который, кажется, обрабатывает periodi c resyn c, кажется, вызывает store.Resync(). Я пытался позвонить fooInformer.Informer().GetStore().Resync(). Вызов завершается успешно, но ресин c не происходит. Что я пропустил?


Я использую client-go v0.17.2 и сервер EKS v1.14.9-eks-c0eccc.

1 Ответ

0 голосов
/ 06 февраля 2020

После вызова fooInformer.Informer().GetStore().Resync() вы используете Resync функцию / метод типа Store, определенного в: client-go / tools / cache / store. go

И там мы можем увидеть следующее :

В определении типа Store:

// Resync is meaningless in the terms appearing here but has
// meaning in some implementations that have non-trivial
// additional behavior (e.g., DeltaFIFO).
Resync() error

И в определении Resyn c ниже:

// Resync is meaningless for one of these
func (c *cache) Resync() error {
return nil
}

Если у вас нет другого класса для сделать Resyn c, это, как предполагается, действительно ничего не делает.

Вот почему

Вызов успешно, но ресин c не происходит.

Надеюсь, это поможет!

...