【问题标题】:kubernetes client-go: convert labelselector to label stringkubernetes client-go:将标签选择器转换为标签字符串
【发布时间】:2019-10-07 10:16:45
【问题描述】:

在 kubernetes client-go API(或其他使用它的库)中,是否有一个实用函数可以将 k8s.io/apimachinery/pkg/apis/meta/v1/LabelSelector 转换为字符串以填充 k8s.io/apimachinery/pkg/apis/meta/v1/ListOptions 中的字段 LabelSelector

我翻遍了client-go的代码,但找不到这样的函数。

LabelSelector.Marshall()LabelSelector.String() 给了我这个(不出所料,因为这不是他们的目的,但我还是尝试了)。

背景

我有像 k8s.io/api/extensions/v1beta1/Deployment 这样的规范描述,并希望使用它的一组选择器标签(即 Selector 字段)来查询它的 pod 使用

options := metav1.ListOptions{
    LabelSelector: <stringified labels>,
}

podList, err := clientset.CoreV1().Pods(<namespace>).List(options)

【问题讨论】:

    标签: go kubernetes kubernetes-go-client


    【解决方案1】:

    您可以使用LabelSelectorAsMap(LabelSelector) 函数将标签选择器转换为map[string]string 映射。

    然后,使用包k8s.io/apimachinery/pkg/labelsSelectorFromSet函数将map转换为选择器/字符串。

    伪代码:

    import (
        "k8s.io/apimachinery/pkg/labels"
        metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    )
    
    func ListPod(labelSelector metav1.LabelSelector) {
    
        labelMap := metav1.LabelSelectorAsMap(labelSelector)
    
        options := metav1.ListOptions{
            LabelSelector: labels.SelectorFromSet(labelMap).String(),
        }
    
        podList, err := clientset.CoreV1().Pods("<namespace>").List(options)
    
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-08-14
      • 2021-11-07
      • 1970-01-01
      • 1970-01-01
      • 2021-03-03
      • 2017-11-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多