为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

Go
湖上湖 2022-06-27 16:27:39
我正在使用 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{})但这不起作用。
查看完整描述

1 回答

?
料青山看我应如是

TA贡献1772条经验 获得超8个赞

这是您应该使用的行:


hpas, err := clientset.AutoscalingV1().HorizontalPodAutoscalers("default").List(context.TODO(), metav1.ListOptions{})

以下是列出 HPA 的完整且有效的示例。您应该可以复制粘贴并运行它。


它已经过测试client-go@0.19.0。


package main


import (

    "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

}


查看完整回答
反对 回复 2022-06-27
  • 1 回答
  • 0 关注
  • 210 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号