Skip to content

Commit 69b123f

Browse files
author
Kai Zhang
committed
Add json logging support for karmada scheduler
Signed-off-by: Kai Zhang <[email protected]>
1 parent 571801f commit 69b123f

File tree

3 files changed

+25
-8
lines changed

3 files changed

+25
-8
lines changed

artifacts/deploy/karmada-scheduler.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,7 @@ spec:
5454
- --scheduler-estimator-cert-file=/etc/karmada/pki/scheduler-estimator-client/tls.crt
5555
- --scheduler-estimator-key-file=/etc/karmada/pki/scheduler-estimator-client/tls.key
5656
- --feature-gates=AllAlpha=true,AllBeta=true
57+
- --logging-format=json
5758
- --v=4
5859
volumeMounts:
5960
- name: karmada-config

cmd/scheduler/app/scheduler.go

Lines changed: 21 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -34,11 +34,14 @@ import (
3434
"k8s.io/client-go/tools/leaderelection/resourcelock"
3535
"k8s.io/client-go/util/flowcontrol"
3636
cliflag "k8s.io/component-base/cli/flag"
37+
"k8s.io/component-base/logs"
38+
logsv1 "k8s.io/component-base/logs/api/v1"
3739
"k8s.io/component-base/term"
3840
"k8s.io/klog/v2"
3941
ctrlmetrics "sigs.k8s.io/controller-runtime/pkg/metrics"
4042

4143
"github.com/karmada-io/karmada/cmd/scheduler/app/options"
44+
"github.com/karmada-io/karmada/pkg/features"
4245
karmadaclientset "github.com/karmada-io/karmada/pkg/generated/clientset/versioned"
4346
versionmetrics "github.com/karmada-io/karmada/pkg/metrics"
4447
"github.com/karmada-io/karmada/pkg/scheduler"
@@ -92,7 +95,18 @@ func WithPlugin(name string, factory runtime.PluginFactory) Option {
9295

9396
// NewSchedulerCommand creates a *cobra.Command object with default parameters
9497
func NewSchedulerCommand(ctx context.Context, registryOptions ...Option) *cobra.Command {
98+
logConfig := logsv1.NewLoggingConfiguration()
99+
fss := cliflag.NamedFlagSets{}
100+
101+
logsFlagSet := fss.FlagSet("logs")
102+
logs.AddFlags(logsFlagSet, logs.SkipLoggingConfigurationFlags())
103+
logsv1.AddFlags(logConfig, logsFlagSet)
104+
klogflag.Add(logsFlagSet)
105+
106+
genericFlagSet := fss.FlagSet("generic")
107+
95108
opts := options.NewOptions()
109+
opts.AddFlags(genericFlagSet)
96110

97111
cmd := &cobra.Command{
98112
Use: names.KarmadaSchedulerComponentName,
@@ -110,6 +124,13 @@ the most suitable cluster.`,
110124
}
111125
return nil
112126
},
127+
PersistentPreRunE: func(_ *cobra.Command, _ []string) error {
128+
if err := logsv1.ValidateAndApply(logConfig, features.FeatureGate); err != nil {
129+
return err
130+
}
131+
logs.InitLogs()
132+
return nil
133+
},
113134
Args: func(cmd *cobra.Command, args []string) error {
114135
for _, arg := range args {
115136
if len(arg) > 0 {
@@ -120,14 +141,6 @@ the most suitable cluster.`,
120141
},
121142
}
122143

123-
fss := cliflag.NamedFlagSets{}
124-
125-
genericFlagSet := fss.FlagSet("generic")
126-
opts.AddFlags(genericFlagSet)
127-
128-
// Set klog flags
129-
logsFlagSet := fss.FlagSet("logs")
130-
klogflag.Add(logsFlagSet)
131144
cmd.AddCommand(sharedcommand.NewCmdVersion(names.KarmadaSchedulerComponentName))
132145

133146
cmd.Flags().AddFlagSet(genericFlagSet)

cmd/scheduler/main.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ import (
2020
"os"
2121

2222
"k8s.io/component-base/cli"
23+
"k8s.io/component-base/logs"
2324
_ "k8s.io/component-base/logs/json/register" // for JSON log format registration
2425
controllerruntime "sigs.k8s.io/controller-runtime"
2526

@@ -30,5 +31,7 @@ func main() {
3031
ctx := controllerruntime.SetupSignalHandler()
3132
command := app.NewSchedulerCommand(ctx)
3233
code := cli.Run(command)
34+
// Ensure any buffered log entries are flushed
35+
logs.FlushLogs()
3336
os.Exit(code)
3437
}

0 commit comments

Comments
 (0)