diff --git a/cmd/genkubedocs/BUILD b/cmd/genkubedocs/BUILD index deddd64c7f..e71660bd0d 100644 --- a/cmd/genkubedocs/BUILD +++ b/cmd/genkubedocs/BUILD @@ -31,7 +31,6 @@ go_library( "//cmd/kube-scheduler/app:go_default_library", "//cmd/kubeadm/app/cmd:go_default_library", "//cmd/kubelet/app:go_default_library", - "//staging/src/k8s.io/apiserver/pkg/server:go_default_library", "//vendor/github.com/spf13/cobra:go_default_library", "//vendor/github.com/spf13/cobra/doc:go_default_library", "//vendor/github.com/spf13/pflag:go_default_library", diff --git a/cmd/genkubedocs/gen_kube_docs.go b/cmd/genkubedocs/gen_kube_docs.go index 12f2de4f2f..b10a432877 100644 --- a/cmd/genkubedocs/gen_kube_docs.go +++ b/cmd/genkubedocs/gen_kube_docs.go @@ -22,7 +22,6 @@ import ( "github.com/spf13/cobra/doc" "github.com/spf13/pflag" - "k8s.io/apiserver/pkg/server" ccmapp "k8s.io/kubernetes/cmd/cloud-controller-manager/app" "k8s.io/kubernetes/cmd/genutils" apiservapp "k8s.io/kubernetes/cmd/kube-apiserver/app" @@ -54,7 +53,7 @@ func main() { switch module { case "kube-apiserver": // generate docs for kube-apiserver - apiserver := apiservapp.NewAPIServerCommand(server.SetupSignalHandler()) + apiserver := apiservapp.NewAPIServerCommand() doc.GenMarkdownTree(apiserver, outDir) case "kube-controller-manager": // generate docs for kube-controller-manager @@ -74,7 +73,7 @@ func main() { doc.GenMarkdownTree(scheduler, outDir) case "kubelet": // generate docs for kubelet - kubelet := kubeletapp.NewKubeletCommand(server.SetupSignalHandler()) + kubelet := kubeletapp.NewKubeletCommand() doc.GenMarkdownTree(kubelet, outDir) case "kubeadm": // resets global flags created by kubelet or other commands e.g. diff --git a/cmd/genman/BUILD b/cmd/genman/BUILD index 09a7a7573d..65355f3767 100644 --- a/cmd/genman/BUILD +++ b/cmd/genman/BUILD @@ -25,7 +25,6 @@ go_library( "//cmd/kubeadm/app/cmd:go_default_library", "//cmd/kubelet/app:go_default_library", "//pkg/kubectl/cmd:go_default_library", - "//staging/src/k8s.io/apiserver/pkg/server:go_default_library", "//vendor/github.com/cpuguy83/go-md2man/md2man:go_default_library", "//vendor/github.com/spf13/cobra:go_default_library", "//vendor/github.com/spf13/pflag:go_default_library", diff --git a/cmd/genman/gen_kube_man.go b/cmd/genman/gen_kube_man.go index 62ceaab522..8ccc994f31 100644 --- a/cmd/genman/gen_kube_man.go +++ b/cmd/genman/gen_kube_man.go @@ -26,7 +26,6 @@ import ( mangen "github.com/cpuguy83/go-md2man/md2man" "github.com/spf13/cobra" "github.com/spf13/pflag" - "k8s.io/apiserver/pkg/server" ccmapp "k8s.io/kubernetes/cmd/cloud-controller-manager/app" "k8s.io/kubernetes/cmd/genutils" apiservapp "k8s.io/kubernetes/cmd/kube-apiserver/app" @@ -63,7 +62,7 @@ func main() { switch module { case "kube-apiserver": // generate manpage for kube-apiserver - apiserver := apiservapp.NewAPIServerCommand(server.SetupSignalHandler()) + apiserver := apiservapp.NewAPIServerCommand() genMarkdown(apiserver, "", outDir) for _, c := range apiserver.Commands() { genMarkdown(c, "kube-apiserver", outDir) @@ -98,7 +97,7 @@ func main() { } case "kubelet": // generate manpage for kubelet - kubelet := kubeletapp.NewKubeletCommand(server.SetupSignalHandler()) + kubelet := kubeletapp.NewKubeletCommand() genMarkdown(kubelet, "", outDir) for _, c := range kubelet.Commands() { genMarkdown(c, "kubelet", outDir) diff --git a/cmd/hyperkube/BUILD b/cmd/hyperkube/BUILD index 369cc94fc3..41c086780a 100644 --- a/cmd/hyperkube/BUILD +++ b/cmd/hyperkube/BUILD @@ -27,7 +27,6 @@ go_library( "//pkg/client/metrics/prometheus:go_default_library", "//pkg/kubectl/cmd:go_default_library", "//pkg/version/prometheus:go_default_library", - "//staging/src/k8s.io/apiserver/pkg/server:go_default_library", "//staging/src/k8s.io/component-base/cli/flag:go_default_library", "//staging/src/k8s.io/component-base/logs:go_default_library", "//vendor/github.com/spf13/cobra:go_default_library", diff --git a/cmd/hyperkube/main.go b/cmd/hyperkube/main.go index 76dd396d3c..7f7034423a 100644 --- a/cmd/hyperkube/main.go +++ b/cmd/hyperkube/main.go @@ -32,7 +32,6 @@ import ( "github.com/spf13/cobra" "github.com/spf13/pflag" - "k8s.io/apiserver/pkg/server" cliflag "k8s.io/component-base/cli/flag" "k8s.io/component-base/logs" cloudcontrollermanager "k8s.io/kubernetes/cmd/cloud-controller-manager/app" @@ -49,7 +48,7 @@ import ( func main() { rand.Seed(time.Now().UnixNano()) - hyperkubeCommand, allCommandFns := NewHyperKubeCommand(server.SetupSignalHandler()) + hyperkubeCommand, allCommandFns := NewHyperKubeCommand() // TODO: once we switch everything over to Cobra commands, we can go back to calling // cliflag.InitFlags() (by removing its pflag.Parse() call). For now, we have to set the @@ -84,15 +83,15 @@ func commandFor(basename string, defaultCommand *cobra.Command, commands []func( } // NewHyperKubeCommand is the entry point for hyperkube -func NewHyperKubeCommand(stopCh <-chan struct{}) (*cobra.Command, []func() *cobra.Command) { +func NewHyperKubeCommand() (*cobra.Command, []func() *cobra.Command) { // these have to be functions since the command is polymorphic. Cobra wants you to be top level // command to get executed - apiserver := func() *cobra.Command { return kubeapiserver.NewAPIServerCommand(stopCh) } + apiserver := func() *cobra.Command { return kubeapiserver.NewAPIServerCommand() } controller := func() *cobra.Command { return kubecontrollermanager.NewControllerManagerCommand() } proxy := func() *cobra.Command { return kubeproxy.NewProxyCommand() } scheduler := func() *cobra.Command { return kubescheduler.NewSchedulerCommand() } kubectlCmd := func() *cobra.Command { return kubectl.NewDefaultKubectlCommand() } - kubelet := func() *cobra.Command { return kubelet.NewKubeletCommand(stopCh) } + kubelet := func() *cobra.Command { return kubelet.NewKubeletCommand() } cloudController := func() *cobra.Command { return cloudcontrollermanager.NewCloudControllerManagerCommand() } commandFns := []func() *cobra.Command{ diff --git a/cmd/kube-apiserver/BUILD b/cmd/kube-apiserver/BUILD index 32a8f62994..1e9207a780 100644 --- a/cmd/kube-apiserver/BUILD +++ b/cmd/kube-apiserver/BUILD @@ -22,7 +22,6 @@ go_library( "//cmd/kube-apiserver/app:go_default_library", "//pkg/util/prometheusclientgo:go_default_library", "//pkg/version/prometheus:go_default_library", - "//staging/src/k8s.io/apiserver/pkg/server:go_default_library", "//staging/src/k8s.io/component-base/logs:go_default_library", ], ) diff --git a/cmd/kube-apiserver/apiserver.go b/cmd/kube-apiserver/apiserver.go index 613dc2bbb9..98002a16b0 100644 --- a/cmd/kube-apiserver/apiserver.go +++ b/cmd/kube-apiserver/apiserver.go @@ -24,7 +24,6 @@ import ( "os" "time" - "k8s.io/apiserver/pkg/server" "k8s.io/component-base/logs" "k8s.io/kubernetes/cmd/kube-apiserver/app" _ "k8s.io/kubernetes/pkg/util/prometheusclientgo" // load all the prometheus client-go plugins @@ -34,7 +33,7 @@ import ( func main() { rand.Seed(time.Now().UnixNano()) - command := app.NewAPIServerCommand(server.SetupSignalHandler()) + command := app.NewAPIServerCommand() // TODO: once we switch everything over to Cobra commands, we can go back to calling // utilflag.InitFlags() (by removing its pflag.Parse() call). For now, we have to set the diff --git a/cmd/kube-apiserver/app/server.go b/cmd/kube-apiserver/app/server.go index 43d3d8f1a5..0b6854b509 100644 --- a/cmd/kube-apiserver/app/server.go +++ b/cmd/kube-apiserver/app/server.go @@ -88,7 +88,7 @@ const etcdRetryLimit = 60 const etcdRetryInterval = 1 * time.Second // NewAPIServerCommand creates a *cobra.Command object with default parameters -func NewAPIServerCommand(stopCh <-chan struct{}) *cobra.Command { +func NewAPIServerCommand() *cobra.Command { s := options.NewServerRunOptions() cmd := &cobra.Command{ Use: "kube-apiserver", @@ -111,7 +111,7 @@ cluster's shared state through which all other components interact.`, return utilerrors.NewAggregate(errs) } - return Run(completedOptions, stopCh) + return Run(completedOptions, genericapiserver.SetupSignalHandler()) }, } diff --git a/cmd/kubelet/BUILD b/cmd/kubelet/BUILD index b0afbcc788..519101d2ed 100644 --- a/cmd/kubelet/BUILD +++ b/cmd/kubelet/BUILD @@ -21,7 +21,6 @@ go_library( "//cmd/kubelet/app:go_default_library", "//pkg/client/metrics/prometheus:go_default_library", "//pkg/version/prometheus:go_default_library", - "//staging/src/k8s.io/apiserver/pkg/server:go_default_library", "//staging/src/k8s.io/component-base/logs:go_default_library", ], ) diff --git a/cmd/kubelet/app/BUILD b/cmd/kubelet/app/BUILD index 9a3dbf6bd1..a8b13f757f 100644 --- a/cmd/kubelet/app/BUILD +++ b/cmd/kubelet/app/BUILD @@ -122,6 +122,7 @@ go_library( "//staging/src/k8s.io/apiserver/pkg/authentication/authenticatorfactory:go_default_library", "//staging/src/k8s.io/apiserver/pkg/authorization/authorizer:go_default_library", "//staging/src/k8s.io/apiserver/pkg/authorization/authorizerfactory:go_default_library", + "//staging/src/k8s.io/apiserver/pkg/server:go_default_library", "//staging/src/k8s.io/apiserver/pkg/server/healthz:go_default_library", "//staging/src/k8s.io/apiserver/pkg/util/feature:go_default_library", "//staging/src/k8s.io/client-go/kubernetes:go_default_library", diff --git a/cmd/kubelet/app/server.go b/cmd/kubelet/app/server.go index 18aed3fe3b..d669d071d4 100644 --- a/cmd/kubelet/app/server.go +++ b/cmd/kubelet/app/server.go @@ -46,6 +46,7 @@ import ( utilruntime "k8s.io/apimachinery/pkg/util/runtime" "k8s.io/apimachinery/pkg/util/sets" "k8s.io/apimachinery/pkg/util/wait" + genericapiserver "k8s.io/apiserver/pkg/server" "k8s.io/apiserver/pkg/server/healthz" utilfeature "k8s.io/apiserver/pkg/util/feature" clientset "k8s.io/client-go/kubernetes" @@ -108,7 +109,7 @@ const ( ) // NewKubeletCommand creates a *cobra.Command object with default parameters -func NewKubeletCommand(stopCh <-chan struct{}) *cobra.Command { +func NewKubeletCommand() *cobra.Command { cleanFlagSet := pflag.NewFlagSet(componentKubelet, pflag.ContinueOnError) cleanFlagSet.SetNormalizeFunc(cliflag.WordSepNormalizeFunc) kubeletFlags := options.NewKubeletFlags() @@ -254,6 +255,9 @@ HTTP server: The kubelet can also listen for HTTP and respond to a simple API // add the kubelet config controller to kubeletDeps kubeletDeps.KubeletConfigController = kubeletConfigController + // set up stopCh here in order to be reused by kubelet and docker shim + stopCh := genericapiserver.SetupSignalHandler() + // start the experimental docker shim, if enabled if kubeletServer.KubeletFlags.ExperimentalDockershim { if err := RunDockershim(&kubeletServer.KubeletFlags, kubeletConfig, stopCh); err != nil { diff --git a/cmd/kubelet/kubelet.go b/cmd/kubelet/kubelet.go index 4c27eaf2cd..2bd4d59d0b 100644 --- a/cmd/kubelet/kubelet.go +++ b/cmd/kubelet/kubelet.go @@ -26,7 +26,6 @@ import ( "os" "time" - "k8s.io/apiserver/pkg/server" "k8s.io/component-base/logs" "k8s.io/kubernetes/cmd/kubelet/app" _ "k8s.io/kubernetes/pkg/client/metrics/prometheus" // for client metric registration @@ -36,7 +35,7 @@ import ( func main() { rand.Seed(time.Now().UnixNano()) - command := app.NewKubeletCommand(server.SetupSignalHandler()) + command := app.NewKubeletCommand() logs.InitLogs() defer logs.FlushLogs()