From 34c8f51dcb0c8612df824783711d6f55843ebc34 Mon Sep 17 00:00:00 2001 From: mattjmcnaughton Date: Sun, 2 Feb 2020 16:00:28 -0500 Subject: [PATCH] Remove all uses of `dockershim` from `cmd/kubelet` We can remove all uses of `dockershim` from `cmd/kubelet`, by just passing the docker options to the kubelet in their pure form, instead of using them to create a `dockerClientConfig` (which is defined in dockershim). We can then construct the `dockerClientConfig` only when we actually need it. --- cmd/kubelet/app/BUILD | 1 - cmd/kubelet/app/server.go | 7 +++---- pkg/kubelet/kubelet.go | 8 +++++++- pkg/kubelet/kubelet_dockershim.go | 7 ++++++- 4 files changed, 16 insertions(+), 7 deletions(-) diff --git a/cmd/kubelet/app/BUILD b/cmd/kubelet/app/BUILD index 49b78057cfc..441967ee508 100644 --- a/cmd/kubelet/app/BUILD +++ b/cmd/kubelet/app/BUILD @@ -60,7 +60,6 @@ go_library( "//pkg/kubelet/cm/cpuset:go_default_library", "//pkg/kubelet/config:go_default_library", "//pkg/kubelet/container:go_default_library", - "//pkg/kubelet/dockershim:go_default_library", "//pkg/kubelet/eviction:go_default_library", "//pkg/kubelet/eviction/api:go_default_library", "//pkg/kubelet/kubeletconfig:go_default_library", diff --git a/cmd/kubelet/app/server.go b/cmd/kubelet/app/server.go index 3013f225d48..9ceb95848a4 100644 --- a/cmd/kubelet/app/server.go +++ b/cmd/kubelet/app/server.go @@ -83,7 +83,6 @@ import ( "k8s.io/kubernetes/pkg/kubelet/cm/cpuset" "k8s.io/kubernetes/pkg/kubelet/config" kubecontainer "k8s.io/kubernetes/pkg/kubelet/container" - "k8s.io/kubernetes/pkg/kubelet/dockershim" "k8s.io/kubernetes/pkg/kubelet/eviction" evictionapi "k8s.io/kubernetes/pkg/kubelet/eviction/api" dynamickubeletconfig "k8s.io/kubernetes/pkg/kubelet/kubeletconfig" @@ -364,9 +363,9 @@ func UnsecuredDependencies(s *options.KubeletServer, featureGate featuregate.Fea hu := hostutil.NewHostUtil() var pluginRunner = exec.New() - var dockerClientConfig *dockershim.ClientConfig + var dockerOptions *kubelet.DockerOptions if s.ContainerRuntime == kubetypes.DockerContainerRuntime { - dockerClientConfig = &dockershim.ClientConfig{ + dockerOptions = &kubelet.DockerOptions{ DockerEndpoint: s.DockerEndpoint, RuntimeRequestTimeout: s.RuntimeRequestTimeout.Duration, ImagePullProgressDeadline: s.ImagePullProgressDeadline.Duration, @@ -382,7 +381,7 @@ func UnsecuredDependencies(s *options.KubeletServer, featureGate featuregate.Fea CAdvisorInterface: nil, // cadvisor.New launches background processes (bg http.ListenAndServe, and some bg cleaners), not set here Cloud: nil, // cloud provider might start background processes ContainerManager: nil, - DockerClientConfig: dockerClientConfig, + DockerOptions: dockerOptions, KubeClient: nil, HeartbeatClient: nil, EventClient: nil, diff --git a/pkg/kubelet/kubelet.go b/pkg/kubelet/kubelet.go index b66bfe1ad6a..4eeb7964c00 100644 --- a/pkg/kubelet/kubelet.go +++ b/pkg/kubelet/kubelet.go @@ -212,7 +212,7 @@ type Dependencies struct { CAdvisorInterface cadvisor.Interface Cloud cloudprovider.Interface ContainerManager cm.ContainerManager - DockerClientConfig *dockershim.ClientConfig + DockerOptions *DockerOptions EventClient v1core.EventsGetter HeartbeatClient clientset.Interface OnHeartbeatFailure func() @@ -236,6 +236,12 @@ type Dependencies struct { useLegacyCadvisorStats bool } +type DockerOptions struct { + DockerEndpoint string + RuntimeRequestTimeout time.Duration + ImagePullProgressDeadline time.Duration +} + // makePodSourceConfig creates a config.PodConfig from the given // KubeletConfiguration or returns an error. func makePodSourceConfig(kubeCfg *kubeletconfiginternal.KubeletConfiguration, kubeDeps *Dependencies, nodeName types.NodeName, bootstrapCheckpointPath string) (*config.PodConfig, error) { diff --git a/pkg/kubelet/kubelet_dockershim.go b/pkg/kubelet/kubelet_dockershim.go index 05def3f0c0b..1900fe2f8db 100644 --- a/pkg/kubelet/kubelet_dockershim.go +++ b/pkg/kubelet/kubelet_dockershim.go @@ -46,7 +46,12 @@ func runDockershim(kubeCfg *kubeletconfiginternal.KubeletConfiguration, // Create and start the CRI shim running as a grpc server. streamingConfig := getStreamingConfig(kubeCfg, kubeDeps, crOptions) - ds, err := dockershim.NewDockerService(kubeDeps.DockerClientConfig, crOptions.PodSandboxImage, streamingConfig, + dockerClientConfig := &dockershim.ClientConfig{ + DockerEndpoint: kubeDeps.DockerOptions.DockerEndpoint, + RuntimeRequestTimeout: kubeDeps.DockerOptions.RuntimeRequestTimeout, + ImagePullProgressDeadline: kubeDeps.DockerOptions.ImagePullProgressDeadline, + } + ds, err := dockershim.NewDockerService(dockerClientConfig, crOptions.PodSandboxImage, streamingConfig, &pluginSettings, runtimeCgroups, kubeCfg.CgroupDriver, crOptions.DockershimRootDirectory, !crOptions.RedirectContainerStreaming) if err != nil { return err