- Changes the following KubeletConfiguration fields from `string` to `map[string]string`: - `EvictionHard` - `EvictionSoft` - `EvictionSoftGracePeriod` - `EvictionMinimumReclaim` - Adds flag parsing shims to maintain Kubelet's public flags API, while enabling structured input in the file API. - Also removes `kubeletconfig.ConfigurationMap`, which was an ad-hoc flag parsing shim living in the kubeletconfig API group, and replaces it with the `MapStringString` shim introduced in this PR. Flag parsing shims belong in a common place, not in the kubeletconfig API. I manually audited these to ensure that this wouldn't cause errors parsing the command line for syntax that would have previously been error free (`kubeletconfig.ConfigurationMap` was unique in that it allowed keys to be provided on the CLI without values. I believe this was done in `flags.ConfigurationMap` to facilitate the `--node-labels` flag, which rightfully accepts value-free keys, and that this shim was then just copied to `kubeletconfig`). Fortunately, the affected fields (`ExperimentalQOSReserved`, `SystemReserved`, and `KubeReserved`) expect non-empty strings in the values of the map, and as a result passing the empty string is already an error. Thus requiring keys shouldn't break anyone's scripts. - Updates code and tests accordingly. Regarding eviction operators, directionality is already implicit in the signal type (for a given signal, the decision to evict will be made when crossing the threshold from either above or below, never both). There is no need to expose an operator, such as `<`, in the API. By changing `EvictionHard` and `EvictionSoft` to `map[string]string`, this PR simplifies the experience of working with these fields via the `KubeletConfiguration` type. Again, flags stay the same. Other things: - There is another flag parsing shim, `flags.ConfigurationMap`, from the shared flag utility. The `NodeLabels` field still uses `flags.ConfigurationMap`. This PR moves the allocation of the `map[string]string` for the `NodeLabels` field from `AddKubeletConfigFlags` to the defaulter for the external `KubeletConfiguration` type. Flags are layered on top of an internal object that has undergone conversion from a defaulted external object, which means that previously the mere registration of flags would have overwritten any previously-defined defaults for `NodeLabels` (fortunately there were none).
150 lines
6.7 KiB
Python
150 lines
6.7 KiB
Python
package(default_visibility = ["//visibility:public"])
|
|
|
|
load(
|
|
"@io_bazel_rules_go//go:def.bzl",
|
|
"go_library",
|
|
"go_test",
|
|
)
|
|
|
|
go_test(
|
|
name = "go_default_test",
|
|
srcs = ["server_test.go"],
|
|
importpath = "k8s.io/kubernetes/cmd/kubelet/app",
|
|
library = ":go_default_library",
|
|
)
|
|
|
|
go_library(
|
|
name = "go_default_library",
|
|
srcs = [
|
|
"auth.go",
|
|
"plugins.go",
|
|
"server.go",
|
|
"server_unsupported.go",
|
|
] + select({
|
|
"@io_bazel_rules_go//go/platform:linux_amd64": [
|
|
"server_linux.go",
|
|
],
|
|
"//conditions:default": [],
|
|
}),
|
|
importpath = "k8s.io/kubernetes/cmd/kubelet/app",
|
|
deps = [
|
|
"//cmd/kubelet/app/options:go_default_library",
|
|
"//pkg/api/legacyscheme:go_default_library",
|
|
"//pkg/apis/core:go_default_library",
|
|
"//pkg/capabilities:go_default_library",
|
|
"//pkg/client/chaosclient:go_default_library",
|
|
"//pkg/cloudprovider:go_default_library",
|
|
"//pkg/cloudprovider/providers:go_default_library",
|
|
"//pkg/credentialprovider:go_default_library",
|
|
"//pkg/credentialprovider/aws:go_default_library",
|
|
"//pkg/credentialprovider/azure:go_default_library",
|
|
"//pkg/credentialprovider/gcp:go_default_library",
|
|
"//pkg/credentialprovider/rancher:go_default_library",
|
|
"//pkg/features:go_default_library",
|
|
"//pkg/kubelet:go_default_library",
|
|
"//pkg/kubelet/apis/kubeletconfig:go_default_library",
|
|
"//pkg/kubelet/apis/kubeletconfig/scheme:go_default_library",
|
|
"//pkg/kubelet/apis/kubeletconfig/v1alpha1:go_default_library",
|
|
"//pkg/kubelet/cadvisor:go_default_library",
|
|
"//pkg/kubelet/certificate:go_default_library",
|
|
"//pkg/kubelet/certificate/bootstrap:go_default_library",
|
|
"//pkg/kubelet/cm:go_default_library",
|
|
"//pkg/kubelet/config:go_default_library",
|
|
"//pkg/kubelet/container:go_default_library",
|
|
"//pkg/kubelet/dockershim:go_default_library",
|
|
"//pkg/kubelet/dockershim/remote:go_default_library",
|
|
"//pkg/kubelet/eviction:go_default_library",
|
|
"//pkg/kubelet/eviction/api:go_default_library",
|
|
"//pkg/kubelet/kubeletconfig:go_default_library",
|
|
"//pkg/kubelet/network:go_default_library",
|
|
"//pkg/kubelet/network/cni:go_default_library",
|
|
"//pkg/kubelet/network/kubenet:go_default_library",
|
|
"//pkg/kubelet/server:go_default_library",
|
|
"//pkg/kubelet/server/streaming:go_default_library",
|
|
"//pkg/kubelet/types:go_default_library",
|
|
"//pkg/util/configz:go_default_library",
|
|
"//pkg/util/flock:go_default_library",
|
|
"//pkg/util/io:go_default_library",
|
|
"//pkg/util/mount:go_default_library",
|
|
"//pkg/util/node:go_default_library",
|
|
"//pkg/util/oom:go_default_library",
|
|
"//pkg/util/rlimit:go_default_library",
|
|
"//pkg/version:go_default_library",
|
|
"//pkg/volume:go_default_library",
|
|
"//pkg/volume/aws_ebs:go_default_library",
|
|
"//pkg/volume/azure_dd:go_default_library",
|
|
"//pkg/volume/azure_file:go_default_library",
|
|
"//pkg/volume/cephfs:go_default_library",
|
|
"//pkg/volume/cinder:go_default_library",
|
|
"//pkg/volume/configmap:go_default_library",
|
|
"//pkg/volume/downwardapi:go_default_library",
|
|
"//pkg/volume/empty_dir:go_default_library",
|
|
"//pkg/volume/fc:go_default_library",
|
|
"//pkg/volume/flexvolume:go_default_library",
|
|
"//pkg/volume/flocker:go_default_library",
|
|
"//pkg/volume/gce_pd:go_default_library",
|
|
"//pkg/volume/git_repo:go_default_library",
|
|
"//pkg/volume/glusterfs:go_default_library",
|
|
"//pkg/volume/host_path:go_default_library",
|
|
"//pkg/volume/iscsi:go_default_library",
|
|
"//pkg/volume/local:go_default_library",
|
|
"//pkg/volume/nfs:go_default_library",
|
|
"//pkg/volume/photon_pd:go_default_library",
|
|
"//pkg/volume/portworx:go_default_library",
|
|
"//pkg/volume/projected:go_default_library",
|
|
"//pkg/volume/quobyte:go_default_library",
|
|
"//pkg/volume/rbd:go_default_library",
|
|
"//pkg/volume/scaleio:go_default_library",
|
|
"//pkg/volume/secret:go_default_library",
|
|
"//pkg/volume/storageos:go_default_library",
|
|
"//pkg/volume/vsphere_volume:go_default_library",
|
|
"//vendor/github.com/golang/glog:go_default_library",
|
|
"//vendor/github.com/spf13/cobra: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/api/resource:go_default_library",
|
|
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
|
|
"//vendor/k8s.io/apimachinery/pkg/types:go_default_library",
|
|
"//vendor/k8s.io/apimachinery/pkg/util/runtime:go_default_library",
|
|
"//vendor/k8s.io/apimachinery/pkg/util/sets:go_default_library",
|
|
"//vendor/k8s.io/apimachinery/pkg/util/wait:go_default_library",
|
|
"//vendor/k8s.io/apiserver/pkg/authentication/authenticator:go_default_library",
|
|
"//vendor/k8s.io/apiserver/pkg/authentication/authenticatorfactory:go_default_library",
|
|
"//vendor/k8s.io/apiserver/pkg/authorization/authorizer:go_default_library",
|
|
"//vendor/k8s.io/apiserver/pkg/authorization/authorizerfactory:go_default_library",
|
|
"//vendor/k8s.io/apiserver/pkg/server/healthz:go_default_library",
|
|
"//vendor/k8s.io/apiserver/pkg/util/feature:go_default_library",
|
|
"//vendor/k8s.io/apiserver/pkg/util/flag:go_default_library",
|
|
"//vendor/k8s.io/client-go/kubernetes:go_default_library",
|
|
"//vendor/k8s.io/client-go/kubernetes/typed/authentication/v1beta1:go_default_library",
|
|
"//vendor/k8s.io/client-go/kubernetes/typed/authorization/v1beta1: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/record:go_default_library",
|
|
"//vendor/k8s.io/client-go/util/cert:go_default_library",
|
|
"//vendor/k8s.io/client-go/util/certificate:go_default_library",
|
|
] + select({
|
|
"@io_bazel_rules_go//go/platform:linux_amd64": [
|
|
"//vendor/golang.org/x/exp/inotify:go_default_library",
|
|
],
|
|
"//conditions:default": [],
|
|
}),
|
|
)
|
|
|
|
filegroup(
|
|
name = "package-srcs",
|
|
srcs = glob(["**"]),
|
|
tags = ["automanaged"],
|
|
visibility = ["//visibility:private"],
|
|
)
|
|
|
|
filegroup(
|
|
name = "all-srcs",
|
|
srcs = [
|
|
":package-srcs",
|
|
"//cmd/kubelet/app/options:all-srcs",
|
|
],
|
|
tags = ["automanaged"],
|
|
)
|