diff --git a/cmd/kubemark/BUILD b/cmd/kubemark/BUILD index 0c45169a4ea..1c368d7d5fa 100644 --- a/cmd/kubemark/BUILD +++ b/cmd/kubemark/BUILD @@ -17,6 +17,7 @@ go_library( importpath = "k8s.io/kubernetes/cmd/kubemark", deps = [ "//pkg/api/legacyscheme:go_default_library", + "//pkg/apis/core:go_default_library", "//pkg/cluster/ports:go_default_library", "//pkg/kubelet/cadvisor/testing:go_default_library", "//pkg/kubelet/cm:go_default_library", @@ -25,6 +26,7 @@ go_library( "//pkg/kubemark:go_default_library", "//pkg/util/iptables/testing:go_default_library", "//pkg/util/sysctl/testing:go_default_library", + "//pkg/util/taints:go_default_library", "//staging/src/k8s.io/api/core/v1:go_default_library", "//staging/src/k8s.io/apimachinery/pkg/util/sets:go_default_library", "//staging/src/k8s.io/client-go/kubernetes:go_default_library", diff --git a/cmd/kubemark/hollow-node.go b/cmd/kubemark/hollow-node.go index a728313c08b..638b545d72b 100644 --- a/cmd/kubemark/hollow-node.go +++ b/cmd/kubemark/hollow-node.go @@ -41,6 +41,7 @@ import ( "k8s.io/component-base/version" "k8s.io/component-base/version/verflag" "k8s.io/kubernetes/pkg/api/legacyscheme" + "k8s.io/kubernetes/pkg/apis/core" "k8s.io/kubernetes/pkg/cluster/ports" cadvisortest "k8s.io/kubernetes/pkg/kubelet/cadvisor/testing" "k8s.io/kubernetes/pkg/kubelet/cm" @@ -49,6 +50,7 @@ import ( "k8s.io/kubernetes/pkg/kubemark" fakeiptables "k8s.io/kubernetes/pkg/util/iptables/testing" fakesysctl "k8s.io/kubernetes/pkg/util/sysctl/testing" + utiltaints "k8s.io/kubernetes/pkg/util/taints" fakeexec "k8s.io/utils/exec/testing" ) @@ -64,6 +66,7 @@ type hollowNodeConfig struct { ProxierSyncPeriod time.Duration ProxierMinSyncPeriod time.Duration NodeLabels map[string]string + RegisterWithTaints []core.Taint } const ( @@ -88,6 +91,7 @@ func (c *hollowNodeConfig) addFlags(fs *pflag.FlagSet) { fs.DurationVar(&c.ProxierMinSyncPeriod, "proxier-min-sync-period", 0, "Minimum period that proxy rules are refreshed in hollow-proxy.") bindableNodeLabels := cliflag.ConfigurationMap(c.NodeLabels) fs.Var(&bindableNodeLabels, "node-labels", "Additional node labels") + fs.Var(utiltaints.NewTaintsVar(&c.RegisterWithTaints), "register-with-taints", "Register the node with the given list of taints (comma separated \"=:\"). No-op if register-node is false.") } func (c *hollowNodeConfig) createClientConfigFromFile() (*restclient.Config, error) { @@ -113,6 +117,7 @@ func (c *hollowNodeConfig) createHollowKubeletOptions() *kubemark.HollowKubletOp MaxPods: maxPods, PodsPerCore: podsPerCore, NodeLabels: c.NodeLabels, + RegisterWithTaints: c.RegisterWithTaints, } } diff --git a/pkg/kubemark/BUILD b/pkg/kubemark/BUILD index 3ece3bdf19d..dec45223351 100644 --- a/pkg/kubemark/BUILD +++ b/pkg/kubemark/BUILD @@ -17,6 +17,7 @@ go_library( "//cmd/kube-proxy/app:go_default_library", "//cmd/kubelet/app:go_default_library", "//cmd/kubelet/app/options:go_default_library", + "//pkg/apis/core:go_default_library", "//pkg/kubelet:go_default_library", "//pkg/kubelet/apis/config:go_default_library", "//pkg/kubelet/cadvisor:go_default_library", diff --git a/pkg/kubemark/hollow_kubelet.go b/pkg/kubemark/hollow_kubelet.go index efe685e178c..bccc26bd50f 100644 --- a/pkg/kubemark/hollow_kubelet.go +++ b/pkg/kubemark/hollow_kubelet.go @@ -28,6 +28,7 @@ import ( internalapi "k8s.io/cri-api/pkg/apis" kubeletapp "k8s.io/kubernetes/cmd/kubelet/app" "k8s.io/kubernetes/cmd/kubelet/app/options" + "k8s.io/kubernetes/pkg/apis/core" "k8s.io/kubernetes/pkg/kubelet" kubeletconfig "k8s.io/kubernetes/pkg/kubelet/apis/config" "k8s.io/kubernetes/pkg/kubelet/cadvisor" @@ -144,6 +145,7 @@ type HollowKubletOptions struct { MaxPods int PodsPerCore int NodeLabels map[string]string + RegisterWithTaints []core.Taint } // Builds a KubeletConfiguration for the HollowKubelet, ensuring that the @@ -164,6 +166,7 @@ func GetHollowKubeletConfig(opt *HollowKubletOptions) (*options.KubeletFlags, *k f.ContainerRuntimeOptions.ContainerRuntime = kubetypes.RemoteContainerRuntime f.RegisterNode = true f.RegisterSchedulable = true + f.RegisterWithTaints = opt.RegisterWithTaints // Config struct c, err := options.NewKubeletConfiguration()