在kubernetes client-go API(或使用它的另一个库)中,是否有实用程序功能将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)
最佳答案
您可以使用LabelSelectorAsMap(LabelSelector)
函数将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)
}
关于go - kubernetes client-go : convert labelselector to label string,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56231176/