В контроллере Kubernetes какой предпочтительный способ получить элемент из кэша информера?

Я смотрю на следующие 2 примера, в первом примере Lister используется для получения элемента.

Во втором примере используется индекс.

Мне интересно, какой способ и способ является предпочтительным для извлечения элемента из локального кэша.

1 ответ

В примерах, которые вы показали выше, они оба используют индексатор, если вы пойдете глубже, вы увидите это.

Для первого примера (см. Здесь)

// Get retrieves the Node from the index for a given name.
func (s *nodeLister) Get(name string) (*v1.Node, error) {
    obj, exists, err := s.indexer.GetByKey(name)
    if err != nil {
        return nil, err
    }
    if !exists {
        return nil, errors.NewNotFound(v1.Resource("node"), name)
    }
    return obj.(*v1.Node), nil
}

Для второго примера

item, exists, err := c.informer.GetIndexer().GetByKey(keyRaw)
Другие вопросы по тегам