From 0aff9490cf528579df55ab6609ff1c8fa6db95e9 Mon Sep 17 00:00:00 2001 From: xuzhonghu Date: Tue, 5 Jun 2018 10:18:23 +0800 Subject: [PATCH 1/4] move glog setter to util/logs --- staging/src/k8s.io/apiserver/pkg/util/logs/logs.go | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/staging/src/k8s.io/apiserver/pkg/util/logs/logs.go b/staging/src/k8s.io/apiserver/pkg/util/logs/logs.go index c5ba084a59e..0128d2aadf7 100644 --- a/staging/src/k8s.io/apiserver/pkg/util/logs/logs.go +++ b/staging/src/k8s.io/apiserver/pkg/util/logs/logs.go @@ -18,6 +18,7 @@ package logs import ( "flag" + "fmt" "log" "time" @@ -67,3 +68,12 @@ func FlushLogs() { func NewLogger(prefix string) *log.Logger { return log.New(GlogWriter{}, prefix, 0) } + +// GlogSetter is a setter to set glog level. +func GlogSetter(val string) (string, error) { + var level glog.Level + if err := level.Set(val); err != nil { + return "", fmt.Errorf("failed set glog.logging.verbosity %s: %v", val, err) + } + return fmt.Sprintf("successfully set glog.logging.verbosity to %s", val), nil +} From c867bf9cabcf2003a9f888d37a08bfe41ca539ae Mon Sep 17 00:00:00 2001 From: xuzhonghu Date: Fri, 1 Jun 2018 14:52:59 +0800 Subject: [PATCH 2/4] kubelet support dynamically set glog log level --v --- pkg/kubelet/server/BUILD | 1 + pkg/kubelet/server/server.go | 6 ++++++ 2 files changed, 7 insertions(+) diff --git a/pkg/kubelet/server/BUILD b/pkg/kubelet/server/BUILD index e55afd83808..7abfcb5cc7e 100644 --- a/pkg/kubelet/server/BUILD +++ b/pkg/kubelet/server/BUILD @@ -38,6 +38,7 @@ go_library( "//staging/src/k8s.io/apiserver/pkg/authorization/authorizer:go_default_library", "//staging/src/k8s.io/apiserver/pkg/server/healthz:go_default_library", "//staging/src/k8s.io/apiserver/pkg/server/httplog:go_default_library", + "//staging/src/k8s.io/apiserver/pkg/server/routes:go_default_library", "//staging/src/k8s.io/apiserver/pkg/util/flushwriter:go_default_library", "//vendor/github.com/emicklei/go-restful:go_default_library", "//vendor/github.com/golang/glog:go_default_library", diff --git a/pkg/kubelet/server/server.go b/pkg/kubelet/server/server.go index b96bf6b1448..25c3033f621 100644 --- a/pkg/kubelet/server/server.go +++ b/pkg/kubelet/server/server.go @@ -48,7 +48,9 @@ import ( "k8s.io/apiserver/pkg/authorization/authorizer" "k8s.io/apiserver/pkg/server/healthz" "k8s.io/apiserver/pkg/server/httplog" + "k8s.io/apiserver/pkg/server/routes" "k8s.io/apiserver/pkg/util/flushwriter" + "k8s.io/apiserver/pkg/util/logs" "k8s.io/kubernetes/pkg/api/legacyscheme" api "k8s.io/kubernetes/pkg/apis/core" "k8s.io/kubernetes/pkg/apis/core/v1/validation" @@ -408,6 +410,10 @@ func (s *Server) InstallDebuggingHandlers(criHandler http.Handler) { })).Doc("pprof endpoint") s.restfulCont.Add(ws) + // Setup flags handlers. + // so far, only logging related endpoints are considered valid to add for these debug flags. + s.restfulCont.Handle("/debug/flags/v", routes.StringFlagPutHandler(logs.GlogSetter)) + // The /runningpods endpoint is used for testing only. ws = new(restful.WebService) ws. From 38d48e8d025a9cceccfc8a80d72f751b8bb65dab Mon Sep 17 00:00:00 2001 From: xuzhonghu Date: Tue, 5 Jun 2018 10:32:46 +0800 Subject: [PATCH 3/4] kube-apiserver make use of GlogSetter --- staging/src/k8s.io/apiserver/pkg/server/config.go | 12 ++---------- 1 file changed, 2 insertions(+), 10 deletions(-) diff --git a/staging/src/k8s.io/apiserver/pkg/server/config.go b/staging/src/k8s.io/apiserver/pkg/server/config.go index 41ae90af689..328359eaa0a 100644 --- a/staging/src/k8s.io/apiserver/pkg/server/config.go +++ b/staging/src/k8s.io/apiserver/pkg/server/config.go @@ -59,13 +59,13 @@ import ( "k8s.io/apiserver/pkg/server/routes" serverstore "k8s.io/apiserver/pkg/server/storage" utilfeature "k8s.io/apiserver/pkg/util/feature" + "k8s.io/apiserver/pkg/util/logs" "k8s.io/client-go/informers" restclient "k8s.io/client-go/rest" certutil "k8s.io/client-go/util/cert" openapicommon "k8s.io/kube-openapi/pkg/common" // install apis - "github.com/golang/glog" _ "k8s.io/apiserver/pkg/apis/apiserver/install" ) @@ -576,15 +576,7 @@ func installAPI(s *GenericAPIServer, c *Config) { goruntime.SetBlockProfileRate(1) } // so far, only logging related endpoints are considered valid to add for these debug flags. - routes.DebugFlags{}.Install(s.Handler.NonGoRestfulMux, "v", routes.StringFlagPutHandler( - routes.StringFlagSetterFunc(func(val string) (string, error) { - var level glog.Level - if err := level.Set(val); err != nil { - return "", fmt.Errorf("failed set glog.logging.verbosity %s: %v", val, err) - } - return "successfully set glog.logging.verbosity to " + val, nil - }), - )) + routes.DebugFlags{}.Install(s.Handler.NonGoRestfulMux, "v", routes.StringFlagPutHandler(logs.GlogSetter)) } if c.EnableMetrics { if c.EnableProfiling { From 815799638bc1f3afa97f1b9f5524d10f5c36973a Mon Sep 17 00:00:00 2001 From: xuzhonghu Date: Tue, 5 Jun 2018 10:36:29 +0800 Subject: [PATCH 4/4] run update all --- pkg/kubelet/server/BUILD | 1 + staging/src/k8s.io/apiextensions-apiserver/Godeps/Godeps.json | 4 ++++ staging/src/k8s.io/apiserver/pkg/server/BUILD | 1 + 3 files changed, 6 insertions(+) diff --git a/pkg/kubelet/server/BUILD b/pkg/kubelet/server/BUILD index 7abfcb5cc7e..affcfad5674 100644 --- a/pkg/kubelet/server/BUILD +++ b/pkg/kubelet/server/BUILD @@ -40,6 +40,7 @@ go_library( "//staging/src/k8s.io/apiserver/pkg/server/httplog:go_default_library", "//staging/src/k8s.io/apiserver/pkg/server/routes:go_default_library", "//staging/src/k8s.io/apiserver/pkg/util/flushwriter:go_default_library", + "//staging/src/k8s.io/apiserver/pkg/util/logs:go_default_library", "//vendor/github.com/emicklei/go-restful:go_default_library", "//vendor/github.com/golang/glog:go_default_library", "//vendor/github.com/google/cadvisor/info/v1:go_default_library", diff --git a/staging/src/k8s.io/apiextensions-apiserver/Godeps/Godeps.json b/staging/src/k8s.io/apiextensions-apiserver/Godeps/Godeps.json index 5c5137eea23..7f0d70fc30a 100644 --- a/staging/src/k8s.io/apiextensions-apiserver/Godeps/Godeps.json +++ b/staging/src/k8s.io/apiextensions-apiserver/Godeps/Godeps.json @@ -1462,6 +1462,10 @@ "ImportPath": "k8s.io/apiserver/pkg/util/flushwriter", "Rev": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" }, + { + "ImportPath": "k8s.io/apiserver/pkg/util/logs", + "Rev": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + }, { "ImportPath": "k8s.io/apiserver/pkg/util/openapi", "Rev": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" diff --git a/staging/src/k8s.io/apiserver/pkg/server/BUILD b/staging/src/k8s.io/apiserver/pkg/server/BUILD index e0e77241536..22e526837f3 100644 --- a/staging/src/k8s.io/apiserver/pkg/server/BUILD +++ b/staging/src/k8s.io/apiserver/pkg/server/BUILD @@ -100,6 +100,7 @@ go_library( "//staging/src/k8s.io/apiserver/pkg/server/routes:go_default_library", "//staging/src/k8s.io/apiserver/pkg/server/storage:go_default_library", "//staging/src/k8s.io/apiserver/pkg/util/feature:go_default_library", + "//staging/src/k8s.io/apiserver/pkg/util/logs:go_default_library", "//staging/src/k8s.io/client-go/informers:go_default_library", "//staging/src/k8s.io/client-go/rest:go_default_library", "//staging/src/k8s.io/client-go/util/cert:go_default_library",