在 Kubernetes 控制器中,从 informer 缓存中获取项目的首选方法是什么?

问题描述 投票:0回答:1

我正在查看以下 2 个示例,在第一个 示例中 使用列表器来检索项目。

第二个示例中,使用了索引。

我想知道从本地缓存检索元素的首选方式和方式是什么。

controller kubernetes kube-controller-manager
1个回答
4
投票

你上面展示的例子,他们都使用了indexer,如果你深入的话你会看到它。

对于第一个示例(参见此处

// 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)
© www.soinside.com 2019 - 2024. All rights reserved.