kubernetes client-go:将标签选择器转换为标签字符串

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


我仔细研究了代码,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)


呼啦一阵风
浏览 236回答 2
2回答

LEATH

您可以使用LabelSelectorAsMap(LabelSelector)函数将标签选择器转换为map[string]string地图。然后,使用SelectorFromSet包的功能k8s.io/apimachinery/pkg/labels转换map为选择器/字符串。伪代码:import (&nbsp; &nbsp; "k8s.io/apimachinery/pkg/labels"&nbsp; &nbsp; metav1 "k8s.io/apimachinery/pkg/apis/meta/v1")func ListPod(labelSelector metav1.LabelSelector) {&nbsp; &nbsp; labelMap := metav1.LabelSelectorAsMap(labelSelector)&nbsp; &nbsp; options := metav1.ListOptions{&nbsp; &nbsp; &nbsp; &nbsp; LabelSelector: labels.SelectorFromSet(labelMap).String(),&nbsp; &nbsp; }&nbsp; &nbsp; podList, err := clientset.CoreV1().Pods("<namespace>").List(options)}

MMMHUHU

这也可以通过以下而不是两次转换更直接地完成。options := metav1.ListOptions{     LabelSelector: metav1.FormatLabelSelector(deployment.Spec.Selector), }
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go