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
?
I digged through the code of client-go
but I can't find a function like that.
The LabelSelector.Marshall()
nor LabelSelector.String()
give me that (unsurprisingly, because that's not their purpose, but I tried it anyway).
I have spec descriptions like k8s.io/api/extensions/v1beta1/Deployment
, and want to use it's set of selector labels (i.e. the Selector
field) to query it's pods using
options := metav1.ListOptions{
LabelSelector: <stringified labels>,
}
podList, err := clientset.CoreV1().Pods(<namespace>).List(options)
You can change the labels on individual pods using the kubectl label command, documented here. Changing the label of a running pod should not cause it to be restarted, and services will automatically detect and handle label changes. Save this answer.
To list the pods with label key “owner” and value “ahmad”, we will use the --selector option. Next, use the short option -l to select the pod with label env=develop. Kubernetes labels are not only for pods. You can apply them to all sorts of objects, including nodes, services, and deployments.
Labels are properties that we can attach to each item for example for their type, kind, and so on. Selectors help us in finding these items. You can think of a selector as a filter. We could label pods based on some attributes i.e. app name, front-end, back-end.
You can use LabelSelectorAsMap(LabelSelector)
function to convert the labelselector into map[string]string
map.
Then, use SelectorFromSet
function of package k8s.io/apimachinery/pkg/labels
to convert map
to selector/strings.
Pseudo code:
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)
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With