deprecate klog flags

Upstream klog continues to support all of its flags, but in Kubernetes only
some will be supported going format (-v, -vmodule). With this change,
the kubelet flags now look like this:

  $ go run ./cmd/kubelet --help | grep -e --log-dir -e '--v ' -e --vmodule -e --logging-format
  --log-dir string                                           If non-empty, write log files in this directory (DEPRECATED: will be removed in a future release, see https://github.com/kubernetes/enhancements/tree/master/keps/sig-instrumentation/2845-deprecate-klog-specific-flags-in-k8s-components)
      --logging-format string                                    Sets the log format. Permitted formats: "json", "text".
                Non-default formats don't honor these flags: --add_dir_header, --alsologtostderr, --log_backtrace_at, --log_dir, --log_file, --log_file_max_size, --logtostderr, --one_output, --skip_headers, --skip_log_headers, --stderrthreshold, --vmodule, --log-flush-frequency, --add_dir_header, --alsologtostderr, --log_backtrace_at, --log_dir, --log_file, --log_file_max_size, --logtostderr, --one_output, --skip_headers, --skip_log_headers, --stderrthreshold, --vmodule.
  -v, --v Level                                                  number for the log level verbosity
      --vmodule moduleSpec                                       comma-separated list of pattern=N settings for file-filtered logging
This commit is contained in:
Patrick Ohly 2021-09-13 16:41:56 +02:00
parent 82da9bdaab
commit 27d6ce4479

View File

@ -31,6 +31,13 @@ import (
)
const logFlushFreqFlagName = "log-flush-frequency"
const deprecated = "will be removed in a future release, see https://github.com/kubernetes/enhancements/tree/master/keps/sig-instrumentation/2845-deprecate-klog-specific-flags-in-k8s-components"
// TODO (https://github.com/kubernetes/kubernetes/issues/105310): once klog
// flags are removed, stop warning about "Non-default formats don't honor these
// flags" in config.go and instead add this remark here.
//
// const vmoduleUsage = " (only works for the default text log format)"
var (
packageFlags = flag.NewFlagSet("logging", flag.ContinueOnError)
@ -55,7 +62,22 @@ func AddFlags(fs *pflag.FlagSet) {
if f := fs.Lookup("v"); f != nil {
return
}
fs.AddGoFlagSet(packageFlags)
// Add flags with pflag deprecation remark for some klog flags.
packageFlags.VisitAll(func(f *flag.Flag) {
pf := pflag.PFlagFromGoFlag(f)
switch f.Name {
case "v", logFlushFreqFlagName:
// unchanged
case "vmodule":
// TODO: see above
// pf.Usage += vmoduleUsage
default:
// deprecated, but not hidden
pf.Deprecated = deprecated
}
fs.AddFlag(pf)
})
}
// AddGoFlags is a variant of AddFlags for traditional Go flag.FlagSet.
@ -65,8 +87,20 @@ func AddFlags(fs *pflag.FlagSet) {
// flag.Parse and cannot change to pflag because it would break their command
// line interface.
func AddGoFlags(fs *flag.FlagSet) {
// Add flags with deprecation remark added to the usage text of
// some klog flags.
packageFlags.VisitAll(func(f *flag.Flag) {
fs.Var(f.Value, f.Name, f.Usage)
usage := f.Usage
switch f.Name {
case "v", logFlushFreqFlagName:
// unchanged
case "vmodule":
// TODO: see above
// usage += vmoduleUsage
default:
usage += " (DEPRECATED: " + deprecated + ")"
}
fs.Var(f.Value, f.Name, usage)
})
}