为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

Go
呼啦一阵风 2023-06-19 15:42:01
在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)
查看完整描述

2 回答

?
LEATH

TA贡献1936条经验 获得超6个赞

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


然后,使用SelectorFromSet包的功能k8s.io/apimachinery/pkg/labels转换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)


}


查看完整回答
反对 回复 2023-06-19
?
MMMHUHU

TA贡献1834条经验 获得超8个赞

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

options := metav1.ListOptions{
    LabelSelector: metav1.FormatLabelSelector(deployment.Spec.Selector),
}
查看完整回答
反对 回复 2023-06-19
  • 2 回答
  • 0 关注
  • 212 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信