Bumping k8s dependencies to 1.13
This commit is contained in:
4
vendor/k8s.io/kubernetes/cmd/kube-scheduler/BUILD
generated
vendored
4
vendor/k8s.io/kubernetes/cmd/kube-scheduler/BUILD
generated
vendored
@@ -22,9 +22,9 @@ go_library(
|
||||
"//cmd/kube-scheduler/app:go_default_library",
|
||||
"//pkg/client/metrics/prometheus:go_default_library",
|
||||
"//pkg/version/prometheus:go_default_library",
|
||||
"//staging/src/k8s.io/apiserver/pkg/util/flag:go_default_library",
|
||||
"//staging/src/k8s.io/apiserver/pkg/util/logs:go_default_library",
|
||||
"//vendor/github.com/spf13/pflag:go_default_library",
|
||||
"//vendor/k8s.io/apiserver/pkg/util/flag:go_default_library",
|
||||
"//vendor/k8s.io/apiserver/pkg/util/logs:go_default_library",
|
||||
],
|
||||
)
|
||||
|
||||
|
34
vendor/k8s.io/kubernetes/cmd/kube-scheduler/app/BUILD
generated
vendored
34
vendor/k8s.io/kubernetes/cmd/kube-scheduler/app/BUILD
generated
vendored
@@ -13,38 +13,38 @@ go_library(
|
||||
"//cmd/kube-scheduler/app/config:go_default_library",
|
||||
"//cmd/kube-scheduler/app/options:go_default_library",
|
||||
"//pkg/api/legacyscheme:go_default_library",
|
||||
"//pkg/apis/componentconfig:go_default_library",
|
||||
"//pkg/controller:go_default_library",
|
||||
"//pkg/features:go_default_library",
|
||||
"//pkg/scheduler:go_default_library",
|
||||
"//pkg/scheduler/algorithmprovider:go_default_library",
|
||||
"//pkg/scheduler/api:go_default_library",
|
||||
"//pkg/scheduler/api/latest:go_default_library",
|
||||
"//pkg/scheduler/apis/config:go_default_library",
|
||||
"//pkg/scheduler/factory:go_default_library",
|
||||
"//pkg/scheduler/metrics:go_default_library",
|
||||
"//pkg/util/configz:go_default_library",
|
||||
"//pkg/util/flag:go_default_library",
|
||||
"//pkg/version:go_default_library",
|
||||
"//pkg/version/verflag:go_default_library",
|
||||
"//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
|
||||
"//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library",
|
||||
"//staging/src/k8s.io/apimachinery/pkg/util/errors:go_default_library",
|
||||
"//staging/src/k8s.io/apimachinery/pkg/util/runtime:go_default_library",
|
||||
"//staging/src/k8s.io/apiserver/pkg/authentication/authenticator:go_default_library",
|
||||
"//staging/src/k8s.io/apiserver/pkg/authorization/authorizer:go_default_library",
|
||||
"//staging/src/k8s.io/apiserver/pkg/endpoints/filters:go_default_library",
|
||||
"//staging/src/k8s.io/apiserver/pkg/endpoints/request:go_default_library",
|
||||
"//staging/src/k8s.io/apiserver/pkg/server/filters:go_default_library",
|
||||
"//staging/src/k8s.io/apiserver/pkg/server/healthz:go_default_library",
|
||||
"//staging/src/k8s.io/apiserver/pkg/server/mux:go_default_library",
|
||||
"//staging/src/k8s.io/apiserver/pkg/server/routes:go_default_library",
|
||||
"//staging/src/k8s.io/apiserver/pkg/util/feature:go_default_library",
|
||||
"//staging/src/k8s.io/client-go/informers/storage/v1:go_default_library",
|
||||
"//staging/src/k8s.io/client-go/kubernetes/typed/core/v1:go_default_library",
|
||||
"//staging/src/k8s.io/client-go/tools/leaderelection:go_default_library",
|
||||
"//vendor/github.com/golang/glog:go_default_library",
|
||||
"//vendor/github.com/prometheus/client_golang/prometheus:go_default_library",
|
||||
"//vendor/github.com/spf13/cobra:go_default_library",
|
||||
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
|
||||
"//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library",
|
||||
"//vendor/k8s.io/apimachinery/pkg/util/errors:go_default_library",
|
||||
"//vendor/k8s.io/apimachinery/pkg/util/runtime:go_default_library",
|
||||
"//vendor/k8s.io/apiserver/pkg/authentication/authenticator:go_default_library",
|
||||
"//vendor/k8s.io/apiserver/pkg/authorization/authorizer:go_default_library",
|
||||
"//vendor/k8s.io/apiserver/pkg/endpoints/filters:go_default_library",
|
||||
"//vendor/k8s.io/apiserver/pkg/endpoints/request:go_default_library",
|
||||
"//vendor/k8s.io/apiserver/pkg/server/filters:go_default_library",
|
||||
"//vendor/k8s.io/apiserver/pkg/server/healthz:go_default_library",
|
||||
"//vendor/k8s.io/apiserver/pkg/server/mux:go_default_library",
|
||||
"//vendor/k8s.io/apiserver/pkg/server/routes:go_default_library",
|
||||
"//vendor/k8s.io/apiserver/pkg/util/feature:go_default_library",
|
||||
"//vendor/k8s.io/client-go/informers/storage/v1:go_default_library",
|
||||
"//vendor/k8s.io/client-go/kubernetes/typed/core/v1:go_default_library",
|
||||
"//vendor/k8s.io/client-go/tools/leaderelection:go_default_library",
|
||||
],
|
||||
)
|
||||
|
||||
|
17
vendor/k8s.io/kubernetes/cmd/kube-scheduler/app/config/BUILD
generated
vendored
17
vendor/k8s.io/kubernetes/cmd/kube-scheduler/app/config/BUILD
generated
vendored
@@ -6,15 +6,14 @@ go_library(
|
||||
importpath = "k8s.io/kubernetes/cmd/kube-scheduler/app/config",
|
||||
visibility = ["//visibility:public"],
|
||||
deps = [
|
||||
"//cmd/controller-manager/app:go_default_library",
|
||||
"//pkg/apis/componentconfig:go_default_library",
|
||||
"//vendor/k8s.io/apiserver/pkg/server:go_default_library",
|
||||
"//vendor/k8s.io/client-go/informers:go_default_library",
|
||||
"//vendor/k8s.io/client-go/informers/core/v1:go_default_library",
|
||||
"//vendor/k8s.io/client-go/kubernetes:go_default_library",
|
||||
"//vendor/k8s.io/client-go/kubernetes/typed/core/v1:go_default_library",
|
||||
"//vendor/k8s.io/client-go/tools/leaderelection:go_default_library",
|
||||
"//vendor/k8s.io/client-go/tools/record:go_default_library",
|
||||
"//pkg/scheduler/apis/config:go_default_library",
|
||||
"//staging/src/k8s.io/apiserver/pkg/server:go_default_library",
|
||||
"//staging/src/k8s.io/client-go/informers:go_default_library",
|
||||
"//staging/src/k8s.io/client-go/informers/core/v1:go_default_library",
|
||||
"//staging/src/k8s.io/client-go/kubernetes:go_default_library",
|
||||
"//staging/src/k8s.io/client-go/kubernetes/typed/core/v1:go_default_library",
|
||||
"//staging/src/k8s.io/client-go/tools/leaderelection:go_default_library",
|
||||
"//staging/src/k8s.io/client-go/tools/record:go_default_library",
|
||||
],
|
||||
)
|
||||
|
||||
|
9
vendor/k8s.io/kubernetes/cmd/kube-scheduler/app/config/config.go
generated
vendored
9
vendor/k8s.io/kubernetes/cmd/kube-scheduler/app/config/config.go
generated
vendored
@@ -24,17 +24,16 @@ import (
|
||||
v1core "k8s.io/client-go/kubernetes/typed/core/v1"
|
||||
"k8s.io/client-go/tools/leaderelection"
|
||||
"k8s.io/client-go/tools/record"
|
||||
"k8s.io/kubernetes/cmd/controller-manager/app"
|
||||
"k8s.io/kubernetes/pkg/apis/componentconfig"
|
||||
kubeschedulerconfig "k8s.io/kubernetes/pkg/scheduler/apis/config"
|
||||
)
|
||||
|
||||
// Config has all the context to run a Scheduler
|
||||
type Config struct {
|
||||
// config is the scheduler server's configuration object.
|
||||
ComponentConfig componentconfig.KubeSchedulerConfiguration
|
||||
ComponentConfig kubeschedulerconfig.KubeSchedulerConfiguration
|
||||
|
||||
InsecureServing *app.InsecureServingInfo // nil will disable serving on an insecure port
|
||||
InsecureMetricsServing *app.InsecureServingInfo // non-nil if metrics should be served independently
|
||||
InsecureServing *apiserver.DeprecatedInsecureServingInfo // nil will disable serving on an insecure port
|
||||
InsecureMetricsServing *apiserver.DeprecatedInsecureServingInfo // non-nil if metrics should be served independently
|
||||
Authentication apiserver.AuthenticationInfo
|
||||
Authorization apiserver.AuthorizationInfo
|
||||
SecureServing *apiserver.SecureServingInfo
|
||||
|
57
vendor/k8s.io/kubernetes/cmd/kube-scheduler/app/options/BUILD
generated
vendored
57
vendor/k8s.io/kubernetes/cmd/kube-scheduler/app/options/BUILD
generated
vendored
@@ -11,32 +11,38 @@ go_library(
|
||||
importpath = "k8s.io/kubernetes/cmd/kube-scheduler/app/options",
|
||||
visibility = ["//visibility:public"],
|
||||
deps = [
|
||||
"//cmd/controller-manager/app/options:go_default_library",
|
||||
"//cmd/kube-scheduler/app/config:go_default_library",
|
||||
"//pkg/api/legacyscheme:go_default_library",
|
||||
"//pkg/apis/componentconfig:go_default_library",
|
||||
"//pkg/apis/componentconfig/v1alpha1:go_default_library",
|
||||
"//pkg/client/leaderelectionconfig:go_default_library",
|
||||
"//pkg/scheduler/apis/config:go_default_library",
|
||||
"//pkg/scheduler/apis/config/scheme:go_default_library",
|
||||
"//pkg/scheduler/apis/config/v1alpha1:go_default_library",
|
||||
"//pkg/scheduler/apis/config/validation:go_default_library",
|
||||
"//pkg/scheduler/factory:go_default_library",
|
||||
"//staging/src/k8s.io/api/core/v1:go_default_library",
|
||||
"//staging/src/k8s.io/apimachinery/pkg/api/meta:go_default_library",
|
||||
"//staging/src/k8s.io/apimachinery/pkg/apis/config:go_default_library",
|
||||
"//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
|
||||
"//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1/unstructured:go_default_library",
|
||||
"//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library",
|
||||
"//staging/src/k8s.io/apimachinery/pkg/runtime/schema:go_default_library",
|
||||
"//staging/src/k8s.io/apimachinery/pkg/runtime/serializer/json:go_default_library",
|
||||
"//staging/src/k8s.io/apimachinery/pkg/util/uuid:go_default_library",
|
||||
"//staging/src/k8s.io/apimachinery/pkg/util/validation/field:go_default_library",
|
||||
"//staging/src/k8s.io/apiserver/pkg/server/options:go_default_library",
|
||||
"//staging/src/k8s.io/apiserver/pkg/util/feature:go_default_library",
|
||||
"//staging/src/k8s.io/client-go/informers:go_default_library",
|
||||
"//staging/src/k8s.io/client-go/kubernetes:go_default_library",
|
||||
"//staging/src/k8s.io/client-go/kubernetes/typed/core/v1:go_default_library",
|
||||
"//staging/src/k8s.io/client-go/rest:go_default_library",
|
||||
"//staging/src/k8s.io/client-go/tools/clientcmd:go_default_library",
|
||||
"//staging/src/k8s.io/client-go/tools/clientcmd/api:go_default_library",
|
||||
"//staging/src/k8s.io/client-go/tools/leaderelection:go_default_library",
|
||||
"//staging/src/k8s.io/client-go/tools/leaderelection/resourcelock:go_default_library",
|
||||
"//staging/src/k8s.io/client-go/tools/record:go_default_library",
|
||||
"//staging/src/k8s.io/kube-scheduler/config/v1alpha1:go_default_library",
|
||||
"//vendor/github.com/golang/glog:go_default_library",
|
||||
"//vendor/github.com/spf13/pflag:go_default_library",
|
||||
"//vendor/k8s.io/api/core/v1:go_default_library",
|
||||
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
|
||||
"//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library",
|
||||
"//vendor/k8s.io/apimachinery/pkg/runtime/serializer:go_default_library",
|
||||
"//vendor/k8s.io/apimachinery/pkg/runtime/serializer/json:go_default_library",
|
||||
"//vendor/k8s.io/apimachinery/pkg/util/uuid:go_default_library",
|
||||
"//vendor/k8s.io/apiserver/pkg/server/options:go_default_library",
|
||||
"//vendor/k8s.io/apiserver/pkg/util/feature:go_default_library",
|
||||
"//vendor/k8s.io/client-go/informers:go_default_library",
|
||||
"//vendor/k8s.io/client-go/kubernetes:go_default_library",
|
||||
"//vendor/k8s.io/client-go/kubernetes/typed/core/v1:go_default_library",
|
||||
"//vendor/k8s.io/client-go/rest:go_default_library",
|
||||
"//vendor/k8s.io/client-go/tools/clientcmd:go_default_library",
|
||||
"//vendor/k8s.io/client-go/tools/clientcmd/api:go_default_library",
|
||||
"//vendor/k8s.io/client-go/tools/leaderelection:go_default_library",
|
||||
"//vendor/k8s.io/client-go/tools/leaderelection/resourcelock:go_default_library",
|
||||
"//vendor/k8s.io/client-go/tools/record:go_default_library",
|
||||
],
|
||||
)
|
||||
|
||||
@@ -57,14 +63,19 @@ filegroup(
|
||||
go_test(
|
||||
name = "go_default_test",
|
||||
srcs = [
|
||||
"deprecated_test.go",
|
||||
"insecure_serving_test.go",
|
||||
"options_test.go",
|
||||
],
|
||||
embed = [":go_default_library"],
|
||||
deps = [
|
||||
"//cmd/controller-manager/app/options:go_default_library",
|
||||
"//cmd/kube-scheduler/app/config:go_default_library",
|
||||
"//pkg/apis/componentconfig:go_default_library",
|
||||
"//vendor/k8s.io/apimachinery/pkg/util/rand:go_default_library",
|
||||
"//pkg/scheduler/apis/config:go_default_library",
|
||||
"//staging/src/k8s.io/apimachinery/pkg/apis/config:go_default_library",
|
||||
"//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
|
||||
"//staging/src/k8s.io/apimachinery/pkg/util/diff:go_default_library",
|
||||
"//staging/src/k8s.io/apimachinery/pkg/util/rand:go_default_library",
|
||||
"//staging/src/k8s.io/apiserver/pkg/apis/config:go_default_library",
|
||||
"//staging/src/k8s.io/apiserver/pkg/server/options:go_default_library",
|
||||
],
|
||||
)
|
||||
|
82
vendor/k8s.io/kubernetes/cmd/kube-scheduler/app/options/configfile.go
generated
vendored
82
vendor/k8s.io/kubernetes/cmd/kube-scheduler/app/options/configfile.go
generated
vendored
@@ -17,29 +17,23 @@ limitations under the License.
|
||||
package options
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"errors"
|
||||
"fmt"
|
||||
"io/ioutil"
|
||||
"os"
|
||||
|
||||
"k8s.io/apimachinery/pkg/api/meta"
|
||||
"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
|
||||
"k8s.io/apimachinery/pkg/runtime"
|
||||
"k8s.io/apimachinery/pkg/runtime/serializer"
|
||||
"k8s.io/apimachinery/pkg/runtime/schema"
|
||||
"k8s.io/apimachinery/pkg/runtime/serializer/json"
|
||||
"k8s.io/kubernetes/pkg/apis/componentconfig"
|
||||
componentconfigv1alpha1 "k8s.io/kubernetes/pkg/apis/componentconfig/v1alpha1"
|
||||
kubeschedulerconfig "k8s.io/kubernetes/pkg/scheduler/apis/config"
|
||||
kubeschedulerscheme "k8s.io/kubernetes/pkg/scheduler/apis/config/scheme"
|
||||
kubeschedulerconfigv1alpha1 "k8s.io/kubernetes/pkg/scheduler/apis/config/v1alpha1"
|
||||
)
|
||||
|
||||
var (
|
||||
configScheme = runtime.NewScheme()
|
||||
configCodecs = serializer.NewCodecFactory(configScheme)
|
||||
)
|
||||
|
||||
func init() {
|
||||
componentconfig.AddToScheme(configScheme)
|
||||
componentconfigv1alpha1.AddToScheme(configScheme)
|
||||
}
|
||||
|
||||
func loadConfigFromFile(file string) (*componentconfig.KubeSchedulerConfiguration, error) {
|
||||
func loadConfigFromFile(file string) (*kubeschedulerconfig.KubeSchedulerConfiguration, error) {
|
||||
data, err := ioutil.ReadFile(file)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
@@ -48,22 +42,58 @@ func loadConfigFromFile(file string) (*componentconfig.KubeSchedulerConfiguratio
|
||||
return loadConfig(data)
|
||||
}
|
||||
|
||||
func loadConfig(data []byte) (*componentconfig.KubeSchedulerConfiguration, error) {
|
||||
configObj, gvk, err := configCodecs.UniversalDecoder().Decode(data, nil, nil)
|
||||
if err != nil {
|
||||
func loadConfig(data []byte) (*kubeschedulerconfig.KubeSchedulerConfiguration, error) {
|
||||
configObj := &kubeschedulerconfig.KubeSchedulerConfiguration{}
|
||||
if err := runtime.DecodeInto(kubeschedulerscheme.Codecs.UniversalDecoder(), data, configObj); err != nil {
|
||||
|
||||
// if this is a componentconfig/v1alpha1 KubeSchedulerConfiguration object, coerce it to kubescheduler.config.k8s.io/v1alpha1 with a warning
|
||||
// TODO: drop this block in 1.13
|
||||
if runtime.IsNotRegisteredError(err) {
|
||||
originalErr := err
|
||||
var (
|
||||
u = &unstructured.Unstructured{}
|
||||
codec = json.NewYAMLSerializer(json.DefaultMetaFactory, kubeschedulerscheme.Scheme, kubeschedulerscheme.Scheme)
|
||||
legacyConfigGVK = schema.GroupVersionKind{Group: "componentconfig", Version: "v1alpha1", Kind: "KubeSchedulerConfiguration"}
|
||||
)
|
||||
// attempt to decode to an unstructured object
|
||||
obj, gvk, err := codec.Decode(data, nil, u)
|
||||
|
||||
// if this errored, or the object we read was not the legacy alpha gvk, return the original error
|
||||
if err != nil || gvk == nil || *gvk != legacyConfigGVK {
|
||||
return nil, originalErr
|
||||
}
|
||||
|
||||
fmt.Printf("WARNING: the provided config file is an unsupported apiVersion (%q), which will be removed in future releases\n\n", legacyConfigGVK.GroupVersion().String())
|
||||
fmt.Printf("WARNING: switch to command-line flags or update your config file apiVersion to %q\n\n", kubeschedulerconfigv1alpha1.SchemeGroupVersion.String())
|
||||
fmt.Printf("WARNING: apiVersions at alpha-level are not guaranteed to be supported in future releases\n\n")
|
||||
|
||||
// attempt to coerce to the new alpha gvk
|
||||
if err := meta.NewAccessor().SetAPIVersion(obj, kubeschedulerconfigv1alpha1.SchemeGroupVersion.String()); err != nil {
|
||||
// return the original error on failure
|
||||
return nil, originalErr
|
||||
}
|
||||
|
||||
// attempt to encode the coerced apiVersion back to bytes
|
||||
buffer := bytes.NewBuffer([]byte{})
|
||||
if err := codec.Encode(obj, buffer); err != nil {
|
||||
// return the original error on failure
|
||||
return nil, originalErr
|
||||
}
|
||||
|
||||
// re-attempt to load the coerced apiVersion
|
||||
return loadConfig(buffer.Bytes())
|
||||
}
|
||||
|
||||
return nil, err
|
||||
}
|
||||
config, ok := configObj.(*componentconfig.KubeSchedulerConfiguration)
|
||||
if !ok {
|
||||
return nil, fmt.Errorf("got unexpected config type: %v", gvk)
|
||||
}
|
||||
return config, nil
|
||||
|
||||
return configObj, nil
|
||||
}
|
||||
|
||||
// WriteConfigFile writes the config into the given file name as YAML.
|
||||
func WriteConfigFile(fileName string, cfg *componentconfig.KubeSchedulerConfiguration) error {
|
||||
func WriteConfigFile(fileName string, cfg *kubeschedulerconfig.KubeSchedulerConfiguration) error {
|
||||
var encoder runtime.Encoder
|
||||
mediaTypes := configCodecs.SupportedMediaTypes()
|
||||
mediaTypes := kubeschedulerscheme.Codecs.SupportedMediaTypes()
|
||||
for _, info := range mediaTypes {
|
||||
if info.MediaType == "application/yaml" {
|
||||
encoder = info.Serializer
|
||||
@@ -73,8 +103,8 @@ func WriteConfigFile(fileName string, cfg *componentconfig.KubeSchedulerConfigur
|
||||
if encoder == nil {
|
||||
return errors.New("unable to locate yaml encoder")
|
||||
}
|
||||
encoder = json.NewYAMLSerializer(json.DefaultMetaFactory, configScheme, configScheme)
|
||||
encoder = configCodecs.EncoderForVersion(encoder, componentconfigv1alpha1.SchemeGroupVersion)
|
||||
encoder = json.NewYAMLSerializer(json.DefaultMetaFactory, kubeschedulerscheme.Scheme, kubeschedulerscheme.Scheme)
|
||||
encoder = kubeschedulerscheme.Codecs.EncoderForVersion(encoder, kubeschedulerconfigv1alpha1.SchemeGroupVersion)
|
||||
|
||||
configFile, err := os.Create(fileName)
|
||||
if err != nil {
|
||||
|
37
vendor/k8s.io/kubernetes/cmd/kube-scheduler/app/options/deprecated.go
generated
vendored
37
vendor/k8s.io/kubernetes/cmd/kube-scheduler/app/options/deprecated.go
generated
vendored
@@ -18,10 +18,10 @@ package options
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
|
||||
"github.com/spf13/pflag"
|
||||
|
||||
"k8s.io/kubernetes/pkg/apis/componentconfig"
|
||||
"k8s.io/apimachinery/pkg/util/validation/field"
|
||||
kubeschedulerconfig "k8s.io/kubernetes/pkg/scheduler/apis/config"
|
||||
"k8s.io/kubernetes/pkg/scheduler/factory"
|
||||
)
|
||||
|
||||
@@ -38,23 +38,22 @@ type DeprecatedOptions struct {
|
||||
}
|
||||
|
||||
// AddFlags adds flags for the deprecated options.
|
||||
func (o *DeprecatedOptions) AddFlags(fs *pflag.FlagSet, cfg *componentconfig.KubeSchedulerConfiguration) {
|
||||
func (o *DeprecatedOptions) AddFlags(fs *pflag.FlagSet, cfg *kubeschedulerconfig.KubeSchedulerConfiguration) {
|
||||
if o == nil {
|
||||
return
|
||||
}
|
||||
|
||||
// TODO: unify deprecation mechanism, string prefix or MarkDeprecated (the latter hides the flag. We also don't want that).
|
||||
|
||||
fs.StringVar(&o.AlgorithmProvider, "algorithm-provider", o.AlgorithmProvider, "DEPRECATED: the scheduling algorithm provider to use, one of: "+factory.ListAlgorithmProviders())
|
||||
fs.StringVar(&o.PolicyConfigFile, "policy-config-file", o.PolicyConfigFile, "DEPRECATED: file with scheduler policy configuration. This file is used if policy ConfigMap is not provided or --use-legacy-policy-config=true")
|
||||
usage := fmt.Sprintf("DEPRECATED: name of the ConfigMap object that contains scheduler's policy configuration. It must exist in the system namespace before scheduler initialization if --use-legacy-policy-config=false. The config must be provided as the value of an element in 'Data' map with the key='%v'", componentconfig.SchedulerPolicyConfigMapKey)
|
||||
usage := fmt.Sprintf("DEPRECATED: name of the ConfigMap object that contains scheduler's policy configuration. It must exist in the system namespace before scheduler initialization if --use-legacy-policy-config=false. The config must be provided as the value of an element in 'Data' map with the key='%v'", kubeschedulerconfig.SchedulerPolicyConfigMapKey)
|
||||
fs.StringVar(&o.PolicyConfigMapName, "policy-configmap", o.PolicyConfigMapName, usage)
|
||||
fs.StringVar(&o.PolicyConfigMapNamespace, "policy-configmap-namespace", o.PolicyConfigMapNamespace, "DEPRECATED: the namespace where policy ConfigMap is located. The kube-system namespace will be used if this is not provided or is empty.")
|
||||
fs.BoolVar(&o.UseLegacyPolicyConfig, "use-legacy-policy-config", o.UseLegacyPolicyConfig, "DEPRECATED: when set to true, scheduler will ignore policy ConfigMap and uses policy config file")
|
||||
|
||||
fs.BoolVar(&cfg.EnableProfiling, "profiling", cfg.EnableProfiling, "DEPRECATED: enable profiling via web interface host:port/debug/pprof/")
|
||||
fs.BoolVar(&cfg.EnableContentionProfiling, "contention-profiling", cfg.EnableContentionProfiling, "DEPRECATED: enable lock contention profiling, if profiling is enabled")
|
||||
fs.StringVar(&cfg.ClientConnection.KubeConfigFile, "kubeconfig", cfg.ClientConnection.KubeConfigFile, "DEPRECATED: path to kubeconfig file with authorization and master location information.")
|
||||
fs.StringVar(&cfg.ClientConnection.Kubeconfig, "kubeconfig", cfg.ClientConnection.Kubeconfig, "DEPRECATED: path to kubeconfig file with authorization and master location information.")
|
||||
fs.StringVar(&cfg.ClientConnection.ContentType, "kube-api-content-type", cfg.ClientConnection.ContentType, "DEPRECATED: content type of requests sent to apiserver.")
|
||||
fs.Float32Var(&cfg.ClientConnection.QPS, "kube-api-qps", cfg.ClientConnection.QPS, "DEPRECATED: QPS to use while talking with kubernetes apiserver")
|
||||
fs.Int32Var(&cfg.ClientConnection.Burst, "kube-api-burst", cfg.ClientConnection.Burst, "DEPRECATED: burst to use while talking with kubernetes apiserver")
|
||||
@@ -64,7 +63,7 @@ func (o *DeprecatedOptions) AddFlags(fs *pflag.FlagSet, cfg *componentconfig.Kub
|
||||
|
||||
fs.Int32Var(&cfg.HardPodAffinitySymmetricWeight, "hard-pod-affinity-symmetric-weight", cfg.HardPodAffinitySymmetricWeight,
|
||||
"RequiredDuringScheduling affinity is not symmetric, but there is an implicit PreferredDuringScheduling affinity rule corresponding "+
|
||||
"to every RequiredDuringScheduling affinity rule. --hard-pod-affinity-symmetric-weight represents the weight of implicit PreferredDuringScheduling affinity rule.")
|
||||
"to every RequiredDuringScheduling affinity rule. --hard-pod-affinity-symmetric-weight represents the weight of implicit PreferredDuringScheduling affinity rule. Must be in the range 0-100.")
|
||||
fs.MarkDeprecated("hard-pod-affinity-symmetric-weight", "This option was moved to the policy configuration file")
|
||||
fs.StringVar(&cfg.FailureDomains, "failure-domains", cfg.FailureDomains, "Indicate the \"all topologies\" set for an empty topologyKey when it's used for PreferredDuringScheduling pod anti-affinity.")
|
||||
fs.MarkDeprecated("failure-domains", "Doesn't have any effect. Will be removed in future version.")
|
||||
@@ -72,10 +71,12 @@ func (o *DeprecatedOptions) AddFlags(fs *pflag.FlagSet, cfg *componentconfig.Kub
|
||||
|
||||
// Validate validates the deprecated scheduler options.
|
||||
func (o *DeprecatedOptions) Validate() []error {
|
||||
if o == nil {
|
||||
return nil
|
||||
var errs []error
|
||||
|
||||
if o.UseLegacyPolicyConfig && len(o.PolicyConfigFile) == 0 {
|
||||
errs = append(errs, field.Required(field.NewPath("policyConfigFile"), "required when --use-legacy-policy-config is true"))
|
||||
}
|
||||
return nil
|
||||
return errs
|
||||
}
|
||||
|
||||
// ApplyTo sets cfg.AlgorithmSource from flags passed on the command line in the following precedence order:
|
||||
@@ -83,31 +84,31 @@ func (o *DeprecatedOptions) Validate() []error {
|
||||
// 1. --use-legacy-policy-config to use a policy file.
|
||||
// 2. --policy-configmap to use a policy config map value.
|
||||
// 3. --algorithm-provider to use a named algorithm provider.
|
||||
func (o *DeprecatedOptions) ApplyTo(cfg *componentconfig.KubeSchedulerConfiguration) error {
|
||||
func (o *DeprecatedOptions) ApplyTo(cfg *kubeschedulerconfig.KubeSchedulerConfiguration) error {
|
||||
if o == nil {
|
||||
return nil
|
||||
}
|
||||
|
||||
switch {
|
||||
case o.UseLegacyPolicyConfig || (len(o.PolicyConfigFile) > 0 && o.PolicyConfigMapName == ""):
|
||||
cfg.AlgorithmSource = componentconfig.SchedulerAlgorithmSource{
|
||||
Policy: &componentconfig.SchedulerPolicySource{
|
||||
File: &componentconfig.SchedulerPolicyFileSource{
|
||||
cfg.AlgorithmSource = kubeschedulerconfig.SchedulerAlgorithmSource{
|
||||
Policy: &kubeschedulerconfig.SchedulerPolicySource{
|
||||
File: &kubeschedulerconfig.SchedulerPolicyFileSource{
|
||||
Path: o.PolicyConfigFile,
|
||||
},
|
||||
},
|
||||
}
|
||||
case len(o.PolicyConfigMapName) > 0:
|
||||
cfg.AlgorithmSource = componentconfig.SchedulerAlgorithmSource{
|
||||
Policy: &componentconfig.SchedulerPolicySource{
|
||||
ConfigMap: &componentconfig.SchedulerPolicyConfigMapSource{
|
||||
cfg.AlgorithmSource = kubeschedulerconfig.SchedulerAlgorithmSource{
|
||||
Policy: &kubeschedulerconfig.SchedulerPolicySource{
|
||||
ConfigMap: &kubeschedulerconfig.SchedulerPolicyConfigMapSource{
|
||||
Name: o.PolicyConfigMapName,
|
||||
Namespace: o.PolicyConfigMapNamespace,
|
||||
},
|
||||
},
|
||||
}
|
||||
case len(o.AlgorithmProvider) > 0:
|
||||
cfg.AlgorithmSource = componentconfig.SchedulerAlgorithmSource{
|
||||
cfg.AlgorithmSource = kubeschedulerconfig.SchedulerAlgorithmSource{
|
||||
Provider: &o.AlgorithmProvider,
|
||||
}
|
||||
}
|
||||
|
55
vendor/k8s.io/kubernetes/cmd/kube-scheduler/app/options/deprecated_test.go
generated
vendored
Normal file
55
vendor/k8s.io/kubernetes/cmd/kube-scheduler/app/options/deprecated_test.go
generated
vendored
Normal file
@@ -0,0 +1,55 @@
|
||||
/*
|
||||
Copyright 2018 The Kubernetes Authors.
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
*/
|
||||
|
||||
package options
|
||||
|
||||
import (
|
||||
"testing"
|
||||
)
|
||||
|
||||
func TestValidateDeprecatedKubeSchedulerConfiguration(t *testing.T) {
|
||||
scenarios := map[string]struct {
|
||||
expectedToFail bool
|
||||
config *DeprecatedOptions
|
||||
}{
|
||||
"good": {
|
||||
expectedToFail: false,
|
||||
config: &DeprecatedOptions{
|
||||
PolicyConfigFile: "/some/file",
|
||||
UseLegacyPolicyConfig: true,
|
||||
AlgorithmProvider: "",
|
||||
},
|
||||
},
|
||||
"bad-policy-config-file-null": {
|
||||
expectedToFail: true,
|
||||
config: &DeprecatedOptions{
|
||||
PolicyConfigFile: "",
|
||||
UseLegacyPolicyConfig: true,
|
||||
AlgorithmProvider: "",
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
for name, scenario := range scenarios {
|
||||
errs := scenario.config.Validate()
|
||||
if len(errs) == 0 && scenario.expectedToFail {
|
||||
t.Errorf("Unexpected success for scenario: %s", name)
|
||||
}
|
||||
if len(errs) > 0 && !scenario.expectedToFail {
|
||||
t.Errorf("Unexpected failure for scenario: %s - %+v", name, errs)
|
||||
}
|
||||
}
|
||||
}
|
32
vendor/k8s.io/kubernetes/cmd/kube-scheduler/app/options/insecure_serving.go
generated
vendored
32
vendor/k8s.io/kubernetes/cmd/kube-scheduler/app/options/insecure_serving.go
generated
vendored
@@ -23,16 +23,16 @@ import (
|
||||
|
||||
"github.com/spf13/pflag"
|
||||
|
||||
controlleroptions "k8s.io/kubernetes/cmd/controller-manager/app/options"
|
||||
apiserveroptions "k8s.io/apiserver/pkg/server/options"
|
||||
schedulerappconfig "k8s.io/kubernetes/cmd/kube-scheduler/app/config"
|
||||
"k8s.io/kubernetes/pkg/apis/componentconfig"
|
||||
kubeschedulerconfig "k8s.io/kubernetes/pkg/scheduler/apis/config"
|
||||
)
|
||||
|
||||
// CombinedInsecureServingOptions sets up up to two insecure listeners for healthz and metrics. The flags
|
||||
// override the ComponentConfig and InsecureServingOptions values for both.
|
||||
// override the ComponentConfig and DeprecatedInsecureServingOptions values for both.
|
||||
type CombinedInsecureServingOptions struct {
|
||||
Healthz *controlleroptions.InsecureServingOptions
|
||||
Metrics *controlleroptions.InsecureServingOptions
|
||||
Healthz *apiserveroptions.DeprecatedInsecureServingOptions
|
||||
Metrics *apiserveroptions.DeprecatedInsecureServingOptions
|
||||
|
||||
BindPort int // overrides the structs above on ApplyTo, ignored on ApplyToFromLoadedConfig
|
||||
BindAddress string // overrides the structs above on ApplyTo, ignored on ApplyToFromLoadedConfig
|
||||
@@ -52,11 +52,11 @@ func (o *CombinedInsecureServingOptions) AddFlags(fs *pflag.FlagSet) {
|
||||
// fs.MarkDeprecated("port", "see --secure-port instead.")
|
||||
}
|
||||
|
||||
func (o *CombinedInsecureServingOptions) applyTo(c *schedulerappconfig.Config, componentConfig *componentconfig.KubeSchedulerConfiguration) error {
|
||||
if err := updateAddressFromInsecureServingOptions(&componentConfig.HealthzBindAddress, o.Healthz); err != nil {
|
||||
func (o *CombinedInsecureServingOptions) applyTo(c *schedulerappconfig.Config, componentConfig *kubeschedulerconfig.KubeSchedulerConfiguration) error {
|
||||
if err := updateAddressFromDeprecatedInsecureServingOptions(&componentConfig.HealthzBindAddress, o.Healthz); err != nil {
|
||||
return err
|
||||
}
|
||||
if err := updateAddressFromInsecureServingOptions(&componentConfig.MetricsBindAddress, o.Metrics); err != nil {
|
||||
if err := updateAddressFromDeprecatedInsecureServingOptions(&componentConfig.MetricsBindAddress, o.Metrics); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
@@ -73,7 +73,7 @@ func (o *CombinedInsecureServingOptions) applyTo(c *schedulerappconfig.Config, c
|
||||
}
|
||||
|
||||
// ApplyTo applies the insecure serving options to the given scheduler app configuration, and updates the componentConfig.
|
||||
func (o *CombinedInsecureServingOptions) ApplyTo(c *schedulerappconfig.Config, componentConfig *componentconfig.KubeSchedulerConfiguration) error {
|
||||
func (o *CombinedInsecureServingOptions) ApplyTo(c *schedulerappconfig.Config, componentConfig *kubeschedulerconfig.KubeSchedulerConfiguration) error {
|
||||
if o == nil {
|
||||
componentConfig.HealthzBindAddress = ""
|
||||
componentConfig.MetricsBindAddress = ""
|
||||
@@ -93,22 +93,22 @@ func (o *CombinedInsecureServingOptions) ApplyTo(c *schedulerappconfig.Config, c
|
||||
}
|
||||
|
||||
// ApplyToFromLoadedConfig updates the insecure serving options from the component config and then appies it to the given scheduler app configuration.
|
||||
func (o *CombinedInsecureServingOptions) ApplyToFromLoadedConfig(c *schedulerappconfig.Config, componentConfig *componentconfig.KubeSchedulerConfiguration) error {
|
||||
func (o *CombinedInsecureServingOptions) ApplyToFromLoadedConfig(c *schedulerappconfig.Config, componentConfig *kubeschedulerconfig.KubeSchedulerConfiguration) error {
|
||||
if o == nil {
|
||||
return nil
|
||||
}
|
||||
|
||||
if err := updateInsecureServingOptionsFromAddress(o.Healthz, componentConfig.HealthzBindAddress); err != nil {
|
||||
if err := updateDeprecatedInsecureServingOptionsFromAddress(o.Healthz, componentConfig.HealthzBindAddress); err != nil {
|
||||
return fmt.Errorf("invalid healthz address: %v", err)
|
||||
}
|
||||
if err := updateInsecureServingOptionsFromAddress(o.Metrics, componentConfig.MetricsBindAddress); err != nil {
|
||||
if err := updateDeprecatedInsecureServingOptionsFromAddress(o.Metrics, componentConfig.MetricsBindAddress); err != nil {
|
||||
return fmt.Errorf("invalid metrics address: %v", err)
|
||||
}
|
||||
|
||||
return o.applyTo(c, componentConfig)
|
||||
}
|
||||
|
||||
func updateAddressFromInsecureServingOptions(addr *string, is *controlleroptions.InsecureServingOptions) error {
|
||||
func updateAddressFromDeprecatedInsecureServingOptions(addr *string, is *apiserveroptions.DeprecatedInsecureServingOptions) error {
|
||||
if is == nil {
|
||||
*addr = ""
|
||||
} else {
|
||||
@@ -124,7 +124,7 @@ func updateAddressFromInsecureServingOptions(addr *string, is *controlleroptions
|
||||
return nil
|
||||
}
|
||||
|
||||
func updateInsecureServingOptionsFromAddress(is *controlleroptions.InsecureServingOptions, addr string) error {
|
||||
func updateDeprecatedInsecureServingOptionsFromAddress(is *apiserveroptions.DeprecatedInsecureServingOptions, addr string) error {
|
||||
if is == nil {
|
||||
return nil
|
||||
}
|
||||
@@ -152,8 +152,8 @@ func (o *CombinedInsecureServingOptions) Validate() []error {
|
||||
|
||||
errors := []error{}
|
||||
|
||||
if o.BindPort < 0 || o.BindPort > 32767 {
|
||||
errors = append(errors, fmt.Errorf("--port %v must be between 0 and 32767, inclusive. 0 for turning off insecure (HTTP) port", o.BindPort))
|
||||
if o.BindPort < 0 || o.BindPort > 65335 {
|
||||
errors = append(errors, fmt.Errorf("--port %v must be between 0 and 65335, inclusive. 0 for turning off insecure (HTTP) port", o.BindPort))
|
||||
}
|
||||
|
||||
if len(o.BindAddress) > 0 && net.ParseIP(o.BindAddress) == nil {
|
||||
|
48
vendor/k8s.io/kubernetes/cmd/kube-scheduler/app/options/insecure_serving_test.go
generated
vendored
48
vendor/k8s.io/kubernetes/cmd/kube-scheduler/app/options/insecure_serving_test.go
generated
vendored
@@ -23,9 +23,9 @@ import (
|
||||
"testing"
|
||||
|
||||
"k8s.io/apimachinery/pkg/util/rand"
|
||||
"k8s.io/kubernetes/cmd/controller-manager/app/options"
|
||||
apiserveroptions "k8s.io/apiserver/pkg/server/options"
|
||||
schedulerappconfig "k8s.io/kubernetes/cmd/kube-scheduler/app/config"
|
||||
"k8s.io/kubernetes/pkg/apis/componentconfig"
|
||||
kubeschedulerconfig "k8s.io/kubernetes/pkg/scheduler/apis/config"
|
||||
)
|
||||
|
||||
func TestOptions_ApplyTo(t *testing.T) {
|
||||
@@ -41,13 +41,13 @@ func TestOptions_ApplyTo(t *testing.T) {
|
||||
{
|
||||
name: "no config, zero port",
|
||||
options: Options{
|
||||
ComponentConfig: componentconfig.KubeSchedulerConfiguration{
|
||||
ComponentConfig: kubeschedulerconfig.KubeSchedulerConfiguration{
|
||||
HealthzBindAddress: "1.2.3.4:1234",
|
||||
MetricsBindAddress: "1.2.3.4:1234",
|
||||
},
|
||||
CombinedInsecureServing: &CombinedInsecureServingOptions{
|
||||
Healthz: &options.InsecureServingOptions{},
|
||||
Metrics: &options.InsecureServingOptions{},
|
||||
Healthz: &apiserveroptions.DeprecatedInsecureServingOptions{},
|
||||
Metrics: &apiserveroptions.DeprecatedInsecureServingOptions{},
|
||||
BindPort: 0,
|
||||
},
|
||||
},
|
||||
@@ -56,12 +56,12 @@ func TestOptions_ApplyTo(t *testing.T) {
|
||||
{
|
||||
name: "config loaded, non-nil healthz",
|
||||
options: Options{
|
||||
ComponentConfig: componentconfig.KubeSchedulerConfiguration{
|
||||
ComponentConfig: kubeschedulerconfig.KubeSchedulerConfiguration{
|
||||
HealthzBindAddress: "1.2.3.4:1234",
|
||||
MetricsBindAddress: "1.2.3.4:1234",
|
||||
},
|
||||
CombinedInsecureServing: &CombinedInsecureServingOptions{
|
||||
Healthz: &options.InsecureServingOptions{},
|
||||
Healthz: &apiserveroptions.DeprecatedInsecureServingOptions{},
|
||||
BindPort: 0,
|
||||
},
|
||||
},
|
||||
@@ -74,12 +74,12 @@ func TestOptions_ApplyTo(t *testing.T) {
|
||||
{
|
||||
name: "config loaded, non-nil metrics",
|
||||
options: Options{
|
||||
ComponentConfig: componentconfig.KubeSchedulerConfiguration{
|
||||
ComponentConfig: kubeschedulerconfig.KubeSchedulerConfiguration{
|
||||
HealthzBindAddress: "1.2.3.4:1234",
|
||||
MetricsBindAddress: "1.2.3.4:1234",
|
||||
},
|
||||
CombinedInsecureServing: &CombinedInsecureServingOptions{
|
||||
Metrics: &options.InsecureServingOptions{},
|
||||
Metrics: &apiserveroptions.DeprecatedInsecureServingOptions{},
|
||||
BindPort: 0,
|
||||
},
|
||||
},
|
||||
@@ -92,13 +92,13 @@ func TestOptions_ApplyTo(t *testing.T) {
|
||||
{
|
||||
name: "config loaded, all set, zero BindPort",
|
||||
options: Options{
|
||||
ComponentConfig: componentconfig.KubeSchedulerConfiguration{
|
||||
ComponentConfig: kubeschedulerconfig.KubeSchedulerConfiguration{
|
||||
HealthzBindAddress: "1.2.3.4:1234",
|
||||
MetricsBindAddress: "1.2.3.4:1234",
|
||||
},
|
||||
CombinedInsecureServing: &CombinedInsecureServingOptions{
|
||||
Healthz: &options.InsecureServingOptions{},
|
||||
Metrics: &options.InsecureServingOptions{},
|
||||
Healthz: &apiserveroptions.DeprecatedInsecureServingOptions{},
|
||||
Metrics: &apiserveroptions.DeprecatedInsecureServingOptions{},
|
||||
BindPort: 0,
|
||||
},
|
||||
},
|
||||
@@ -113,13 +113,13 @@ func TestOptions_ApplyTo(t *testing.T) {
|
||||
{
|
||||
name: "config loaded, all set, different addresses",
|
||||
options: Options{
|
||||
ComponentConfig: componentconfig.KubeSchedulerConfiguration{
|
||||
ComponentConfig: kubeschedulerconfig.KubeSchedulerConfiguration{
|
||||
HealthzBindAddress: "1.2.3.4:1234",
|
||||
MetricsBindAddress: "1.2.3.4:1235",
|
||||
},
|
||||
CombinedInsecureServing: &CombinedInsecureServingOptions{
|
||||
Healthz: &options.InsecureServingOptions{},
|
||||
Metrics: &options.InsecureServingOptions{},
|
||||
Healthz: &apiserveroptions.DeprecatedInsecureServingOptions{},
|
||||
Metrics: &apiserveroptions.DeprecatedInsecureServingOptions{},
|
||||
BindPort: 0,
|
||||
},
|
||||
},
|
||||
@@ -136,13 +136,13 @@ func TestOptions_ApplyTo(t *testing.T) {
|
||||
{
|
||||
name: "no config, all set, port passed",
|
||||
options: Options{
|
||||
ComponentConfig: componentconfig.KubeSchedulerConfiguration{
|
||||
ComponentConfig: kubeschedulerconfig.KubeSchedulerConfiguration{
|
||||
HealthzBindAddress: "1.2.3.4:1234",
|
||||
MetricsBindAddress: "1.2.3.4:1234",
|
||||
},
|
||||
CombinedInsecureServing: &CombinedInsecureServingOptions{
|
||||
Healthz: &options.InsecureServingOptions{},
|
||||
Metrics: &options.InsecureServingOptions{},
|
||||
Healthz: &apiserveroptions.DeprecatedInsecureServingOptions{},
|
||||
Metrics: &apiserveroptions.DeprecatedInsecureServingOptions{},
|
||||
BindPort: 1236,
|
||||
BindAddress: "1.2.3.4",
|
||||
},
|
||||
@@ -158,13 +158,13 @@ func TestOptions_ApplyTo(t *testing.T) {
|
||||
{
|
||||
name: "no config, all set, address passed",
|
||||
options: Options{
|
||||
ComponentConfig: componentconfig.KubeSchedulerConfiguration{
|
||||
ComponentConfig: kubeschedulerconfig.KubeSchedulerConfiguration{
|
||||
HealthzBindAddress: "1.2.3.4:1234",
|
||||
MetricsBindAddress: "1.2.3.4:1234",
|
||||
},
|
||||
CombinedInsecureServing: &CombinedInsecureServingOptions{
|
||||
Healthz: &options.InsecureServingOptions{},
|
||||
Metrics: &options.InsecureServingOptions{},
|
||||
Healthz: &apiserveroptions.DeprecatedInsecureServingOptions{},
|
||||
Metrics: &apiserveroptions.DeprecatedInsecureServingOptions{},
|
||||
BindAddress: "2.3.4.5",
|
||||
BindPort: 1234,
|
||||
},
|
||||
@@ -180,13 +180,13 @@ func TestOptions_ApplyTo(t *testing.T) {
|
||||
{
|
||||
name: "no config, all set, zero port passed",
|
||||
options: Options{
|
||||
ComponentConfig: componentconfig.KubeSchedulerConfiguration{
|
||||
ComponentConfig: kubeschedulerconfig.KubeSchedulerConfiguration{
|
||||
HealthzBindAddress: "1.2.3.4:1234",
|
||||
MetricsBindAddress: "1.2.3.4:1234",
|
||||
},
|
||||
CombinedInsecureServing: &CombinedInsecureServingOptions{
|
||||
Healthz: &options.InsecureServingOptions{},
|
||||
Metrics: &options.InsecureServingOptions{},
|
||||
Healthz: &apiserveroptions.DeprecatedInsecureServingOptions{},
|
||||
Metrics: &apiserveroptions.DeprecatedInsecureServingOptions{},
|
||||
BindAddress: "2.3.4.5",
|
||||
BindPort: 0,
|
||||
},
|
||||
|
46
vendor/k8s.io/kubernetes/cmd/kube-scheduler/app/options/options.go
generated
vendored
46
vendor/k8s.io/kubernetes/cmd/kube-scheduler/app/options/options.go
generated
vendored
@@ -21,11 +21,13 @@ import (
|
||||
"net"
|
||||
"os"
|
||||
"strconv"
|
||||
"time"
|
||||
|
||||
"github.com/golang/glog"
|
||||
"github.com/spf13/pflag"
|
||||
|
||||
corev1 "k8s.io/api/core/v1"
|
||||
apimachineryconfig "k8s.io/apimachinery/pkg/apis/config"
|
||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||
"k8s.io/apimachinery/pkg/util/uuid"
|
||||
apiserveroptions "k8s.io/apiserver/pkg/server/options"
|
||||
@@ -39,19 +41,20 @@ import (
|
||||
"k8s.io/client-go/tools/leaderelection"
|
||||
"k8s.io/client-go/tools/leaderelection/resourcelock"
|
||||
"k8s.io/client-go/tools/record"
|
||||
controlleroptions "k8s.io/kubernetes/cmd/controller-manager/app/options"
|
||||
kubeschedulerconfigv1alpha1 "k8s.io/kube-scheduler/config/v1alpha1"
|
||||
schedulerappconfig "k8s.io/kubernetes/cmd/kube-scheduler/app/config"
|
||||
"k8s.io/kubernetes/pkg/api/legacyscheme"
|
||||
"k8s.io/kubernetes/pkg/apis/componentconfig"
|
||||
componentconfigv1alpha1 "k8s.io/kubernetes/pkg/apis/componentconfig/v1alpha1"
|
||||
"k8s.io/kubernetes/pkg/client/leaderelectionconfig"
|
||||
kubeschedulerconfig "k8s.io/kubernetes/pkg/scheduler/apis/config"
|
||||
kubeschedulerscheme "k8s.io/kubernetes/pkg/scheduler/apis/config/scheme"
|
||||
"k8s.io/kubernetes/pkg/scheduler/apis/config/validation"
|
||||
"k8s.io/kubernetes/pkg/scheduler/factory"
|
||||
)
|
||||
|
||||
// Options has all the params needed to run a Scheduler
|
||||
type Options struct {
|
||||
// The default values. These are overridden if ConfigFile is set or by values in InsecureServing.
|
||||
ComponentConfig componentconfig.KubeSchedulerConfiguration
|
||||
ComponentConfig kubeschedulerconfig.KubeSchedulerConfiguration
|
||||
|
||||
SecureServing *apiserveroptions.SecureServingOptions
|
||||
CombinedInsecureServing *CombinedInsecureServingOptions
|
||||
@@ -84,10 +87,10 @@ func NewOptions() (*Options, error) {
|
||||
ComponentConfig: *cfg,
|
||||
SecureServing: nil, // TODO: enable with apiserveroptions.NewSecureServingOptions()
|
||||
CombinedInsecureServing: &CombinedInsecureServingOptions{
|
||||
Healthz: &controlleroptions.InsecureServingOptions{
|
||||
Healthz: &apiserveroptions.DeprecatedInsecureServingOptions{
|
||||
BindNetwork: "tcp",
|
||||
},
|
||||
Metrics: &controlleroptions.InsecureServingOptions{
|
||||
Metrics: &apiserveroptions.DeprecatedInsecureServingOptions{
|
||||
BindNetwork: "tcp",
|
||||
},
|
||||
BindPort: hport,
|
||||
@@ -116,11 +119,11 @@ func splitHostIntPort(s string) (string, int, error) {
|
||||
return host, portInt, err
|
||||
}
|
||||
|
||||
func newDefaultComponentConfig() (*componentconfig.KubeSchedulerConfiguration, error) {
|
||||
cfgv1alpha1 := componentconfigv1alpha1.KubeSchedulerConfiguration{}
|
||||
configScheme.Default(&cfgv1alpha1)
|
||||
cfg := componentconfig.KubeSchedulerConfiguration{}
|
||||
if err := configScheme.Convert(&cfgv1alpha1, &cfg, nil); err != nil {
|
||||
func newDefaultComponentConfig() (*kubeschedulerconfig.KubeSchedulerConfiguration, error) {
|
||||
cfgv1alpha1 := kubeschedulerconfigv1alpha1.KubeSchedulerConfiguration{}
|
||||
kubeschedulerscheme.Scheme.Default(&cfgv1alpha1)
|
||||
cfg := kubeschedulerconfig.KubeSchedulerConfiguration{}
|
||||
if err := kubeschedulerscheme.Scheme.Convert(&cfgv1alpha1, &cfg, nil); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return &cfg, nil
|
||||
@@ -144,9 +147,6 @@ func (o *Options) AddFlags(fs *pflag.FlagSet) {
|
||||
|
||||
// ApplyTo applies the scheduler options to the given scheduler app configuration.
|
||||
func (o *Options) ApplyTo(c *schedulerappconfig.Config) error {
|
||||
if len(o.ConfigFile) == 0 && len(o.WriteConfigTo) == 0 {
|
||||
glog.Warning("WARNING: all flags other than --config, --write-config-to, and --cleanup are deprecated. Please begin using a config file ASAP.")
|
||||
}
|
||||
if len(o.ConfigFile) == 0 {
|
||||
c.ComponentConfig = o.ComponentConfig
|
||||
|
||||
@@ -186,6 +186,9 @@ func (o *Options) ApplyTo(c *schedulerappconfig.Config) error {
|
||||
func (o *Options) Validate() []error {
|
||||
var errs []error
|
||||
|
||||
if err := validation.ValidateKubeSchedulerConfiguration(&o.ComponentConfig).ToAggregate(); err != nil {
|
||||
errs = append(errs, err.Errors()...)
|
||||
}
|
||||
errs = append(errs, o.SecureServing.Validate()...)
|
||||
errs = append(errs, o.CombinedInsecureServing.Validate()...)
|
||||
errs = append(errs, o.Authentication.Validate()...)
|
||||
@@ -203,7 +206,7 @@ func (o *Options) Config() (*schedulerappconfig.Config, error) {
|
||||
}
|
||||
|
||||
// prepare kube clients.
|
||||
client, leaderElectionClient, eventClient, err := createClients(c.ComponentConfig.ClientConnection, o.Master)
|
||||
client, leaderElectionClient, eventClient, err := createClients(c.ComponentConfig.ClientConnection, o.Master, c.ComponentConfig.LeaderElection.RenewDeadline.Duration)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
@@ -234,7 +237,7 @@ func (o *Options) Config() (*schedulerappconfig.Config, error) {
|
||||
|
||||
// makeLeaderElectionConfig builds a leader election configuration. It will
|
||||
// create a new resource lock associated with the configuration.
|
||||
func makeLeaderElectionConfig(config componentconfig.KubeSchedulerLeaderElectionConfiguration, client clientset.Interface, recorder record.EventRecorder) (*leaderelection.LeaderElectionConfig, error) {
|
||||
func makeLeaderElectionConfig(config kubeschedulerconfig.KubeSchedulerLeaderElectionConfiguration, client clientset.Interface, recorder record.EventRecorder) (*leaderelection.LeaderElectionConfig, error) {
|
||||
hostname, err := os.Hostname()
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("unable to get hostname: %v", err)
|
||||
@@ -264,15 +267,15 @@ func makeLeaderElectionConfig(config componentconfig.KubeSchedulerLeaderElection
|
||||
|
||||
// createClients creates a kube client and an event client from the given config and masterOverride.
|
||||
// TODO remove masterOverride when CLI flags are removed.
|
||||
func createClients(config componentconfig.ClientConnectionConfiguration, masterOverride string) (clientset.Interface, clientset.Interface, v1core.EventsGetter, error) {
|
||||
if len(config.KubeConfigFile) == 0 && len(masterOverride) == 0 {
|
||||
func createClients(config apimachineryconfig.ClientConnectionConfiguration, masterOverride string, timeout time.Duration) (clientset.Interface, clientset.Interface, v1core.EventsGetter, error) {
|
||||
if len(config.Kubeconfig) == 0 && len(masterOverride) == 0 {
|
||||
glog.Warningf("Neither --kubeconfig nor --master was specified. Using default API client. This might not work.")
|
||||
}
|
||||
|
||||
// This creates a client, first loading any specified kubeconfig
|
||||
// file, and then overriding the Master flag, if non-empty.
|
||||
kubeConfig, err := clientcmd.NewNonInteractiveDeferredLoadingClientConfig(
|
||||
&clientcmd.ClientConfigLoadingRules{ExplicitPath: config.KubeConfigFile},
|
||||
&clientcmd.ClientConfigLoadingRules{ExplicitPath: config.Kubeconfig},
|
||||
&clientcmd.ConfigOverrides{ClusterInfo: clientcmdapi.Cluster{Server: masterOverride}}).ClientConfig()
|
||||
if err != nil {
|
||||
return nil, nil, nil, err
|
||||
@@ -289,7 +292,10 @@ func createClients(config componentconfig.ClientConnectionConfiguration, masterO
|
||||
return nil, nil, nil, err
|
||||
}
|
||||
|
||||
leaderElectionClient, err := clientset.NewForConfig(restclient.AddUserAgent(kubeConfig, "leader-election"))
|
||||
// shallow copy, do not modify the kubeConfig.Timeout.
|
||||
restConfig := *kubeConfig
|
||||
restConfig.Timeout = timeout
|
||||
leaderElectionClient, err := clientset.NewForConfig(restclient.AddUserAgent(&restConfig, "leader-election"))
|
||||
if err != nil {
|
||||
return nil, nil, nil, err
|
||||
}
|
||||
|
165
vendor/k8s.io/kubernetes/cmd/kube-scheduler/app/options/options_test.go
generated
vendored
165
vendor/k8s.io/kubernetes/cmd/kube-scheduler/app/options/options_test.go
generated
vendored
@@ -23,10 +23,16 @@ import (
|
||||
"net/http/httptest"
|
||||
"os"
|
||||
"path/filepath"
|
||||
"reflect"
|
||||
"strings"
|
||||
"testing"
|
||||
"time"
|
||||
|
||||
"k8s.io/kubernetes/pkg/apis/componentconfig"
|
||||
apimachineryconfig "k8s.io/apimachinery/pkg/apis/config"
|
||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||
"k8s.io/apimachinery/pkg/util/diff"
|
||||
apiserverconfig "k8s.io/apiserver/pkg/apis/config"
|
||||
kubeschedulerconfig "k8s.io/kubernetes/pkg/scheduler/apis/config"
|
||||
)
|
||||
|
||||
func TestSchedulerOptions(t *testing.T) {
|
||||
@@ -64,7 +70,7 @@ func TestSchedulerOptions(t *testing.T) {
|
||||
configFile := filepath.Join(tmpDir, "scheduler.yaml")
|
||||
configKubeconfig := filepath.Join(tmpDir, "config.kubeconfig")
|
||||
if err := ioutil.WriteFile(configFile, []byte(fmt.Sprintf(`
|
||||
apiVersion: componentconfig/v1alpha1
|
||||
apiVersion: kubescheduler.config.k8s.io/v1alpha1
|
||||
kind: KubeSchedulerConfiguration
|
||||
clientConnection:
|
||||
kubeconfig: "%s"
|
||||
@@ -94,6 +100,28 @@ users:
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
||||
oldconfigFile := filepath.Join(tmpDir, "scheduler_old.yaml")
|
||||
if err := ioutil.WriteFile(oldconfigFile, []byte(fmt.Sprintf(`
|
||||
apiVersion: componentconfig/v1alpha1
|
||||
kind: KubeSchedulerConfiguration
|
||||
clientConnection:
|
||||
kubeconfig: "%s"
|
||||
leaderElection:
|
||||
leaderElect: true`, configKubeconfig)), os.FileMode(0600)); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
||||
invalidconfigFile := filepath.Join(tmpDir, "scheduler_invalid.yaml")
|
||||
if err := ioutil.WriteFile(invalidconfigFile, []byte(fmt.Sprintf(`
|
||||
apiVersion: componentconfig/v1alpha2
|
||||
kind: KubeSchedulerConfiguration
|
||||
clientConnection:
|
||||
kubeconfig: "%s"
|
||||
leaderElection:
|
||||
leaderElect: true`, configKubeconfig)), os.FileMode(0600)); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
||||
// flag-specified kubeconfig
|
||||
flagKubeconfig := filepath.Join(tmpDir, "flag.kubeconfig")
|
||||
if err := ioutil.WriteFile(flagKubeconfig, []byte(fmt.Sprintf(`
|
||||
@@ -126,24 +154,143 @@ users:
|
||||
defer os.Setenv("KUBERNETES_SERVICE_HOST", originalHost)
|
||||
}
|
||||
|
||||
defaultSource := "DefaultProvider"
|
||||
defaultBindTimeoutSeconds := int64(600)
|
||||
|
||||
testcases := []struct {
|
||||
name string
|
||||
options *Options
|
||||
expectedUsername string
|
||||
expectedError string
|
||||
expectedConfig kubeschedulerconfig.KubeSchedulerConfiguration
|
||||
}{
|
||||
{
|
||||
name: "config file",
|
||||
options: &Options{ConfigFile: configFile},
|
||||
name: "config file",
|
||||
options: &Options{
|
||||
ConfigFile: configFile,
|
||||
ComponentConfig: func() kubeschedulerconfig.KubeSchedulerConfiguration {
|
||||
cfg, err := newDefaultComponentConfig()
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
return *cfg
|
||||
}(),
|
||||
},
|
||||
expectedUsername: "config",
|
||||
expectedConfig: kubeschedulerconfig.KubeSchedulerConfiguration{
|
||||
SchedulerName: "default-scheduler",
|
||||
AlgorithmSource: kubeschedulerconfig.SchedulerAlgorithmSource{Provider: &defaultSource},
|
||||
HardPodAffinitySymmetricWeight: 1,
|
||||
HealthzBindAddress: "0.0.0.0:10251",
|
||||
MetricsBindAddress: "0.0.0.0:10251",
|
||||
FailureDomains: "kubernetes.io/hostname,failure-domain.beta.kubernetes.io/zone,failure-domain.beta.kubernetes.io/region",
|
||||
LeaderElection: kubeschedulerconfig.KubeSchedulerLeaderElectionConfiguration{
|
||||
LeaderElectionConfiguration: apiserverconfig.LeaderElectionConfiguration{
|
||||
LeaderElect: true,
|
||||
LeaseDuration: metav1.Duration{Duration: 15 * time.Second},
|
||||
RenewDeadline: metav1.Duration{Duration: 10 * time.Second},
|
||||
RetryPeriod: metav1.Duration{Duration: 2 * time.Second},
|
||||
ResourceLock: "endpoints",
|
||||
},
|
||||
LockObjectNamespace: "kube-system",
|
||||
LockObjectName: "kube-scheduler",
|
||||
},
|
||||
ClientConnection: apimachineryconfig.ClientConnectionConfiguration{
|
||||
Kubeconfig: configKubeconfig,
|
||||
QPS: 50,
|
||||
Burst: 100,
|
||||
ContentType: "application/vnd.kubernetes.protobuf",
|
||||
},
|
||||
PercentageOfNodesToScore: 50,
|
||||
BindTimeoutSeconds: &defaultBindTimeoutSeconds,
|
||||
},
|
||||
},
|
||||
{
|
||||
name: "config file in componentconfig/v1alpha1",
|
||||
options: &Options{
|
||||
ConfigFile: oldconfigFile,
|
||||
ComponentConfig: func() kubeschedulerconfig.KubeSchedulerConfiguration {
|
||||
cfg, err := newDefaultComponentConfig()
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
return *cfg
|
||||
}(),
|
||||
},
|
||||
// TODO: switch this to expect an error in 1.13 when the special-case coercion is removed from loadConfig
|
||||
// expectedError: "no kind \"KubeSchedulerConfiguration\" is registered for version \"componentconfig/v1alpha1\"",
|
||||
expectedUsername: "config",
|
||||
expectedConfig: kubeschedulerconfig.KubeSchedulerConfiguration{
|
||||
SchedulerName: "default-scheduler",
|
||||
AlgorithmSource: kubeschedulerconfig.SchedulerAlgorithmSource{Provider: &defaultSource},
|
||||
HardPodAffinitySymmetricWeight: 1,
|
||||
HealthzBindAddress: "0.0.0.0:10251",
|
||||
MetricsBindAddress: "0.0.0.0:10251",
|
||||
FailureDomains: "kubernetes.io/hostname,failure-domain.beta.kubernetes.io/zone,failure-domain.beta.kubernetes.io/region",
|
||||
LeaderElection: kubeschedulerconfig.KubeSchedulerLeaderElectionConfiguration{
|
||||
LeaderElectionConfiguration: apiserverconfig.LeaderElectionConfiguration{
|
||||
LeaderElect: true,
|
||||
LeaseDuration: metav1.Duration{Duration: 15 * time.Second},
|
||||
RenewDeadline: metav1.Duration{Duration: 10 * time.Second},
|
||||
RetryPeriod: metav1.Duration{Duration: 2 * time.Second},
|
||||
ResourceLock: "endpoints",
|
||||
},
|
||||
LockObjectNamespace: "kube-system",
|
||||
LockObjectName: "kube-scheduler",
|
||||
},
|
||||
ClientConnection: apimachineryconfig.ClientConnectionConfiguration{
|
||||
Kubeconfig: configKubeconfig,
|
||||
QPS: 50,
|
||||
Burst: 100,
|
||||
ContentType: "application/vnd.kubernetes.protobuf",
|
||||
},
|
||||
PercentageOfNodesToScore: 50,
|
||||
BindTimeoutSeconds: &defaultBindTimeoutSeconds,
|
||||
},
|
||||
},
|
||||
|
||||
{
|
||||
name: "invalid config file in componentconfig/v1alpha2",
|
||||
options: &Options{ConfigFile: invalidconfigFile},
|
||||
expectedError: "no kind \"KubeSchedulerConfiguration\" is registered for version \"componentconfig/v1alpha2\"",
|
||||
},
|
||||
{
|
||||
name: "kubeconfig flag",
|
||||
options: &Options{
|
||||
ComponentConfig: componentconfig.KubeSchedulerConfiguration{
|
||||
ClientConnection: componentconfig.ClientConnectionConfiguration{
|
||||
KubeConfigFile: flagKubeconfig}}},
|
||||
ComponentConfig: func() kubeschedulerconfig.KubeSchedulerConfiguration {
|
||||
cfg, _ := newDefaultComponentConfig()
|
||||
cfg.ClientConnection.Kubeconfig = flagKubeconfig
|
||||
return *cfg
|
||||
}(),
|
||||
},
|
||||
expectedUsername: "flag",
|
||||
expectedConfig: kubeschedulerconfig.KubeSchedulerConfiguration{
|
||||
SchedulerName: "default-scheduler",
|
||||
AlgorithmSource: kubeschedulerconfig.SchedulerAlgorithmSource{Provider: &defaultSource},
|
||||
HardPodAffinitySymmetricWeight: 1,
|
||||
HealthzBindAddress: "", // defaults empty when not running from config file
|
||||
MetricsBindAddress: "", // defaults empty when not running from config file
|
||||
FailureDomains: "kubernetes.io/hostname,failure-domain.beta.kubernetes.io/zone,failure-domain.beta.kubernetes.io/region",
|
||||
LeaderElection: kubeschedulerconfig.KubeSchedulerLeaderElectionConfiguration{
|
||||
LeaderElectionConfiguration: apiserverconfig.LeaderElectionConfiguration{
|
||||
LeaderElect: true,
|
||||
LeaseDuration: metav1.Duration{Duration: 15 * time.Second},
|
||||
RenewDeadline: metav1.Duration{Duration: 10 * time.Second},
|
||||
RetryPeriod: metav1.Duration{Duration: 2 * time.Second},
|
||||
ResourceLock: "endpoints",
|
||||
},
|
||||
LockObjectNamespace: "kube-system",
|
||||
LockObjectName: "kube-scheduler",
|
||||
},
|
||||
ClientConnection: apimachineryconfig.ClientConnectionConfiguration{
|
||||
Kubeconfig: flagKubeconfig,
|
||||
QPS: 50,
|
||||
Burst: 100,
|
||||
ContentType: "application/vnd.kubernetes.protobuf",
|
||||
},
|
||||
PercentageOfNodesToScore: 50,
|
||||
BindTimeoutSeconds: &defaultBindTimeoutSeconds,
|
||||
},
|
||||
},
|
||||
{
|
||||
name: "overridden master",
|
||||
@@ -172,6 +319,10 @@ users:
|
||||
return
|
||||
}
|
||||
|
||||
if !reflect.DeepEqual(config.ComponentConfig, tc.expectedConfig) {
|
||||
t.Errorf("config.diff:\n%s", diff.ObjectReflectDiff(tc.expectedConfig, config.ComponentConfig))
|
||||
}
|
||||
|
||||
// ensure we have a client
|
||||
if config.Client == nil {
|
||||
t.Error("unexpected nil client")
|
||||
|
67
vendor/k8s.io/kubernetes/cmd/kube-scheduler/app/server.go
generated
vendored
67
vendor/k8s.io/kubernetes/cmd/kube-scheduler/app/server.go
generated
vendored
@@ -18,6 +18,7 @@ limitations under the License.
|
||||
package app
|
||||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
"io"
|
||||
"io/ioutil"
|
||||
@@ -44,13 +45,13 @@ import (
|
||||
schedulerserverconfig "k8s.io/kubernetes/cmd/kube-scheduler/app/config"
|
||||
"k8s.io/kubernetes/cmd/kube-scheduler/app/options"
|
||||
"k8s.io/kubernetes/pkg/api/legacyscheme"
|
||||
"k8s.io/kubernetes/pkg/apis/componentconfig"
|
||||
"k8s.io/kubernetes/pkg/controller"
|
||||
"k8s.io/kubernetes/pkg/features"
|
||||
"k8s.io/kubernetes/pkg/scheduler"
|
||||
"k8s.io/kubernetes/pkg/scheduler/algorithmprovider"
|
||||
schedulerapi "k8s.io/kubernetes/pkg/scheduler/api"
|
||||
latestschedulerapi "k8s.io/kubernetes/pkg/scheduler/api/latest"
|
||||
kubeschedulerconfig "k8s.io/kubernetes/pkg/scheduler/apis/config"
|
||||
"k8s.io/kubernetes/pkg/scheduler/factory"
|
||||
"k8s.io/kubernetes/pkg/scheduler/metrics"
|
||||
"k8s.io/kubernetes/pkg/util/configz"
|
||||
@@ -121,6 +122,7 @@ through the API as necessary.`,
|
||||
return cmd
|
||||
}
|
||||
|
||||
// Run runs the Scheduler.
|
||||
func Run(c schedulerserverconfig.CompletedConfig, stopCh <-chan struct{}) error {
|
||||
// To help debugging, immediately log version
|
||||
glog.Infof("Version: %+v", version.Get())
|
||||
@@ -181,11 +183,22 @@ func Run(c schedulerserverconfig.CompletedConfig, stopCh <-chan struct{}) error
|
||||
controller.WaitForCacheSync("scheduler", stopCh, c.PodInformer.Informer().HasSynced)
|
||||
|
||||
// Prepare a reusable run function.
|
||||
run := func(stopCh <-chan struct{}) {
|
||||
run := func(ctx context.Context) {
|
||||
sched.Run()
|
||||
<-stopCh
|
||||
<-ctx.Done()
|
||||
}
|
||||
|
||||
ctx, cancel := context.WithCancel(context.TODO()) // TODO once Run() accepts a context, it should be used here
|
||||
defer cancel()
|
||||
|
||||
go func() {
|
||||
select {
|
||||
case <-stopCh:
|
||||
cancel()
|
||||
case <-ctx.Done():
|
||||
}
|
||||
}()
|
||||
|
||||
// If leader election is enabled, run via LeaderElector until done and exit.
|
||||
if c.LeaderElection != nil {
|
||||
c.LeaderElection.Callbacks = leaderelection.LeaderCallbacks{
|
||||
@@ -199,13 +212,13 @@ func Run(c schedulerserverconfig.CompletedConfig, stopCh <-chan struct{}) error
|
||||
return fmt.Errorf("couldn't create leader elector: %v", err)
|
||||
}
|
||||
|
||||
leaderElector.Run()
|
||||
leaderElector.Run(ctx)
|
||||
|
||||
return fmt.Errorf("lost lease")
|
||||
}
|
||||
|
||||
// Leader election is disabled, so run inline until done.
|
||||
run(stopCh)
|
||||
run(ctx)
|
||||
return fmt.Errorf("finished without leader elect")
|
||||
}
|
||||
|
||||
@@ -237,7 +250,7 @@ func installMetricHandler(pathRecorderMux *mux.PathRecorderMux) {
|
||||
}
|
||||
|
||||
// newMetricsHandler builds a metrics server from the config.
|
||||
func newMetricsHandler(config *componentconfig.KubeSchedulerConfiguration) http.Handler {
|
||||
func newMetricsHandler(config *kubeschedulerconfig.KubeSchedulerConfiguration) http.Handler {
|
||||
pathRecorderMux := mux.NewPathRecorderMux("kube-scheduler")
|
||||
installMetricHandler(pathRecorderMux)
|
||||
if config.EnableProfiling {
|
||||
@@ -252,7 +265,7 @@ func newMetricsHandler(config *componentconfig.KubeSchedulerConfiguration) http.
|
||||
// newHealthzServer creates a healthz server from the config, and will also
|
||||
// embed the metrics handler if the healthz and metrics address configurations
|
||||
// are the same.
|
||||
func newHealthzHandler(config *componentconfig.KubeSchedulerConfiguration, separateMetrics bool) http.Handler {
|
||||
func newHealthzHandler(config *kubeschedulerconfig.KubeSchedulerConfiguration, separateMetrics bool) http.Handler {
|
||||
pathRecorderMux := mux.NewPathRecorderMux("kube-scheduler")
|
||||
healthz.InstallHandler(pathRecorderMux)
|
||||
if !separateMetrics {
|
||||
@@ -275,23 +288,25 @@ func NewSchedulerConfig(s schedulerserverconfig.CompletedConfig) (*scheduler.Con
|
||||
}
|
||||
|
||||
// Set up the configurator which can create schedulers from configs.
|
||||
configurator := factory.NewConfigFactory(
|
||||
s.ComponentConfig.SchedulerName,
|
||||
s.Client,
|
||||
s.InformerFactory.Core().V1().Nodes(),
|
||||
s.PodInformer,
|
||||
s.InformerFactory.Core().V1().PersistentVolumes(),
|
||||
s.InformerFactory.Core().V1().PersistentVolumeClaims(),
|
||||
s.InformerFactory.Core().V1().ReplicationControllers(),
|
||||
s.InformerFactory.Extensions().V1beta1().ReplicaSets(),
|
||||
s.InformerFactory.Apps().V1beta1().StatefulSets(),
|
||||
s.InformerFactory.Core().V1().Services(),
|
||||
s.InformerFactory.Policy().V1beta1().PodDisruptionBudgets(),
|
||||
storageClassInformer,
|
||||
s.ComponentConfig.HardPodAffinitySymmetricWeight,
|
||||
utilfeature.DefaultFeatureGate.Enabled(features.EnableEquivalenceClassCache),
|
||||
s.ComponentConfig.DisablePreemption,
|
||||
)
|
||||
configurator := factory.NewConfigFactory(&factory.ConfigFactoryArgs{
|
||||
SchedulerName: s.ComponentConfig.SchedulerName,
|
||||
Client: s.Client,
|
||||
NodeInformer: s.InformerFactory.Core().V1().Nodes(),
|
||||
PodInformer: s.PodInformer,
|
||||
PvInformer: s.InformerFactory.Core().V1().PersistentVolumes(),
|
||||
PvcInformer: s.InformerFactory.Core().V1().PersistentVolumeClaims(),
|
||||
ReplicationControllerInformer: s.InformerFactory.Core().V1().ReplicationControllers(),
|
||||
ReplicaSetInformer: s.InformerFactory.Apps().V1().ReplicaSets(),
|
||||
StatefulSetInformer: s.InformerFactory.Apps().V1().StatefulSets(),
|
||||
ServiceInformer: s.InformerFactory.Core().V1().Services(),
|
||||
PdbInformer: s.InformerFactory.Policy().V1beta1().PodDisruptionBudgets(),
|
||||
StorageClassInformer: storageClassInformer,
|
||||
HardPodAffinitySymmetricWeight: s.ComponentConfig.HardPodAffinitySymmetricWeight,
|
||||
EnableEquivalenceClassCache: utilfeature.DefaultFeatureGate.Enabled(features.EnableEquivalenceClassCache),
|
||||
DisablePreemption: s.ComponentConfig.DisablePreemption,
|
||||
PercentageOfNodesToScore: s.ComponentConfig.PercentageOfNodesToScore,
|
||||
BindTimeoutSeconds: *s.ComponentConfig.BindTimeoutSeconds,
|
||||
})
|
||||
|
||||
source := s.ComponentConfig.AlgorithmSource
|
||||
var config *scheduler.Config
|
||||
@@ -329,9 +344,9 @@ func NewSchedulerConfig(s schedulerserverconfig.CompletedConfig) (*scheduler.Con
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("couldn't get policy config map %s/%s: %v", policyRef.Namespace, policyRef.Name, err)
|
||||
}
|
||||
data, found := policyConfigMap.Data[componentconfig.SchedulerPolicyConfigMapKey]
|
||||
data, found := policyConfigMap.Data[kubeschedulerconfig.SchedulerPolicyConfigMapKey]
|
||||
if !found {
|
||||
return nil, fmt.Errorf("missing policy config map value at key %q", componentconfig.SchedulerPolicyConfigMapKey)
|
||||
return nil, fmt.Errorf("missing policy config map value at key %q", kubeschedulerconfig.SchedulerPolicyConfigMapKey)
|
||||
}
|
||||
err = runtime.DecodeInto(latestschedulerapi.Codec, []byte(data), policy)
|
||||
if err != nil {
|
||||
|
Reference in New Issue
Block a user