如何在 kubernetes go-client 中根据标签列出 Pod

Pra*_*n C 2 go kubernetes google-kubernetes-engine kubernetes-go-client amazon-eks

我尝试根据标签列出 pod

    // 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())
    }
Run Code Online (Sandbox Code Playgroud)

这相当于

kubectl get po 
Run Code Online (Sandbox Code Playgroud)

有没有办法进入golang

kubectl get po -l app=foo
Run Code Online (Sandbox Code Playgroud)

提前致谢

San*_*kar 8

您可能只能使用ListOptions参数进行设置。

listOptions := metav1.ListOptions{
        LabelSelector: "app=foo",
    }
pods, _ := clientset.CoreV1().Pods("").List(listOptions)
Run Code Online (Sandbox Code Playgroud)

如果您有多个标签,您可以通过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)
Run Code Online (Sandbox Code Playgroud)