kubernetes client-go:将标签选择器转换为标签字符串
kubernetes client-go: convert labelselector to label string
在 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
字段)通过
查询它的 pods
options := metav1.ListOptions{
LabelSelector: <stringified labels>,
}
podList, err := clientset.CoreV1().Pods(<namespace>).List(options)
您可以使用LabelSelectorAsMap(LabelSelector)
函数将labelselector 转换为map[string]string
地图。
然后,使用包k8s.io/apimachinery/pkg/labels
的SelectorFromSet
函数将map
转换为selector/strings。
伪代码:
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)
}
在 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
字段)通过
options := metav1.ListOptions{
LabelSelector: <stringified labels>,
}
podList, err := clientset.CoreV1().Pods(<namespace>).List(options)
您可以使用LabelSelectorAsMap(LabelSelector)
函数将labelselector 转换为map[string]string
地图。
然后,使用包k8s.io/apimachinery/pkg/labels
的SelectorFromSet
函数将map
转换为selector/strings。
伪代码:
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)
}