[英]kubernetes client-go: convert labelselector to label string
In the kubernetes client-go API (or another library that uses it), is there a utility function to convert a k8s.io/apimachinery/pkg/apis/meta/v1/LabelSelector
to a string to fill the field LabelSelector
in k8s.io/apimachinery/pkg/apis/meta/v1/ListOptions
?
我挖掘了client-go
的代码,但找不到像这样的function。
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)
function 将 labelselector 转换为map[string]string
map。
然后,使用 package k8s.io/apimachinery/pkg/labels 的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)
}
这也可以通过以下而不是两次转换更直接地完成。
options := metav1.ListOptions{
LabelSelector: metav1.FormatLabelSelector(deployment.Spec.Selector),
}
参考https://pkg.go.dev/k8s.io/apimachinery/pkg/apis/meta/v1#FormatLabelSelector
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.