refactor cmd/kubelet/app/server.go to simplify the kubeFlags and KubeletConfiguration invokes

This commit is contained in:
tianshapjq 2018-04-12 15:05:06 +08:00
parent 4e0a60a44c
commit 57e0f05fad
2 changed files with 45 additions and 42 deletions

View File

@ -719,7 +719,7 @@ func run(s *options.KubeletServer, kubeDeps *kubelet.Dependencies, stopCh <-chan
glog.Warning(err) glog.Warning(err)
} }
if err := RunKubelet(&s.KubeletFlags, &s.KubeletConfiguration, kubeDeps, s.RunOnce); err != nil { if err := RunKubelet(s, kubeDeps, s.RunOnce); err != nil {
return err return err
} }
@ -885,8 +885,8 @@ func addChaosToClientConfig(s *options.KubeletServer, config *restclient.Config)
// 2 Kubelet binary // 2 Kubelet binary
// 3 Standalone 'kubernetes' binary // 3 Standalone 'kubernetes' binary
// Eventually, #2 will be replaced with instances of #3 // Eventually, #2 will be replaced with instances of #3
func RunKubelet(kubeFlags *options.KubeletFlags, kubeCfg *kubeletconfiginternal.KubeletConfiguration, kubeDeps *kubelet.Dependencies, runOnce bool) error { func RunKubelet(kubeServer *options.KubeletServer, kubeDeps *kubelet.Dependencies, runOnce bool) error {
hostname := nodeutil.GetHostname(kubeFlags.HostnameOverride) hostname := nodeutil.GetHostname(kubeServer.HostnameOverride)
// Query the cloud provider for our node name, default to hostname if kubeDeps.Cloud == nil // Query the cloud provider for our node name, default to hostname if kubeDeps.Cloud == nil
nodeName, err := getNodeName(kubeDeps.Cloud, hostname) nodeName, err := getNodeName(kubeDeps.Cloud, hostname)
if err != nil { if err != nil {
@ -900,17 +900,17 @@ func RunKubelet(kubeFlags *options.KubeletFlags, kubeCfg *kubeletconfiginternal.
// prefer this to be done as part of an independent validation step on the // prefer this to be done as part of an independent validation step on the
// KubeletConfiguration. But as far as I can tell, we don't have an explicit // KubeletConfiguration. But as far as I can tell, we don't have an explicit
// place for validation of the KubeletConfiguration yet. // place for validation of the KubeletConfiguration yet.
hostNetworkSources, err := kubetypes.GetValidatedSources(kubeFlags.HostNetworkSources) hostNetworkSources, err := kubetypes.GetValidatedSources(kubeServer.HostNetworkSources)
if err != nil { if err != nil {
return err return err
} }
hostPIDSources, err := kubetypes.GetValidatedSources(kubeFlags.HostPIDSources) hostPIDSources, err := kubetypes.GetValidatedSources(kubeServer.HostPIDSources)
if err != nil { if err != nil {
return err return err
} }
hostIPCSources, err := kubetypes.GetValidatedSources(kubeFlags.HostIPCSources) hostIPCSources, err := kubetypes.GetValidatedSources(kubeServer.HostIPCSources)
if err != nil { if err != nil {
return err return err
} }
@ -920,46 +920,46 @@ func RunKubelet(kubeFlags *options.KubeletFlags, kubeCfg *kubeletconfiginternal.
HostPIDSources: hostPIDSources, HostPIDSources: hostPIDSources,
HostIPCSources: hostIPCSources, HostIPCSources: hostIPCSources,
} }
capabilities.Setup(kubeFlags.AllowPrivileged, privilegedSources, 0) capabilities.Setup(kubeServer.AllowPrivileged, privilegedSources, 0)
credentialprovider.SetPreferredDockercfgPath(kubeFlags.RootDirectory) credentialprovider.SetPreferredDockercfgPath(kubeServer.RootDirectory)
glog.V(2).Infof("Using root directory: %v", kubeFlags.RootDirectory) glog.V(2).Infof("Using root directory: %v", kubeServer.RootDirectory)
if kubeDeps.OSInterface == nil { if kubeDeps.OSInterface == nil {
kubeDeps.OSInterface = kubecontainer.RealOS{} kubeDeps.OSInterface = kubecontainer.RealOS{}
} }
k, err := CreateAndInitKubelet(kubeCfg, k, err := CreateAndInitKubelet(&kubeServer.KubeletConfiguration,
kubeDeps, kubeDeps,
&kubeFlags.ContainerRuntimeOptions, &kubeServer.ContainerRuntimeOptions,
kubeFlags.ContainerRuntime, kubeServer.ContainerRuntime,
kubeFlags.RuntimeCgroups, kubeServer.RuntimeCgroups,
kubeFlags.HostnameOverride, kubeServer.HostnameOverride,
kubeFlags.NodeIP, kubeServer.NodeIP,
kubeFlags.ProviderID, kubeServer.ProviderID,
kubeFlags.CloudProvider, kubeServer.CloudProvider,
kubeFlags.CertDirectory, kubeServer.CertDirectory,
kubeFlags.RootDirectory, kubeServer.RootDirectory,
kubeFlags.RegisterNode, kubeServer.RegisterNode,
kubeFlags.RegisterWithTaints, kubeServer.RegisterWithTaints,
kubeFlags.AllowedUnsafeSysctls, kubeServer.AllowedUnsafeSysctls,
kubeFlags.RemoteRuntimeEndpoint, kubeServer.RemoteRuntimeEndpoint,
kubeFlags.RemoteImageEndpoint, kubeServer.RemoteImageEndpoint,
kubeFlags.ExperimentalMounterPath, kubeServer.ExperimentalMounterPath,
kubeFlags.ExperimentalKernelMemcgNotification, kubeServer.ExperimentalKernelMemcgNotification,
kubeFlags.ExperimentalCheckNodeCapabilitiesBeforeMount, kubeServer.ExperimentalCheckNodeCapabilitiesBeforeMount,
kubeFlags.ExperimentalNodeAllocatableIgnoreEvictionThreshold, kubeServer.ExperimentalNodeAllocatableIgnoreEvictionThreshold,
kubeFlags.MinimumGCAge, kubeServer.MinimumGCAge,
kubeFlags.MaxPerPodContainerCount, kubeServer.MaxPerPodContainerCount,
kubeFlags.MaxContainerCount, kubeServer.MaxContainerCount,
kubeFlags.MasterServiceNamespace, kubeServer.MasterServiceNamespace,
kubeFlags.RegisterSchedulable, kubeServer.RegisterSchedulable,
kubeFlags.NonMasqueradeCIDR, kubeServer.NonMasqueradeCIDR,
kubeFlags.KeepTerminatedPodVolumes, kubeServer.KeepTerminatedPodVolumes,
kubeFlags.NodeLabels, kubeServer.NodeLabels,
kubeFlags.SeccompProfileRoot, kubeServer.SeccompProfileRoot,
kubeFlags.BootstrapCheckpointPath, kubeServer.BootstrapCheckpointPath,
kubeFlags.NodeStatusMaxImages) kubeServer.NodeStatusMaxImages)
if err != nil { if err != nil {
return fmt.Errorf("failed to create kubelet: %v", err) return fmt.Errorf("failed to create kubelet: %v", err)
} }
@ -971,7 +971,7 @@ func RunKubelet(kubeFlags *options.KubeletFlags, kubeCfg *kubeletconfiginternal.
} }
podCfg := kubeDeps.PodConfig podCfg := kubeDeps.PodConfig
rlimit.RlimitNumFiles(uint64(kubeCfg.MaxOpenFiles)) rlimit.RlimitNumFiles(uint64(kubeServer.MaxOpenFiles))
// process pods and exit. // process pods and exit.
if runOnce { if runOnce {
@ -980,7 +980,7 @@ func RunKubelet(kubeFlags *options.KubeletFlags, kubeCfg *kubeletconfiginternal.
} }
glog.Infof("Started kubelet as runonce") glog.Infof("Started kubelet as runonce")
} else { } else {
startKubelet(k, podCfg, kubeCfg, kubeDeps, kubeFlags.EnableServer) startKubelet(k, podCfg, &kubeServer.KubeletConfiguration, kubeDeps, kubeServer.EnableServer)
glog.Infof("Started kubelet") glog.Infof("Started kubelet")
} }
return nil return nil

View File

@ -87,7 +87,10 @@ func NewHollowKubelet(
// Starts this HollowKubelet and blocks. // Starts this HollowKubelet and blocks.
func (hk *HollowKubelet) Run() { func (hk *HollowKubelet) Run() {
if err := kubeletapp.RunKubelet(hk.KubeletFlags, hk.KubeletConfiguration, hk.KubeletDeps, false); err != nil { if err := kubeletapp.RunKubelet(&options.KubeletServer{
KubeletFlags: *hk.KubeletFlags,
KubeletConfiguration: *hk.KubeletConfiguration,
}, hk.KubeletDeps, false); err != nil {
glog.Fatalf("Failed to run HollowKubelet: %v. Exiting.", err) glog.Fatalf("Failed to run HollowKubelet: %v. Exiting.", err)
} }
select {} select {}