1

我正在使用 go discovery 客户端 pkg ( k8s.io/client-go/discovery, v0.22.2) 列出集群中所有支持的资源 ->

discoveryClient, err := discovery.NewDiscoveryClientForConfig(GetK8sConfig())
if err != nil {
       // do something
}
resourceList, err := discoveryClient.ServerPreferredResources()

当我运行此代码时,出现以下错误->

I1213 09:19:15.932915   38142 request.go:665] Waited for 1.008601388s due to client-side throttling, not priority and fairness, request: GET:https://35.225.61.23/apis/scheduling.k8s.io/v1beta1?timeout=32s

现在,我不介意这个错误,困扰我的是我无法阻止这个错误被打印出来。

知道如何阻止发现客户端向标准错误发送错误吗?

4

1 回答 1

0

客户端使用实现默认日志记录约定的klog库。您可以在自述文件中阅读更多内容。

您应该在 main.xml 中使用不同的值初始化库。例如

import (
    "bytes"
    "flag"
    "fmt"
    "k8s.io/klog/v2"
)

func main() {
    klog.InitFlags(nil)
    flag.Set("logtostderr", "false")
    flag.Set("alsologtostderr", "false")
    flag.Parse()

另一种方法,如果您想以 json 有效负载作为输出来起诉 Zap 记录器,您可以执行以下操作:

import (
...
    "github.com/go-logr/zapr"
    "go.uber.org/zap"
    "k8s.io/client-go/tools/clientcmd"
    "k8s.io/klog/v2"
...
)


func main() {
    flag.Parse()

    if logger, err := zap.NewProduction(); err == nil {
        klog.SetLogger(zapr.NewLogger(logger))
    }

从:

W0630 12:59:05.205701       1 client_config.go:614] Neither --kubeconfig nor --master was specified.  Using the inClusterConfig.  This might not work.

{"level":"info","ts":1625058100.1339207,"caller":"v2/klog.go:921","msg":"Neither --kubeconfig nor --master was specified.  Using the inClusterConfig.  This might not work.\n"}
于 2021-12-13T13:45:30.757 回答