mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-30 15:05:27 +00:00
Merge pull request #64601 from hzxuzhonghu/cm-dynamic-loglevel-set
Automatic merge from submit-queue. If you want to cherry-pick this change to another branch, please follow the instructions <a href="https://github.com/kubernetes/community/blob/master/contributors/devel/cherry-picks.md">here</a>. Other components support set log level dynamically **What this PR does / why we need it**: #63777 introduced a way to set glog.logging.verbosity dynamically. We should enable this for all other components, which is specially useful in debugging. **Release note**: ```release-note Expose `/debug/flags/v` to allow kubelet dynamically set glog logging level. If want to change glog level to 3, you only have to send a PUT request like `curl -X PUT http://127.0.0.1:8080/debug/flags/v -d "3"`. ```
This commit is contained in:
commit
cffa2aed0e
@ -38,7 +38,9 @@ go_library(
|
|||||||
"//staging/src/k8s.io/apiserver/pkg/authorization/authorizer:go_default_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/healthz:go_default_library",
|
||||||
"//staging/src/k8s.io/apiserver/pkg/server/httplog: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",
|
"//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/emicklei/go-restful:go_default_library",
|
||||||
"//vendor/github.com/golang/glog:go_default_library",
|
"//vendor/github.com/golang/glog:go_default_library",
|
||||||
"//vendor/github.com/google/cadvisor/info/v1:go_default_library",
|
"//vendor/github.com/google/cadvisor/info/v1:go_default_library",
|
||||||
|
@ -49,7 +49,9 @@ import (
|
|||||||
"k8s.io/apiserver/pkg/authorization/authorizer"
|
"k8s.io/apiserver/pkg/authorization/authorizer"
|
||||||
"k8s.io/apiserver/pkg/server/healthz"
|
"k8s.io/apiserver/pkg/server/healthz"
|
||||||
"k8s.io/apiserver/pkg/server/httplog"
|
"k8s.io/apiserver/pkg/server/httplog"
|
||||||
|
"k8s.io/apiserver/pkg/server/routes"
|
||||||
"k8s.io/apiserver/pkg/util/flushwriter"
|
"k8s.io/apiserver/pkg/util/flushwriter"
|
||||||
|
"k8s.io/apiserver/pkg/util/logs"
|
||||||
"k8s.io/kubernetes/pkg/api/legacyscheme"
|
"k8s.io/kubernetes/pkg/api/legacyscheme"
|
||||||
api "k8s.io/kubernetes/pkg/apis/core"
|
api "k8s.io/kubernetes/pkg/apis/core"
|
||||||
"k8s.io/kubernetes/pkg/apis/core/v1/validation"
|
"k8s.io/kubernetes/pkg/apis/core/v1/validation"
|
||||||
@ -410,6 +412,10 @@ func (s *Server) InstallDebuggingHandlers(criHandler http.Handler) {
|
|||||||
})).Doc("pprof endpoint")
|
})).Doc("pprof endpoint")
|
||||||
s.restfulCont.Add(ws)
|
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.
|
// The /runningpods endpoint is used for testing only.
|
||||||
ws = new(restful.WebService)
|
ws = new(restful.WebService)
|
||||||
ws.
|
ws.
|
||||||
|
@ -1502,6 +1502,10 @@
|
|||||||
"ImportPath": "k8s.io/apiserver/pkg/util/flushwriter",
|
"ImportPath": "k8s.io/apiserver/pkg/util/flushwriter",
|
||||||
"Rev": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
|
"Rev": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"ImportPath": "k8s.io/apiserver/pkg/util/logs",
|
||||||
|
"Rev": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"ImportPath": "k8s.io/apiserver/pkg/util/openapi",
|
"ImportPath": "k8s.io/apiserver/pkg/util/openapi",
|
||||||
"Rev": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
|
"Rev": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
|
||||||
|
@ -101,6 +101,7 @@ go_library(
|
|||||||
"//staging/src/k8s.io/apiserver/pkg/server/routes:go_default_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/server/storage:go_default_library",
|
||||||
"//staging/src/k8s.io/apiserver/pkg/util/feature: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/informers:go_default_library",
|
||||||
"//staging/src/k8s.io/client-go/rest:go_default_library",
|
"//staging/src/k8s.io/client-go/rest:go_default_library",
|
||||||
"//staging/src/k8s.io/client-go/util/cert:go_default_library",
|
"//staging/src/k8s.io/client-go/util/cert:go_default_library",
|
||||||
|
@ -60,6 +60,7 @@ import (
|
|||||||
"k8s.io/apiserver/pkg/server/routes"
|
"k8s.io/apiserver/pkg/server/routes"
|
||||||
serverstore "k8s.io/apiserver/pkg/server/storage"
|
serverstore "k8s.io/apiserver/pkg/server/storage"
|
||||||
utilfeature "k8s.io/apiserver/pkg/util/feature"
|
utilfeature "k8s.io/apiserver/pkg/util/feature"
|
||||||
|
"k8s.io/apiserver/pkg/util/logs"
|
||||||
"k8s.io/client-go/informers"
|
"k8s.io/client-go/informers"
|
||||||
restclient "k8s.io/client-go/rest"
|
restclient "k8s.io/client-go/rest"
|
||||||
certutil "k8s.io/client-go/util/cert"
|
certutil "k8s.io/client-go/util/cert"
|
||||||
@ -564,15 +565,7 @@ func installAPI(s *GenericAPIServer, c *Config) {
|
|||||||
goruntime.SetBlockProfileRate(1)
|
goruntime.SetBlockProfileRate(1)
|
||||||
}
|
}
|
||||||
// so far, only logging related endpoints are considered valid to add for these debug flags.
|
// 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.DebugFlags{}.Install(s.Handler.NonGoRestfulMux, "v", routes.StringFlagPutHandler(logs.GlogSetter))
|
||||||
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
|
|
||||||
}),
|
|
||||||
))
|
|
||||||
}
|
}
|
||||||
if c.EnableMetrics {
|
if c.EnableMetrics {
|
||||||
if c.EnableProfiling {
|
if c.EnableProfiling {
|
||||||
|
@ -18,6 +18,7 @@ package logs
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"flag"
|
"flag"
|
||||||
|
"fmt"
|
||||||
"log"
|
"log"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
@ -67,3 +68,12 @@ func FlushLogs() {
|
|||||||
func NewLogger(prefix string) *log.Logger {
|
func NewLogger(prefix string) *log.Logger {
|
||||||
return log.New(GlogWriter{}, prefix, 0)
|
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
|
||||||
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user