登录
首页 >  Golang >  Go问答

避免 Kubernetes go-client-discovery pkg 将错误信息输出到 stderr

来源:stackoverflow

时间:2024-02-22 23:54:23 403浏览 收藏

各位小伙伴们,大家好呀!看看今天我又给各位带来了什么文章?本文标题《避免 Kubernetes go-client-discovery pkg 将错误信息输出到 stderr 》,很明显是关于Golang的文章哈哈哈,其中内容主要会涉及到等等,如果能帮到你,觉得很不错的话,欢迎各位多多点评和分享!

问题内容

我正在使用 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 发送错误吗?


正确答案


客户端使用实现 default logging conventionsklog 库。您可以在 readme 中阅读更多内容。

您应该在 main.c 文件中使用不同的值来初始化库。 As example

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

以上就是《避免 Kubernetes go-client-discovery pkg 将错误信息输出到 stderr 》的详细内容,更多关于的资料请关注golang学习网公众号!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>