如何防止 Kubernetes go-client-discovery pkg 向 stderr 发送错误

问题描述 投票:0回答:2

我正在使用 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

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

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

go kubernetes kubernetes-go-client
2个回答
0
投票

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

您应该在 main.c 文件中使用不同的值来初始化库。 作为例子 :

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"}

0
投票

我最终解决了这个问题,如下:

package main

imaport "k8s.io/klog/v2"


func main() {
    flag.Parse()

    // create a new logger instance with production configuration settings
    if logger, err := zap.NewProduction(); err == nil {

        // set the logger level to fatal to reduce noise
        logger = logger.WithOptions(zap.IncreaseLevel(zap.FatalLevel))

        // override the default klog logger
        klog.SetLogger(zapr.NewLogger(logger))
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.