繁体   English   中英

kubernetes client-go:将 labelselector 转换为 label 字符串

[英]kubernetes client-go: convert labelselector to label string

In the kubernetes client-go API (or another library that uses it), is there a utility function to convert a k8s.io/apimachinery/pkg/apis/meta/v1/LabelSelector to a string to fill the field LabelSelector in k8s.io/apimachinery/pkg/apis/meta/v1/ListOptions

我挖掘了client-go的代码,但找不到像这样的function。

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)

您可以使用LabelSelectorAsMap(LabelSelector) function 将 labelselector 转换为map[string]string map。

然后,使用 package k8s.io/apimachinery/pkg/labels 的SelectorFromSet k8s.io/apimachinery/pkg/labelsmap转换为选择器/字符串。

伪代码:

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)

}

这也可以通过以下而不是两次转换更直接地完成。


options := metav1.ListOptions{
    LabelSelector: metav1.FormatLabelSelector(deployment.Spec.Selector),
}

参考https://pkg.go.dev/k8s.io/apimachinery/pkg/apis/meta/v1#FormatLabelSelector

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM