mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-24 04:06:03 +00:00
Merge pull request #76659 from S-Chan/stephen_chan--lazy_initialize_signal_handling
Lazily initialize signal handling for hyperkube apiserver and kubelet
This commit is contained in:
commit
21bec91e89
@ -31,7 +31,6 @@ go_library(
|
|||||||
"//cmd/kube-scheduler/app:go_default_library",
|
"//cmd/kube-scheduler/app:go_default_library",
|
||||||
"//cmd/kubeadm/app/cmd:go_default_library",
|
"//cmd/kubeadm/app/cmd:go_default_library",
|
||||||
"//cmd/kubelet/app: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:go_default_library",
|
||||||
"//vendor/github.com/spf13/cobra/doc:go_default_library",
|
"//vendor/github.com/spf13/cobra/doc:go_default_library",
|
||||||
"//vendor/github.com/spf13/pflag:go_default_library",
|
"//vendor/github.com/spf13/pflag:go_default_library",
|
||||||
|
@ -22,7 +22,6 @@ import (
|
|||||||
|
|
||||||
"github.com/spf13/cobra/doc"
|
"github.com/spf13/cobra/doc"
|
||||||
"github.com/spf13/pflag"
|
"github.com/spf13/pflag"
|
||||||
"k8s.io/apiserver/pkg/server"
|
|
||||||
ccmapp "k8s.io/kubernetes/cmd/cloud-controller-manager/app"
|
ccmapp "k8s.io/kubernetes/cmd/cloud-controller-manager/app"
|
||||||
"k8s.io/kubernetes/cmd/genutils"
|
"k8s.io/kubernetes/cmd/genutils"
|
||||||
apiservapp "k8s.io/kubernetes/cmd/kube-apiserver/app"
|
apiservapp "k8s.io/kubernetes/cmd/kube-apiserver/app"
|
||||||
@ -54,7 +53,7 @@ func main() {
|
|||||||
switch module {
|
switch module {
|
||||||
case "kube-apiserver":
|
case "kube-apiserver":
|
||||||
// generate docs for kube-apiserver
|
// generate docs for kube-apiserver
|
||||||
apiserver := apiservapp.NewAPIServerCommand(server.SetupSignalHandler())
|
apiserver := apiservapp.NewAPIServerCommand()
|
||||||
doc.GenMarkdownTree(apiserver, outDir)
|
doc.GenMarkdownTree(apiserver, outDir)
|
||||||
case "kube-controller-manager":
|
case "kube-controller-manager":
|
||||||
// generate docs for kube-controller-manager
|
// generate docs for kube-controller-manager
|
||||||
@ -74,7 +73,7 @@ func main() {
|
|||||||
doc.GenMarkdownTree(scheduler, outDir)
|
doc.GenMarkdownTree(scheduler, outDir)
|
||||||
case "kubelet":
|
case "kubelet":
|
||||||
// generate docs for kubelet
|
// generate docs for kubelet
|
||||||
kubelet := kubeletapp.NewKubeletCommand(server.SetupSignalHandler())
|
kubelet := kubeletapp.NewKubeletCommand()
|
||||||
doc.GenMarkdownTree(kubelet, outDir)
|
doc.GenMarkdownTree(kubelet, outDir)
|
||||||
case "kubeadm":
|
case "kubeadm":
|
||||||
// resets global flags created by kubelet or other commands e.g.
|
// resets global flags created by kubelet or other commands e.g.
|
||||||
|
@ -25,7 +25,6 @@ go_library(
|
|||||||
"//cmd/kubeadm/app/cmd:go_default_library",
|
"//cmd/kubeadm/app/cmd:go_default_library",
|
||||||
"//cmd/kubelet/app:go_default_library",
|
"//cmd/kubelet/app:go_default_library",
|
||||||
"//pkg/kubectl/cmd: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/cpuguy83/go-md2man/md2man:go_default_library",
|
||||||
"//vendor/github.com/spf13/cobra:go_default_library",
|
"//vendor/github.com/spf13/cobra:go_default_library",
|
||||||
"//vendor/github.com/spf13/pflag:go_default_library",
|
"//vendor/github.com/spf13/pflag:go_default_library",
|
||||||
|
@ -26,7 +26,6 @@ import (
|
|||||||
mangen "github.com/cpuguy83/go-md2man/md2man"
|
mangen "github.com/cpuguy83/go-md2man/md2man"
|
||||||
"github.com/spf13/cobra"
|
"github.com/spf13/cobra"
|
||||||
"github.com/spf13/pflag"
|
"github.com/spf13/pflag"
|
||||||
"k8s.io/apiserver/pkg/server"
|
|
||||||
ccmapp "k8s.io/kubernetes/cmd/cloud-controller-manager/app"
|
ccmapp "k8s.io/kubernetes/cmd/cloud-controller-manager/app"
|
||||||
"k8s.io/kubernetes/cmd/genutils"
|
"k8s.io/kubernetes/cmd/genutils"
|
||||||
apiservapp "k8s.io/kubernetes/cmd/kube-apiserver/app"
|
apiservapp "k8s.io/kubernetes/cmd/kube-apiserver/app"
|
||||||
@ -63,7 +62,7 @@ func main() {
|
|||||||
switch module {
|
switch module {
|
||||||
case "kube-apiserver":
|
case "kube-apiserver":
|
||||||
// generate manpage for kube-apiserver
|
// generate manpage for kube-apiserver
|
||||||
apiserver := apiservapp.NewAPIServerCommand(server.SetupSignalHandler())
|
apiserver := apiservapp.NewAPIServerCommand()
|
||||||
genMarkdown(apiserver, "", outDir)
|
genMarkdown(apiserver, "", outDir)
|
||||||
for _, c := range apiserver.Commands() {
|
for _, c := range apiserver.Commands() {
|
||||||
genMarkdown(c, "kube-apiserver", outDir)
|
genMarkdown(c, "kube-apiserver", outDir)
|
||||||
@ -98,7 +97,7 @@ func main() {
|
|||||||
}
|
}
|
||||||
case "kubelet":
|
case "kubelet":
|
||||||
// generate manpage for kubelet
|
// generate manpage for kubelet
|
||||||
kubelet := kubeletapp.NewKubeletCommand(server.SetupSignalHandler())
|
kubelet := kubeletapp.NewKubeletCommand()
|
||||||
genMarkdown(kubelet, "", outDir)
|
genMarkdown(kubelet, "", outDir)
|
||||||
for _, c := range kubelet.Commands() {
|
for _, c := range kubelet.Commands() {
|
||||||
genMarkdown(c, "kubelet", outDir)
|
genMarkdown(c, "kubelet", outDir)
|
||||||
|
@ -27,7 +27,6 @@ go_library(
|
|||||||
"//pkg/client/metrics/prometheus:go_default_library",
|
"//pkg/client/metrics/prometheus:go_default_library",
|
||||||
"//pkg/kubectl/cmd:go_default_library",
|
"//pkg/kubectl/cmd:go_default_library",
|
||||||
"//pkg/version/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/cli/flag:go_default_library",
|
"//staging/src/k8s.io/component-base/cli/flag:go_default_library",
|
||||||
"//staging/src/k8s.io/component-base/logs:go_default_library",
|
"//staging/src/k8s.io/component-base/logs:go_default_library",
|
||||||
"//vendor/github.com/spf13/cobra:go_default_library",
|
"//vendor/github.com/spf13/cobra:go_default_library",
|
||||||
|
@ -32,7 +32,6 @@ import (
|
|||||||
"github.com/spf13/cobra"
|
"github.com/spf13/cobra"
|
||||||
"github.com/spf13/pflag"
|
"github.com/spf13/pflag"
|
||||||
|
|
||||||
"k8s.io/apiserver/pkg/server"
|
|
||||||
cliflag "k8s.io/component-base/cli/flag"
|
cliflag "k8s.io/component-base/cli/flag"
|
||||||
"k8s.io/component-base/logs"
|
"k8s.io/component-base/logs"
|
||||||
cloudcontrollermanager "k8s.io/kubernetes/cmd/cloud-controller-manager/app"
|
cloudcontrollermanager "k8s.io/kubernetes/cmd/cloud-controller-manager/app"
|
||||||
@ -49,7 +48,7 @@ import (
|
|||||||
func main() {
|
func main() {
|
||||||
rand.Seed(time.Now().UnixNano())
|
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
|
// 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
|
// 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
|
// 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
|
// these have to be functions since the command is polymorphic. Cobra wants you to be top level
|
||||||
// command to get executed
|
// 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() }
|
controller := func() *cobra.Command { return kubecontrollermanager.NewControllerManagerCommand() }
|
||||||
proxy := func() *cobra.Command { return kubeproxy.NewProxyCommand() }
|
proxy := func() *cobra.Command { return kubeproxy.NewProxyCommand() }
|
||||||
scheduler := func() *cobra.Command { return kubescheduler.NewSchedulerCommand() }
|
scheduler := func() *cobra.Command { return kubescheduler.NewSchedulerCommand() }
|
||||||
kubectlCmd := func() *cobra.Command { return kubectl.NewDefaultKubectlCommand() }
|
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() }
|
cloudController := func() *cobra.Command { return cloudcontrollermanager.NewCloudControllerManagerCommand() }
|
||||||
|
|
||||||
commandFns := []func() *cobra.Command{
|
commandFns := []func() *cobra.Command{
|
||||||
|
@ -22,7 +22,6 @@ go_library(
|
|||||||
"//cmd/kube-apiserver/app:go_default_library",
|
"//cmd/kube-apiserver/app:go_default_library",
|
||||||
"//pkg/util/prometheusclientgo:go_default_library",
|
"//pkg/util/prometheusclientgo:go_default_library",
|
||||||
"//pkg/version/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",
|
"//staging/src/k8s.io/component-base/logs:go_default_library",
|
||||||
],
|
],
|
||||||
)
|
)
|
||||||
|
@ -24,7 +24,6 @@ import (
|
|||||||
"os"
|
"os"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"k8s.io/apiserver/pkg/server"
|
|
||||||
"k8s.io/component-base/logs"
|
"k8s.io/component-base/logs"
|
||||||
"k8s.io/kubernetes/cmd/kube-apiserver/app"
|
"k8s.io/kubernetes/cmd/kube-apiserver/app"
|
||||||
_ "k8s.io/kubernetes/pkg/util/prometheusclientgo" // load all the prometheus client-go plugins
|
_ "k8s.io/kubernetes/pkg/util/prometheusclientgo" // load all the prometheus client-go plugins
|
||||||
@ -34,7 +33,7 @@ import (
|
|||||||
func main() {
|
func main() {
|
||||||
rand.Seed(time.Now().UnixNano())
|
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
|
// 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
|
// utilflag.InitFlags() (by removing its pflag.Parse() call). For now, we have to set the
|
||||||
|
@ -88,7 +88,7 @@ const etcdRetryLimit = 60
|
|||||||
const etcdRetryInterval = 1 * time.Second
|
const etcdRetryInterval = 1 * time.Second
|
||||||
|
|
||||||
// NewAPIServerCommand creates a *cobra.Command object with default parameters
|
// NewAPIServerCommand creates a *cobra.Command object with default parameters
|
||||||
func NewAPIServerCommand(stopCh <-chan struct{}) *cobra.Command {
|
func NewAPIServerCommand() *cobra.Command {
|
||||||
s := options.NewServerRunOptions()
|
s := options.NewServerRunOptions()
|
||||||
cmd := &cobra.Command{
|
cmd := &cobra.Command{
|
||||||
Use: "kube-apiserver",
|
Use: "kube-apiserver",
|
||||||
@ -111,7 +111,7 @@ cluster's shared state through which all other components interact.`,
|
|||||||
return utilerrors.NewAggregate(errs)
|
return utilerrors.NewAggregate(errs)
|
||||||
}
|
}
|
||||||
|
|
||||||
return Run(completedOptions, stopCh)
|
return Run(completedOptions, genericapiserver.SetupSignalHandler())
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -21,7 +21,6 @@ go_library(
|
|||||||
"//cmd/kubelet/app:go_default_library",
|
"//cmd/kubelet/app:go_default_library",
|
||||||
"//pkg/client/metrics/prometheus:go_default_library",
|
"//pkg/client/metrics/prometheus:go_default_library",
|
||||||
"//pkg/version/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",
|
"//staging/src/k8s.io/component-base/logs:go_default_library",
|
||||||
],
|
],
|
||||||
)
|
)
|
||||||
|
@ -122,6 +122,7 @@ go_library(
|
|||||||
"//staging/src/k8s.io/apiserver/pkg/authentication/authenticatorfactory:go_default_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/authorizer:go_default_library",
|
||||||
"//staging/src/k8s.io/apiserver/pkg/authorization/authorizerfactory: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/server/healthz:go_default_library",
|
||||||
"//staging/src/k8s.io/apiserver/pkg/util/feature:go_default_library",
|
"//staging/src/k8s.io/apiserver/pkg/util/feature:go_default_library",
|
||||||
"//staging/src/k8s.io/client-go/kubernetes:go_default_library",
|
"//staging/src/k8s.io/client-go/kubernetes:go_default_library",
|
||||||
|
@ -46,6 +46,7 @@ import (
|
|||||||
utilruntime "k8s.io/apimachinery/pkg/util/runtime"
|
utilruntime "k8s.io/apimachinery/pkg/util/runtime"
|
||||||
"k8s.io/apimachinery/pkg/util/sets"
|
"k8s.io/apimachinery/pkg/util/sets"
|
||||||
"k8s.io/apimachinery/pkg/util/wait"
|
"k8s.io/apimachinery/pkg/util/wait"
|
||||||
|
genericapiserver "k8s.io/apiserver/pkg/server"
|
||||||
"k8s.io/apiserver/pkg/server/healthz"
|
"k8s.io/apiserver/pkg/server/healthz"
|
||||||
utilfeature "k8s.io/apiserver/pkg/util/feature"
|
utilfeature "k8s.io/apiserver/pkg/util/feature"
|
||||||
clientset "k8s.io/client-go/kubernetes"
|
clientset "k8s.io/client-go/kubernetes"
|
||||||
@ -108,7 +109,7 @@ const (
|
|||||||
)
|
)
|
||||||
|
|
||||||
// NewKubeletCommand creates a *cobra.Command object with default parameters
|
// 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 := pflag.NewFlagSet(componentKubelet, pflag.ContinueOnError)
|
||||||
cleanFlagSet.SetNormalizeFunc(cliflag.WordSepNormalizeFunc)
|
cleanFlagSet.SetNormalizeFunc(cliflag.WordSepNormalizeFunc)
|
||||||
kubeletFlags := options.NewKubeletFlags()
|
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
|
// add the kubelet config controller to kubeletDeps
|
||||||
kubeletDeps.KubeletConfigController = kubeletConfigController
|
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
|
// start the experimental docker shim, if enabled
|
||||||
if kubeletServer.KubeletFlags.ExperimentalDockershim {
|
if kubeletServer.KubeletFlags.ExperimentalDockershim {
|
||||||
if err := RunDockershim(&kubeletServer.KubeletFlags, kubeletConfig, stopCh); err != nil {
|
if err := RunDockershim(&kubeletServer.KubeletFlags, kubeletConfig, stopCh); err != nil {
|
||||||
|
@ -26,7 +26,6 @@ import (
|
|||||||
"os"
|
"os"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"k8s.io/apiserver/pkg/server"
|
|
||||||
"k8s.io/component-base/logs"
|
"k8s.io/component-base/logs"
|
||||||
"k8s.io/kubernetes/cmd/kubelet/app"
|
"k8s.io/kubernetes/cmd/kubelet/app"
|
||||||
_ "k8s.io/kubernetes/pkg/client/metrics/prometheus" // for client metric registration
|
_ "k8s.io/kubernetes/pkg/client/metrics/prometheus" // for client metric registration
|
||||||
@ -36,7 +35,7 @@ import (
|
|||||||
func main() {
|
func main() {
|
||||||
rand.Seed(time.Now().UnixNano())
|
rand.Seed(time.Now().UnixNano())
|
||||||
|
|
||||||
command := app.NewKubeletCommand(server.SetupSignalHandler())
|
command := app.NewKubeletCommand()
|
||||||
logs.InitLogs()
|
logs.InitLogs()
|
||||||
defer logs.FlushLogs()
|
defer logs.FlushLogs()
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user