在kubernetes client-go API (或使用它的其他库)中,是否有一个实用程序函数可以将k8s.io/apimachinery/pkg/apis/meta/v1/LabelSelector
转换为字符串以填充k8s.io/apimachinery/pkg/apis/meta/v1/ListOptions
中的字段LabelSelector
我翻遍了client-go
的代码,但我找不到这样的函数。
LabelSelector.Marshall()
和LabelSelector.String()
都给了我这点(不出所料,因为这不是他们的目的,但我还是试过了)。
背景
我有像k8s.io/api/extensions/v1beta1/Deployment
这样的规范描述,并希望使用它的选择器标签集(即Selector
字段)来查询它的pods
options := metav1.ListOptions{
LabelSelector: <stringified labels>,
}
podList, err := clientset.CoreV1().Pods(<namespace>).List(options)
发布于 2019-05-21 14:18:03
您可以使用LabelSelectorAsMap(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("<namespace>").List(options)
}
https://stackoverflow.com/questions/56231176
复制相似问题