猿问

如何使用 go-lang 提取 Kubernetes 中的活动 HPA

我正在使用 kube 配置文件使用 go-lang 获取 pod CPU 和 MEM 数据。我坚持获取 HPA 详细信息,即我正在尝试编写相当于“kubectl get hpa”的内容,因此我可以知道我是否已将 hpa 应用于已知服务。


对此的任何帮助都将受到高度赞赏。


到目前为止,我已经尝试过以下方法。


kubeClient "k8s.io/client-go/kubernetes/typed/autoscaling/v1"

hpaWatch, err := kubeClient.AutoscalingV1().HorizontalPodAutoscalers("default").Watch(metav1.ListOptions{})

但这不起作用。


湖上湖
浏览 211回答 1
1回答

料青山看我应如是

这是您应该使用的行:hpas, err := clientset.AutoscalingV1().HorizontalPodAutoscalers("default").List(context.TODO(), metav1.ListOptions{})以下是列出 HPA 的完整且有效的示例。您应该可以复制粘贴并运行它。它已经过测试client-go@0.19.0。package mainimport (    "context"    "flag"    "fmt"    "os"    "path/filepath"    "time"    metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"    "k8s.io/client-go/kubernetes"    "k8s.io/client-go/tools/clientcmd")func main() {    var kubeconfig *string    if home := homeDir(); home != "" {        kubeconfig = flag.String("kubeconfig", filepath.Join(home, ".kube", "config"), "(optional) absolute path to the kubeconfig file")    } else {        kubeconfig = flag.String("kubeconfig", "", "absolute path to the kubeconfig file")    }    flag.Parse()    // use the current context in kubeconfig    config, err := clientcmd.BuildConfigFromFlags("", *kubeconfig)    if err != nil {        panic(err.Error())    }    // create the clientset    clientset, err := kubernetes.NewForConfig(config)    if err != nil {        panic(err.Error())    }    for {        hpas, err := clientset.AutoscalingV1().HorizontalPodAutoscalers("default").List(context.TODO(), metav1.ListOptions{})        if err != nil {            panic(err.Error())        }        for _, hpa := range hpas.Items {            fmt.Printf("%q\n", hpa.GetName())        }        time.Sleep(10 * time.Second)    }}func homeDir() string {    if h := os.Getenv("HOME"); h != "" {        return h    }    return os.Getenv("USERPROFILE") // windows}
随时随地看视频慕课网APP

相关分类

Go
我要回答