Merge pull request #91522 from SataQiu/add-logging-format-flag-20200528

Add '--logging-format' flag to kube-scheduler
This commit is contained in:
Kubernetes Prow Robot 2020-07-02 19:04:47 -07:00 committed by GitHub
commit 36083e4292
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 34 additions and 7 deletions

View File

@ -39,6 +39,7 @@ go_library(
"//staging/src/k8s.io/component-base/config:go_default_library",
"//staging/src/k8s.io/component-base/config/options:go_default_library",
"//staging/src/k8s.io/component-base/config/v1alpha1:go_default_library",
"//staging/src/k8s.io/component-base/logs:go_default_library",
"//staging/src/k8s.io/component-base/metrics:go_default_library",
"//staging/src/k8s.io/kube-scheduler/config/v1beta1:go_default_library",
"//vendor/github.com/spf13/pflag:go_default_library",
@ -77,6 +78,7 @@ go_test(
"//staging/src/k8s.io/apimachinery/pkg/util/rand:go_default_library",
"//staging/src/k8s.io/apiserver/pkg/server/options:go_default_library",
"//staging/src/k8s.io/component-base/config:go_default_library",
"//staging/src/k8s.io/component-base/logs:go_default_library",
"//vendor/github.com/google/go-cmp/cmp:go_default_library",
"//vendor/github.com/stretchr/testify/assert:go_default_library",
],

View File

@ -41,6 +41,7 @@ import (
componentbaseconfig "k8s.io/component-base/config"
"k8s.io/component-base/config/options"
configv1alpha1 "k8s.io/component-base/config/v1alpha1"
"k8s.io/component-base/logs"
"k8s.io/component-base/metrics"
"k8s.io/klog/v2"
kubeschedulerconfigv1beta1 "k8s.io/kube-scheduler/config/v1beta1"
@ -61,6 +62,7 @@ type Options struct {
Authentication *apiserveroptions.DelegatingAuthenticationOptions
Authorization *apiserveroptions.DelegatingAuthorizationOptions
Metrics *metrics.Options
Logs *logs.Options
Deprecated *DeprecatedOptions
// ConfigFile is the location of the scheduler server's configuration file.
@ -106,6 +108,7 @@ func NewOptions() (*Options, error) {
HardPodAffinitySymmetricWeight: 1,
},
Metrics: metrics.NewOptions(),
Logs: logs.NewOptions(),
}
o.Authentication.TolerateInClusterLookupFailure = true
@ -167,6 +170,7 @@ func (o *Options) Flags() (nfs cliflag.NamedFlagSets) {
options.BindLeaderElectionFlags(&o.ComponentConfig.LeaderElection, nfs.FlagSet("leader election"))
utilfeature.DefaultMutableFeatureGate.AddFlag(nfs.FlagSet("feature gate"))
o.Metrics.AddFlags(nfs.FlagSet("metrics"))
o.Logs.AddFlags(nfs.FlagSet("logs"))
return nfs
}
@ -219,6 +223,7 @@ func (o *Options) ApplyTo(c *schedulerappconfig.Config) error {
}
}
o.Metrics.Apply()
o.Logs.Apply()
return nil
}
@ -244,6 +249,7 @@ func (o *Options) Validate() []error {
errs = append(errs, o.Authorization.Validate()...)
errs = append(errs, o.Deprecated.Validate()...)
errs = append(errs, o.Metrics.Validate()...)
errs = append(errs, o.Logs.Validate()...)
return errs
}

View File

@ -29,13 +29,14 @@ import (
"github.com/google/go-cmp/cmp"
"github.com/stretchr/testify/assert"
"k8s.io/kubernetes/pkg/scheduler/framework/plugins/interpodaffinity"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/runtime"
apiserveroptions "k8s.io/apiserver/pkg/server/options"
componentbaseconfig "k8s.io/component-base/config"
"k8s.io/component-base/logs"
kubeschedulerconfig "k8s.io/kubernetes/pkg/scheduler/apis/config"
"k8s.io/kubernetes/pkg/scheduler/framework/plugins/interpodaffinity"
)
func TestSchedulerOptions(t *testing.T) {
@ -293,6 +294,7 @@ profiles:
RemoteKubeConfigFileOptional: true,
AlwaysAllowPaths: []string{"/healthz"}, // note: this does not match /healthz/ or /healthz/*
},
Logs: logs.NewOptions(),
},
expectedUsername: "config",
expectedConfig: kubeschedulerconfig.KubeSchedulerConfiguration{
@ -337,18 +339,25 @@ profiles:
}
return *cfg
}(),
Logs: logs.NewOptions(),
},
expectedError: "no kind \"KubeSchedulerConfiguration\" is registered for version \"componentconfig/v1alpha1\"",
},
{
name: "unknown version kubescheduler.config.k8s.io/unknown",
options: &Options{ConfigFile: unknownVersionConfig},
name: "unknown version kubescheduler.config.k8s.io/unknown",
options: &Options{
ConfigFile: unknownVersionConfig,
Logs: logs.NewOptions(),
},
expectedError: "no kind \"KubeSchedulerConfiguration\" is registered for version \"kubescheduler.config.k8s.io/unknown\"",
},
{
name: "config file with no version",
options: &Options{ConfigFile: noVersionConfig},
name: "config file with no version",
options: &Options{
ConfigFile: noVersionConfig,
Logs: logs.NewOptions(),
},
expectedError: "Object 'apiVersion' is missing",
},
{
@ -382,6 +391,7 @@ profiles:
RemoteKubeConfigFileOptional: true,
AlwaysAllowPaths: []string{"/healthz"}, // note: this does not match /healthz/ or /healthz/*
},
Logs: logs.NewOptions(),
},
expectedUsername: "flag",
expectedConfig: kubeschedulerconfig.KubeSchedulerConfiguration{
@ -446,6 +456,7 @@ profiles:
RemoteKubeConfigFileOptional: true,
AlwaysAllowPaths: []string{"/healthz"}, // note: this does not match /healthz/ or /healthz/*
},
Logs: logs.NewOptions(),
},
expectedConfig: kubeschedulerconfig.KubeSchedulerConfiguration{
AlgorithmSource: kubeschedulerconfig.SchedulerAlgorithmSource{Provider: &defaultSource},
@ -483,6 +494,7 @@ profiles:
name: "plugin config",
options: &Options{
ConfigFile: pluginConfigFile,
Logs: logs.NewOptions(),
},
expectedUsername: "config",
expectedConfig: kubeschedulerconfig.KubeSchedulerConfiguration{
@ -556,6 +568,7 @@ profiles:
name: "multiple profiles",
options: &Options{
ConfigFile: multiProfilesConfig,
Logs: logs.NewOptions(),
},
expectedUsername: "config",
expectedConfig: kubeschedulerconfig.KubeSchedulerConfiguration{
@ -614,8 +627,10 @@ profiles:
},
},
{
name: "no config",
options: &Options{},
name: "no config",
options: &Options{
Logs: logs.NewOptions(),
},
expectedError: "no configuration has been provided",
},
{
@ -629,6 +644,7 @@ profiles:
Deprecated: &DeprecatedOptions{
HardPodAffinitySymmetricWeight: 5,
},
Logs: logs.NewOptions(),
},
expectedUsername: "flag",
expectedConfig: kubeschedulerconfig.KubeSchedulerConfiguration{
@ -680,6 +696,7 @@ profiles:
SchedulerName: "my-nice-scheduler",
HardPodAffinitySymmetricWeight: 1,
},
Logs: logs.NewOptions(),
},
expectedUsername: "flag",
expectedConfig: kubeschedulerconfig.KubeSchedulerConfiguration{
@ -735,6 +752,7 @@ profiles:
name: "unknown field",
options: &Options{
ConfigFile: unknownFieldConfig,
Logs: logs.NewOptions(),
},
expectedError: "found unknown field: foo",
checkErrFn: runtime.IsStrictDecodingError,
@ -743,6 +761,7 @@ profiles:
name: "duplicate fields",
options: &Options{
ConfigFile: duplicateFieldConfig,
Logs: logs.NewOptions(),
},
expectedError: `key "leaderElect" already set`,
checkErrFn: runtime.IsStrictDecodingError,