From 65a3ccec7195321af75bf254efe51e98fc07fea7 Mon Sep 17 00:00:00 2001 From: Darren Shepherd Date: Mon, 26 Aug 2019 15:55:35 -0700 Subject: [PATCH] Add stopCh to apiserver & context to kublet commands --- cmd/genkubedocs/gen_kube_docs.go | 5 +++-- cmd/genman/gen_kube_man.go | 5 +++-- cmd/kube-apiserver/apiserver.go | 3 ++- cmd/kube-apiserver/app/server.go | 4 ++-- cmd/kubelet/app/server.go | 7 +------ cmd/kubelet/kubelet.go | 3 ++- 6 files changed, 13 insertions(+), 14 deletions(-) diff --git a/cmd/genkubedocs/gen_kube_docs.go b/cmd/genkubedocs/gen_kube_docs.go index 71e24638788..ef59d381a14 100644 --- a/cmd/genkubedocs/gen_kube_docs.go +++ b/cmd/genkubedocs/gen_kube_docs.go @@ -24,6 +24,7 @@ import ( "github.com/spf13/cobra/doc" "github.com/spf13/pflag" + "k8s.io/apiserver/pkg/server" "k8s.io/kubernetes/cmd/genutils" apiservapp "k8s.io/kubernetes/cmd/kube-apiserver/app" cmapp "k8s.io/kubernetes/cmd/kube-controller-manager/app" @@ -54,7 +55,7 @@ func main() { switch module { case "kube-apiserver": // generate docs for kube-apiserver - apiserver := apiservapp.NewAPIServerCommand() + apiserver := apiservapp.NewAPIServerCommand(server.SetupSignalHandler()) doc.GenMarkdownTree(apiserver, outDir) case "kube-controller-manager": // generate docs for kube-controller-manager @@ -70,7 +71,7 @@ func main() { doc.GenMarkdownTree(scheduler, outDir) case "kubelet": // generate docs for kubelet - kubelet := kubeletapp.NewKubeletCommand() + kubelet := kubeletapp.NewKubeletCommand(server.SetupSignalContext()) doc.GenMarkdownTree(kubelet, outDir) case "kubeadm": // resets global flags created by kubelet or other commands e.g. diff --git a/cmd/genman/gen_kube_man.go b/cmd/genman/gen_kube_man.go index 449a6d9ff1c..c782441cb3a 100644 --- a/cmd/genman/gen_kube_man.go +++ b/cmd/genman/gen_kube_man.go @@ -26,6 +26,7 @@ import ( mangen "github.com/cpuguy83/go-md2man/v2/md2man" "github.com/spf13/cobra" "github.com/spf13/pflag" + "k8s.io/apiserver/pkg/server" "k8s.io/cli-runtime/pkg/genericiooptions" kubectlcmd "k8s.io/kubectl/pkg/cmd" "k8s.io/kubernetes/cmd/genutils" @@ -62,7 +63,7 @@ func main() { switch module { case "kube-apiserver": // generate manpage for kube-apiserver - apiserver := apiservapp.NewAPIServerCommand() + apiserver := apiservapp.NewAPIServerCommand(server.SetupSignalHandler()) genMarkdown(apiserver, "", outDir) for _, c := range apiserver.Commands() { genMarkdown(c, "kube-apiserver", outDir) @@ -90,7 +91,7 @@ func main() { } case "kubelet": // generate manpage for kubelet - kubelet := kubeletapp.NewKubeletCommand() + kubelet := kubeletapp.NewKubeletCommand(server.SetupSignalContext()) genMarkdown(kubelet, "", outDir) for _, c := range kubelet.Commands() { genMarkdown(c, "kubelet", outDir) diff --git a/cmd/kube-apiserver/apiserver.go b/cmd/kube-apiserver/apiserver.go index 1bf05bc5684..1dace05ff91 100644 --- a/cmd/kube-apiserver/apiserver.go +++ b/cmd/kube-apiserver/apiserver.go @@ -22,6 +22,7 @@ import ( "os" _ "time/tzdata" // for timeZone support in CronJob + "k8s.io/apiserver/pkg/server" "k8s.io/component-base/cli" _ "k8s.io/component-base/logs/json/register" // for JSON log format registration _ "k8s.io/component-base/metrics/prometheus/clientgo" // load all the prometheus client-go plugins @@ -30,7 +31,7 @@ import ( ) func main() { - command := app.NewAPIServerCommand() + command := app.NewAPIServerCommand(server.SetupSignalHandler()) code := cli.Run(command) os.Exit(code) } diff --git a/cmd/kube-apiserver/app/server.go b/cmd/kube-apiserver/app/server.go index 3370d38889b..67715caad45 100644 --- a/cmd/kube-apiserver/app/server.go +++ b/cmd/kube-apiserver/app/server.go @@ -75,7 +75,7 @@ func init() { } // NewAPIServerCommand creates a *cobra.Command object with default parameters -func NewAPIServerCommand() *cobra.Command { +func NewAPIServerCommand(stopCh <-chan struct{}) *cobra.Command { s := options.NewServerRunOptions() cmd := &cobra.Command{ Use: "kube-apiserver", @@ -115,7 +115,7 @@ cluster's shared state through which all other components interact.`, } // add feature enablement metrics utilfeature.DefaultMutableFeatureGate.AddMetrics() - return Run(completedOptions, genericapiserver.SetupSignalHandler()) + return Run(completedOptions, stopCh) }, Args: func(cmd *cobra.Command, args []string) error { for _, arg := range args { diff --git a/cmd/kubelet/app/server.go b/cmd/kubelet/app/server.go index 90783f3fdf1..10adb859ece 100644 --- a/cmd/kubelet/app/server.go +++ b/cmd/kubelet/app/server.go @@ -59,7 +59,6 @@ import ( "k8s.io/apimachinery/pkg/util/sets" "k8s.io/apimachinery/pkg/util/validation/field" "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" @@ -133,7 +132,7 @@ const ( ) // NewKubeletCommand creates a *cobra.Command object with default parameters -func NewKubeletCommand() *cobra.Command { +func NewKubeletCommand(ctx context.Context) *cobra.Command { cleanFlagSet := pflag.NewFlagSet(componentKubelet, pflag.ContinueOnError) cleanFlagSet.SetNormalizeFunc(cliflag.WordSepNormalizeFunc) kubeletFlags := options.NewKubeletFlags() @@ -270,7 +269,6 @@ is checked every 20 seconds (also configurable with a flag).`, if err := checkPermissions(); err != nil { klog.ErrorS(err, "kubelet running with insufficient permissions") } - // make the kubelet's config safe for logging config := kubeletServer.KubeletConfiguration.DeepCopy() for k := range config.StaticPodURLHeader { @@ -279,9 +277,6 @@ is checked every 20 seconds (also configurable with a flag).`, // log the kubelet's config for inspection klog.V(5).InfoS("KubeletConfiguration", "configuration", klog.Format(config)) - // set up signal context for kubelet shutdown - ctx := genericapiserver.SetupSignalContext() - utilfeature.DefaultMutableFeatureGate.AddMetrics() // run the kubelet return Run(ctx, kubeletServer, kubeletDeps, utilfeature.DefaultFeatureGate) diff --git a/cmd/kubelet/kubelet.go b/cmd/kubelet/kubelet.go index c6a73a0034d..598d9f09d63 100644 --- a/cmd/kubelet/kubelet.go +++ b/cmd/kubelet/kubelet.go @@ -24,6 +24,7 @@ package main import ( "os" + "k8s.io/apiserver/pkg/server" "k8s.io/component-base/cli" _ "k8s.io/component-base/logs/json/register" // for JSON log format registration _ "k8s.io/component-base/metrics/prometheus/clientgo" // for client metric registration @@ -32,7 +33,7 @@ import ( ) func main() { - command := app.NewKubeletCommand() + command := app.NewKubeletCommand(server.SetupSignalContext()) code := cli.Run(command) os.Exit(code) }