Skip to content

Commit c44235a

Browse files
authored
Merge pull request #6493 from mszacillo/descheduler-structured-logs
Add JSON logging support for Karmada descheduler component
2 parents ea9bcec + 3751a16 commit c44235a

File tree

3 files changed

+27
-13
lines changed

3 files changed

+27
-13
lines changed

artifacts/deploy/karmada-descheduler.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ spec:
3939
- --scheduler-estimator-ca-file=/etc/karmada/pki/scheduler-estimator-client/ca.crt
4040
- --scheduler-estimator-cert-file=/etc/karmada/pki/scheduler-estimator-client/tls.crt
4141
- --scheduler-estimator-key-file=/etc/karmada/pki/scheduler-estimator-client/tls.key
42+
- --logging-format=json
4243
- --v=4
4344
livenessProbe:
4445
httpGet:

cmd/descheduler/app/descheduler.go

Lines changed: 21 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -33,12 +33,15 @@ import (
3333
"k8s.io/client-go/tools/leaderelection/resourcelock"
3434
"k8s.io/client-go/util/flowcontrol"
3535
cliflag "k8s.io/component-base/cli/flag"
36+
"k8s.io/component-base/logs"
37+
logsv1 "k8s.io/component-base/logs/api/v1"
3638
"k8s.io/component-base/term"
3739
"k8s.io/klog/v2"
3840
ctrlmetrics "sigs.k8s.io/controller-runtime/pkg/metrics"
3941

4042
"github.com/karmada-io/karmada/cmd/descheduler/app/options"
4143
"github.com/karmada-io/karmada/pkg/descheduler"
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/sharedcli"
@@ -80,12 +83,22 @@ const (
8083

8184
// NewDeschedulerCommand creates a *cobra.Command object with default parameters
8285
func NewDeschedulerCommand(ctx context.Context) *cobra.Command {
86+
logConfig := logsv1.NewLoggingConfiguration()
87+
fss := cliflag.NamedFlagSets{}
88+
89+
logsFlagSet := fss.FlagSet("logs")
90+
logs.AddFlags(logsFlagSet, logs.SkipLoggingConfigurationFlags())
91+
logsv1.AddFlags(logConfig, logsFlagSet)
92+
klogflag.Add(logsFlagSet)
93+
94+
genericFlagSet := fss.FlagSet("generic")
8395
opts := options.NewOptions()
96+
opts.AddFlags(genericFlagSet)
8497

8598
cmd := &cobra.Command{
8699
Use: names.KarmadaDeschedulerComponentName,
87100
Long: `The karmada-descheduler evicts replicas from member clusters
88-
if they are failed to be scheduled for a period of time. It relies on
101+
if they are failed to be scheduled for a period of time. It relies on
89102
karmada-scheduler-estimator to get replica status.`,
90103
RunE: func(_ *cobra.Command, _ []string) error {
91104
// validate options
@@ -105,17 +118,15 @@ karmada-scheduler-estimator to get replica status.`,
105118
}
106119
return nil
107120
},
121+
PersistentPreRunE: func(_ *cobra.Command, _ []string) error {
122+
if err := logsv1.ValidateAndApply(logConfig, features.FeatureGate); err != nil {
123+
return err
124+
}
125+
logs.InitLogs()
126+
return nil
127+
},
108128
}
109129

110-
fss := cliflag.NamedFlagSets{}
111-
112-
genericFlagSet := fss.FlagSet("generic")
113-
opts.AddFlags(genericFlagSet)
114-
115-
// Set klog flags
116-
logsFlagSet := fss.FlagSet("logs")
117-
klogflag.Add(logsFlagSet)
118-
119130
cmd.AddCommand(sharedcommand.NewCmdVersion(names.KarmadaDeschedulerComponentName))
120131
cmd.Flags().AddFlagSet(genericFlagSet)
121132
cmd.Flags().AddFlagSet(logsFlagSet)

cmd/descheduler/main.go

Lines changed: 5 additions & 3 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

@@ -28,7 +29,8 @@ import (
2829

2930
func main() {
3031
ctx := controllerruntime.SetupSignalHandler()
31-
command := app.NewDeschedulerCommand(ctx)
32-
code := cli.Run(command)
33-
os.Exit(code)
32+
cmd := app.NewDeschedulerCommand(ctx)
33+
exitCode := cli.Run(cmd)
34+
logs.FlushLogs()
35+
os.Exit(exitCode)
3436
}

0 commit comments

Comments
 (0)