登录
首页 >  Golang >  Go问答

Kubernetes Client-Go:将标签选择器转换为标签字符串

来源:stackoverflow

时间:2024-03-11 18:09:25 407浏览 收藏

从现在开始,努力学习吧!本文《Kubernetes Client-Go:将标签选择器转换为标签字符串》主要讲解了等等相关知识点,我会在golang学习网中持续更新相关的系列文章,欢迎大家关注并积极留言建议。下面就先一起来看一下本篇正文内容吧,希望能帮到你!

问题内容

在 kubernetes client-go api(或使用它的另一个库)中,是否有一个实用程序函数可以将 k8s.io/apimachinery/pkg/apis/meta/v1/labelselector 转换为字符串以填充字段 labelselectork8s.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: ,
}

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

解决方案


您可以使用 labelselectorasmap(labelselector) 函数将 labelselector 转换为 map[string]string 地图。

然后,使用 k8s.io/apimachinery/pkg/labels 包中的 selectorfromset 函数将 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("").list(options)

}

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

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

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

理论要掌握,实操不能落!以上关于《Kubernetes Client-Go:将标签选择器转换为标签字符串》的详细介绍,大家都掌握了吧!如果想要继续提升自己的能力,那么就来关注golang学习网公众号吧!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>