英文:
How to list Pods based on Labels in kubernetes go-client
问题
我已经尝试根据标签列出Pods:
// Kubernetes客户端 - 包kubernetes
clientset := kubernetes.NewForConfigOrDie(config)
// 创建一个临时列表用于存储
var podslice []string
// 获取Pods - 包metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
pods, _ := clientset.CoreV1().Pods("").List(metav1.ListOptions{})
for _, p := range pods.Items {
fmt.Println(p.GetName())
}
这相当于执行以下命令:
kubectl get po
有没有办法在Golang中执行以下命令:
kubectl get po -l app=foo
提前感谢。
英文:
I have tried to list pods based on labels
// Kubernetes client - package kubernetes
clientset := kubernetes.NewForConfigOrDie(config)
// create a temp list for storage
var podslice []string
// Get pods -- package metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
pods, _ := clientset.CoreV1().Pods("").List(metav1.ListOptions{})
for _, p := range pods.Items {
fmt.Println(p.GetName())
}
this is equivalent of
kubectl get po
is there a way to get in golang
kubectl get po -l app=foo
thanks in advance
答案1
得分: 6
你可以使用ListOptions
参数来设置。
listOptions := metav1.ListOptions{
LabelSelector: "app=foo",
}
pods, _ := clientset.CoreV1().Pods("").List(listOptions)
如果你有多个标签,你可以使用labels
库来执行,代码如下(未经测试):
import "k8s.io/apimachinery/pkg/labels"
labelSelector := metav1.LabelSelector{MatchLabels: map[string]string{"app": "foo"}}
listOptions := metav1.ListOptions{
LabelSelector: labels.Set(labelSelector.MatchLabels).String(),
}
pods, _ := clientset.CoreV1().Pods("").List(listOptions)
英文:
You may just be able to set using the ListOptions
parameter.
listOptions := metav1.ListOptions{
LabelSelector: "app=foo",
}
pods, _ := clientset.CoreV1().Pods("").List(listOptions)
If you have multiple labels, you may be able to perform this via the labels
library, like below untested code:
import "k8s.io/apimachinery/pkg/labels"
labelSelector := metav1.LabelSelector{MatchLabels: map[string]string{"app": "foo"}}
listOptions := metav1.ListOptions{
LabelSelector: labels.Set(labelSelector.MatchLabels).String(),
}
pods, _ := clientset.CoreV1().Pods("").List(listOptions)
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论