【问题标题】:SharedInformerFactoryWithOptions - Not able to filter based on labelsSharedInformerFactoryWithOptions - 无法根据标签进行过滤
【发布时间】:2021-12-17 15:56:07
【问题描述】:

我想查看某个应用程序的 Kubernetes pod 事件。

我选择了 NewSharedInformerFactoryWithOptions。我添加了适当的标签选择器,但它没有被过滤掉。因为我想使用标签过滤它:'app=nats-box'

这里是代码-

req, err := labels.NewRequirement("app", selection.Equals, []string{"nats-box"})
    if err != nil {
        log.Fatalf("error %s, bad requirement", err.Error())
    }
selector := labels.NewSelector()
selector.Add(*req)

filteredFactory := informers.NewSharedInformerFactoryWithOptions(clientset, 0, informers.WithNamespace("default"), informers.WithTweakListOptions(func(options *metav1.ListOptions) {
    options.LabelSelector = selector.String()
}))

podInformer := filteredFactory.Core().V1().Pods().Informer()

podInformer.AddEventHandler(cache.ResourceEventHandlerFuncs{
    AddFunc: func(obj interface{}) {
        fmt.Println("pod add")
        name := obj.(*corev1.Pod).Name
        labels := obj.(*corev1.Pod).Labels
        fmt.Printf("pod Name: %s\nLabels - %v\n\n", name, labels)
    })

我得到了所有 pod 的输出,命名空间被过滤,但标签没有被过滤。无法弄清楚我在哪里犯了错误。

【问题讨论】:

    标签: go kubernetes client-go


    【解决方案1】:

    您可以直接在opts.LabelSelector中提供标签字符串:

    labelOptions := informers.WithTweakListOptions(func(opts *metav1.ListOptions) {
        opts.LabelSelector = "app=nats-box"
    })
    factory := informers.NewSharedInformerFactoryWithOptions(clientset, 0, informers.WithNamespace("default") ,labelOptions)
    informer := factory.Core().V1().Pods().Informer()
    stopper := make(chan struct{})
    defer close(stopper)
    informer.AddEventHandler(cache.ResourceEventHandlerFuncs{
        AddFunc: func(obj interface{}) {
            fmt.Println("pod add")
            name := obj.(*corev1.Pod).Name
            labels := obj.(*corev1.Pod).Labels
            fmt.Printf("pod Name: %s\nLabels - %v\n\n", name, labels)
        },
    })
    informer.Run(stopper)
    

    【讨论】:

      猜你喜欢
      • 2018-03-14
      • 2015-02-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-09-27
      • 1970-01-01
      相关资源
      最近更新 更多