From dd456561b27fc56a540bab74f5244b96b3583d62 Mon Sep 17 00:00:00 2001 From: Pierluigi Lenoci Date: Fri, 24 Apr 2026 09:50:24 +0200 Subject: [PATCH 1/2] fix: honor -stderrthreshold flag in klog v2 klog v2 defaults -logtostderr=true, which silently ignores the -stderrthreshold flag (kubernetes/klog#212). klog v2.140.0 introduced the legacy_stderr_threshold_behavior flag to fix this (kubernetes/klog#432). After every klog.InitFlags() call, set logtostderr=false and legacy_stderr_threshold_behavior=true so that -stderrthreshold works as expected. Bump k8s.io/klog/v2 from v2.130.1 to v2.140.0. Signed-off-by: Pierluigi Lenoci --- cmd/controller-manager/app/options/common.go | 7 +++++++ cmd/kk/app/options/other.go | 7 +++++++ go.mod | 2 +- go.sum | 4 ++-- 4 files changed, 17 insertions(+), 3 deletions(-) diff --git a/cmd/controller-manager/app/options/common.go b/cmd/controller-manager/app/options/common.go index 1cb3b8737..5d213bc8b 100644 --- a/cmd/controller-manager/app/options/common.go +++ b/cmd/controller-manager/app/options/common.go @@ -157,6 +157,13 @@ func InitGOPS() error { func AddKlogFlags(fs *pflag.FlagSet) { local := flag.NewFlagSet("klog", flag.ExitOnError) klog.InitFlags(local) + + // klog v2 defaults -logtostderr=true, which causes -stderrthreshold to be + // silently ignored (kubernetes/klog#212). Disable logtostderr and opt in to + // the fixed behaviour introduced in klog v2.140.0 (kubernetes/klog#432). + _ = local.Set("logtostderr", "false") + _ = local.Set("legacy_stderr_threshold_behavior", "true") + local.VisitAll(func(fl *flag.Flag) { fl.Name = strings.ReplaceAll(fl.Name, "_", "-") fs.AddGoFlag(fl) diff --git a/cmd/kk/app/options/other.go b/cmd/kk/app/options/other.go index 69ba1a54d..7cbad4a93 100644 --- a/cmd/kk/app/options/other.go +++ b/cmd/kk/app/options/other.go @@ -158,6 +158,13 @@ func InitGOPS() error { func AddKlogFlags(fs *pflag.FlagSet) { local := flag.NewFlagSet("klog", flag.ExitOnError) klog.InitFlags(local) + + // klog v2 defaults -logtostderr=true, which causes -stderrthreshold to be + // silently ignored (kubernetes/klog#212). Disable logtostderr and opt in to + // the fixed behaviour introduced in klog v2.140.0 (kubernetes/klog#432). + _ = local.Set("logtostderr", "false") + _ = local.Set("legacy_stderr_threshold_behavior", "true") + local.VisitAll(func(fl *flag.Flag) { fl.Name = strings.ReplaceAll(fl.Name, "_", "-") fs.AddGoFlag(fl) diff --git a/go.mod b/go.mod index e156f9ce6..8e0b538c1 100644 --- a/go.mod +++ b/go.mod @@ -30,7 +30,7 @@ require ( k8s.io/apiserver v0.35.0 k8s.io/client-go v0.35.0 k8s.io/component-base v0.35.0 - k8s.io/klog/v2 v2.130.1 + k8s.io/klog/v2 v2.140.0 k8s.io/utils v0.0.0-20251002143259-bc988d571ff4 oras.land/oras-go/v2 v2.6.0 sigs.k8s.io/cluster-api v1.9.2 diff --git a/go.sum b/go.sum index 5156c68ac..98e6df7f2 100644 --- a/go.sum +++ b/go.sum @@ -460,8 +460,8 @@ k8s.io/cluster-bootstrap v0.31.3 h1:O1Yxk1bLaxZvmQCXLaJjj5iJD+lVMfJdRUuKgbUHPlA= k8s.io/cluster-bootstrap v0.31.3/go.mod h1:TI6TCsQQB4FfcryWgNO3SLXSKWBqHjx4DfyqSFwixj8= k8s.io/component-base v0.35.0 h1:+yBrOhzri2S1BVqyVSvcM3PtPyx5GUxCK2tinZz1G94= k8s.io/component-base v0.35.0/go.mod h1:85SCX4UCa6SCFt6p3IKAPej7jSnF3L8EbfSyMZayJR0= -k8s.io/klog/v2 v2.130.1 h1:n9Xl7H1Xvksem4KFG4PYbdQCQxqc/tTUyrgXaOhHSzk= -k8s.io/klog/v2 v2.130.1/go.mod h1:3Jpz1GvMt720eyJH1ckRHK1EDfpxISzJ7I9OYgaDtPE= +k8s.io/klog/v2 v2.140.0 h1:Tf+J3AH7xnUzZyVVXhTgGhEKnFqye14aadWv7bzXdzc= +k8s.io/klog/v2 v2.140.0/go.mod h1:o+/RWfJ6PwpnFn7OyAG3QnO47BFsymfEfrz6XyYSSp0= k8s.io/kube-openapi v0.0.0-20250910181357-589584f1c912 h1:Y3gxNAuB0OBLImH611+UDZcmKS3g6CthxToOb37KgwE= k8s.io/kube-openapi v0.0.0-20250910181357-589584f1c912/go.mod h1:kdmbQkyfwUagLfXIad1y2TdrjPFWp2Q89B3qkRwf/pQ= k8s.io/utils v0.0.0-20251002143259-bc988d571ff4 h1:SjGebBtkBqHFOli+05xYbK8YF1Dzkbzn+gDM4X9T4Ck= From c69a14ea8ad5dcc9b5f4b9479bc35f6c3e2bdb85 Mon Sep 17 00:00:00 2001 From: Pierluigi Lenoci Date: Fri, 24 Apr 2026 09:53:10 +0200 Subject: [PATCH 2/2] fix: use correct flag values for stderrthreshold fix Set legacy_stderr_threshold_behavior=false (not true) to enable the fix, and set stderrthreshold=INFO (not logtostderr=false) to preserve default behavior while allowing users to override on the command line. Signed-off-by: Pierluigi Lenoci Signed-off-by: Pierluigi Lenoci --- cmd/controller-manager/app/options/common.go | 10 +++++----- cmd/kk/app/options/other.go | 10 +++++----- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/cmd/controller-manager/app/options/common.go b/cmd/controller-manager/app/options/common.go index 5d213bc8b..07fb40bd5 100644 --- a/cmd/controller-manager/app/options/common.go +++ b/cmd/controller-manager/app/options/common.go @@ -158,11 +158,11 @@ func AddKlogFlags(fs *pflag.FlagSet) { local := flag.NewFlagSet("klog", flag.ExitOnError) klog.InitFlags(local) - // klog v2 defaults -logtostderr=true, which causes -stderrthreshold to be - // silently ignored (kubernetes/klog#212). Disable logtostderr and opt in to - // the fixed behaviour introduced in klog v2.140.0 (kubernetes/klog#432). - _ = local.Set("logtostderr", "false") - _ = local.Set("legacy_stderr_threshold_behavior", "true") + // Opt into the new klog behavior so that -stderrthreshold is honored even + // when -logtostderr=true (the default). + // Ref: kubernetes/klog#212, kubernetes/klog#432 + _ = local.Set("legacy_stderr_threshold_behavior", "false") + _ = local.Set("stderrthreshold", "INFO") local.VisitAll(func(fl *flag.Flag) { fl.Name = strings.ReplaceAll(fl.Name, "_", "-") diff --git a/cmd/kk/app/options/other.go b/cmd/kk/app/options/other.go index 7cbad4a93..85a383421 100644 --- a/cmd/kk/app/options/other.go +++ b/cmd/kk/app/options/other.go @@ -159,11 +159,11 @@ func AddKlogFlags(fs *pflag.FlagSet) { local := flag.NewFlagSet("klog", flag.ExitOnError) klog.InitFlags(local) - // klog v2 defaults -logtostderr=true, which causes -stderrthreshold to be - // silently ignored (kubernetes/klog#212). Disable logtostderr and opt in to - // the fixed behaviour introduced in klog v2.140.0 (kubernetes/klog#432). - _ = local.Set("logtostderr", "false") - _ = local.Set("legacy_stderr_threshold_behavior", "true") + // Opt into the new klog behavior so that -stderrthreshold is honored even + // when -logtostderr=true (the default). + // Ref: kubernetes/klog#212, kubernetes/klog#432 + _ = local.Set("legacy_stderr_threshold_behavior", "false") + _ = local.Set("stderrthreshold", "INFO") local.VisitAll(func(fl *flag.Flag) { fl.Name = strings.ReplaceAll(fl.Name, "_", "-")