From 53adde65ce000c4d90ee8f807e90658426733a52 Mon Sep 17 00:00:00 2001 From: mattjmcnaughton Date: Sat, 1 Feb 2020 12:07:46 -0500 Subject: [PATCH] Remove `ExperimentalDockershim` from kubelet Remove one of two uses of Dockershim in `cmd/kubelet`. The other is for creating a docker client which we pass to the Kubelet... we will handle that refactor in a separate diff. I'm fairly confident, though need to double check, that no one is actually using this experimental dockershim behavior. If they are, I think we will want to find a new way to support it (that doesn't require using the Kubelet only to launch Dockershim). --- cmd/kubelet/app/BUILD | 2 - cmd/kubelet/app/options/container_runtime.go | 1 - cmd/kubelet/app/server.go | 59 -------------------- pkg/kubelet/config/flags.go | 4 -- 4 files changed, 66 deletions(-) diff --git a/cmd/kubelet/app/BUILD b/cmd/kubelet/app/BUILD index edf75aa9b82..49b78057cfc 100644 --- a/cmd/kubelet/app/BUILD +++ b/cmd/kubelet/app/BUILD @@ -61,13 +61,11 @@ go_library( "//pkg/kubelet/config:go_default_library", "//pkg/kubelet/container:go_default_library", "//pkg/kubelet/dockershim:go_default_library", - "//pkg/kubelet/dockershim/remote:go_default_library", "//pkg/kubelet/eviction:go_default_library", "//pkg/kubelet/eviction/api:go_default_library", "//pkg/kubelet/kubeletconfig:go_default_library", "//pkg/kubelet/kubeletconfig/configfiles:go_default_library", "//pkg/kubelet/server:go_default_library", - "//pkg/kubelet/server/streaming:go_default_library", "//pkg/kubelet/stats/pidlimit:go_default_library", "//pkg/kubelet/types:go_default_library", "//pkg/util/filesystem:go_default_library", diff --git a/cmd/kubelet/app/options/container_runtime.go b/cmd/kubelet/app/options/container_runtime.go index 512b43988b3..f0bb64f582f 100644 --- a/cmd/kubelet/app/options/container_runtime.go +++ b/cmd/kubelet/app/options/container_runtime.go @@ -51,7 +51,6 @@ func NewContainerRuntimeOptions() *config.ContainerRuntimeOptions { DockershimRootDirectory: "/var/lib/dockershim", PodSandboxImage: defaultPodSandboxImage, ImagePullProgressDeadline: metav1.Duration{Duration: 1 * time.Minute}, - ExperimentalDockershim: false, //Alpha feature CNIBinDir: "/opt/cni/bin", diff --git a/cmd/kubelet/app/server.go b/cmd/kubelet/app/server.go index 64a6d960ad9..3013f225d48 100644 --- a/cmd/kubelet/app/server.go +++ b/cmd/kubelet/app/server.go @@ -24,7 +24,6 @@ import ( "fmt" "net" "net/http" - "net/url" "os" "path" "path/filepath" @@ -85,13 +84,11 @@ import ( "k8s.io/kubernetes/pkg/kubelet/config" kubecontainer "k8s.io/kubernetes/pkg/kubelet/container" "k8s.io/kubernetes/pkg/kubelet/dockershim" - dockerremote "k8s.io/kubernetes/pkg/kubelet/dockershim/remote" "k8s.io/kubernetes/pkg/kubelet/eviction" evictionapi "k8s.io/kubernetes/pkg/kubelet/eviction/api" dynamickubeletconfig "k8s.io/kubernetes/pkg/kubelet/kubeletconfig" "k8s.io/kubernetes/pkg/kubelet/kubeletconfig/configfiles" "k8s.io/kubernetes/pkg/kubelet/server" - "k8s.io/kubernetes/pkg/kubelet/server/streaming" "k8s.io/kubernetes/pkg/kubelet/stats/pidlimit" kubetypes "k8s.io/kubernetes/pkg/kubelet/types" utilfs "k8s.io/kubernetes/pkg/util/filesystem" @@ -259,14 +256,6 @@ HTTP server: The kubelet can also listen for HTTP and respond to a simple API // 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 { - klog.Fatal(err) - } - return - } - // run the kubelet klog.V(5).Infof("KubeletConfiguration: %#v", kubeletServer.KubeletConfiguration) if err := Run(kubeletServer, kubeletDeps, utilfeature.DefaultFeatureGate, stopCh); err != nil { @@ -1271,51 +1260,3 @@ func BootstrapKubeletConfigController(dynamicConfigDir string, transform dynamic } return kc, c, nil } - -// RunDockershim only starts the dockershim in current process. This is only used for cri validate testing purpose -// TODO(random-liu): Move this to a separate binary. -func RunDockershim(f *options.KubeletFlags, c *kubeletconfiginternal.KubeletConfiguration, stopCh <-chan struct{}) error { - r := &f.ContainerRuntimeOptions - - // Initialize docker client configuration. - dockerClientConfig := &dockershim.ClientConfig{ - DockerEndpoint: r.DockerEndpoint, - RuntimeRequestTimeout: c.RuntimeRequestTimeout.Duration, - ImagePullProgressDeadline: r.ImagePullProgressDeadline.Duration, - } - - // Initialize network plugin settings. - pluginSettings := dockershim.NetworkPluginSettings{ - HairpinMode: kubeletconfiginternal.HairpinMode(c.HairpinMode), - NonMasqueradeCIDR: f.NonMasqueradeCIDR, - PluginName: r.NetworkPluginName, - PluginConfDir: r.CNIConfDir, - PluginBinDirString: r.CNIBinDir, - PluginCacheDir: r.CNICacheDir, - MTU: int(r.NetworkPluginMTU), - } - - // Initialize streaming configuration. (Not using TLS now) - streamingConfig := &streaming.Config{ - // Use a relative redirect (no scheme or host). - BaseURL: &url.URL{Path: "/cri/"}, - StreamIdleTimeout: c.StreamingConnectionIdleTimeout.Duration, - StreamCreationTimeout: streaming.DefaultConfig.StreamCreationTimeout, - SupportedRemoteCommandProtocols: streaming.DefaultConfig.SupportedRemoteCommandProtocols, - SupportedPortForwardProtocols: streaming.DefaultConfig.SupportedPortForwardProtocols, - } - - // Standalone dockershim will always start the local streaming server. - ds, err := dockershim.NewDockerService(dockerClientConfig, r.PodSandboxImage, streamingConfig, &pluginSettings, - f.RuntimeCgroups, c.CgroupDriver, r.DockershimRootDirectory, true /*startLocalStreamingServer*/) - if err != nil { - return err - } - klog.V(2).Infof("Starting the GRPC server for the docker CRI shim.") - server := dockerremote.NewDockerServer(f.RemoteRuntimeEndpoint, ds) - if err := server.Start(); err != nil { - return err - } - <-stopCh - return nil -} diff --git a/pkg/kubelet/config/flags.go b/pkg/kubelet/config/flags.go index dfdd5d0ab5f..bc1b13abcf0 100644 --- a/pkg/kubelet/config/flags.go +++ b/pkg/kubelet/config/flags.go @@ -46,8 +46,6 @@ type ContainerRuntimeOptions struct { // DockershimRootDirectory is the path to the dockershim root directory. Defaults to // /var/lib/dockershim if unset. Exposed for integration testing (e.g. in OpenShift). DockershimRootDirectory string - // Enable dockershim only mode. - ExperimentalDockershim bool // PodSandboxImage is the image whose network/ipc namespaces // containers in each pod will use. PodSandboxImage string @@ -89,8 +87,6 @@ func (s *ContainerRuntimeOptions) AddFlags(fs *pflag.FlagSet) { fs.MarkDeprecated("redirect-container-streaming", "Container streaming redirection will be removed from the kubelet in v1.20, and this flag will be removed in v1.22. For more details, see http://git.k8s.io/enhancements/keps/sig-node/20191205-container-streaming-requests.md") // Docker-specific settings. - fs.BoolVar(&s.ExperimentalDockershim, "experimental-dockershim", s.ExperimentalDockershim, "Enable dockershim only mode. In this mode, kubelet will only start dockershim without any other functionalities. This flag only serves test purpose, please do not use it unless you are conscious of what you are doing. [default=false]") - fs.MarkHidden("experimental-dockershim") fs.StringVar(&s.DockershimRootDirectory, "experimental-dockershim-root-directory", s.DockershimRootDirectory, "Path to the dockershim root directory.") fs.MarkHidden("experimental-dockershim-root-directory") fs.StringVar(&s.PodSandboxImage, "pod-infra-container-image", s.PodSandboxImage, fmt.Sprintf("The image whose network/ipc namespaces containers in each pod will use. %s", dockerOnlyWarning))