From 53adde65ce000c4d90ee8f807e90658426733a52 Mon Sep 17 00:00:00 2001 From: mattjmcnaughton Date: Sat, 1 Feb 2020 12:07:46 -0500 Subject: [PATCH 1/8] 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)) From e0e6d54cdf5c17834928430420313a80e8cf1586 Mon Sep 17 00:00:00 2001 From: mattjmcnaughton Date: Sun, 2 Feb 2020 15:43:16 -0500 Subject: [PATCH 2/8] Extract running Dockershim into own file Extract a `runDockershim` function into a file outside of `kubelet.go`. We can use build tags to compile two separate functions... one which actually runs dockershim and one that is a no-op. --- pkg/kubelet/BUILD | 1 + pkg/kubelet/dockershim/dockershim_nodocker.go | 3 + pkg/kubelet/kubelet.go | 48 ++---------- pkg/kubelet/kubelet_dockershim.go | 78 +++++++++++++++++++ pkg/kubelet/kubelet_dockershim_nodocker.go | 36 +++++++++ 5 files changed, 126 insertions(+), 40 deletions(-) create mode 100644 pkg/kubelet/dockershim/dockershim_nodocker.go create mode 100644 pkg/kubelet/kubelet_dockershim.go create mode 100644 pkg/kubelet/kubelet_dockershim_nodocker.go diff --git a/pkg/kubelet/BUILD b/pkg/kubelet/BUILD index ffe1b4dda69..e44ceaf7e70 100644 --- a/pkg/kubelet/BUILD +++ b/pkg/kubelet/BUILD @@ -13,6 +13,7 @@ go_library( "doc.go", "errors.go", "kubelet.go", + "kubelet_dockershim.go", "kubelet_getters.go", "kubelet_network.go", "kubelet_network_linux.go", diff --git a/pkg/kubelet/dockershim/dockershim_nodocker.go b/pkg/kubelet/dockershim/dockershim_nodocker.go new file mode 100644 index 00000000000..a6e0e2ce074 --- /dev/null +++ b/pkg/kubelet/dockershim/dockershim_nodocker.go @@ -0,0 +1,3 @@ +// +build dockerless + +package dockershim diff --git a/pkg/kubelet/kubelet.go b/pkg/kubelet/kubelet.go index b1adba3b59a..b66bfe1ad6a 100644 --- a/pkg/kubelet/kubelet.go +++ b/pkg/kubelet/kubelet.go @@ -71,7 +71,6 @@ import ( "k8s.io/kubernetes/pkg/kubelet/configmap" 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/events" "k8s.io/kubernetes/pkg/kubelet/eviction" "k8s.io/kubernetes/pkg/kubelet/images" @@ -306,46 +305,15 @@ func PreInitRuntimeService(kubeCfg *kubeletconfiginternal.KubeletConfiguration, switch containerRuntime { case kubetypes.DockerContainerRuntime: - // TODO: These need to become arguments to a standalone docker shim. - pluginSettings := dockershim.NetworkPluginSettings{ - HairpinMode: kubeletconfiginternal.HairpinMode(kubeCfg.HairpinMode), - NonMasqueradeCIDR: nonMasqueradeCIDR, - PluginName: crOptions.NetworkPluginName, - PluginConfDir: crOptions.CNIConfDir, - PluginBinDirString: crOptions.CNIBinDir, - PluginCacheDir: crOptions.CNICacheDir, - MTU: int(crOptions.NetworkPluginMTU), - } - - // 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, - &pluginSettings, runtimeCgroups, kubeCfg.CgroupDriver, crOptions.DockershimRootDirectory, !crOptions.RedirectContainerStreaming) - if err != nil { - return err - } - if crOptions.RedirectContainerStreaming { - kubeDeps.criHandler = ds - } - - // The unix socket for kubelet <-> dockershim communication, dockershim start before runtime service init. - klog.V(5).Infof("RemoteRuntimeEndpoint: %q, RemoteImageEndpoint: %q", + runDockershim( + kubeCfg, + kubeDeps, + crOptions, + runtimeCgroups, remoteRuntimeEndpoint, - remoteImageEndpoint) - klog.V(2).Infof("Starting the GRPC server for the docker CRI shim.") - dockerServer := dockerremote.NewDockerServer(remoteRuntimeEndpoint, ds) - if err := dockerServer.Start(); err != nil { - return err - } - - // Create dockerLegacyService when the logging driver is not supported. - supported, err := ds.IsCRISupportedLogDriver() - if err != nil { - return err - } - if !supported { - kubeDeps.dockerLegacyService = ds - } + remoteImageEndpoint, + nonMasqueradeCIDR, + ) case kubetypes.RemoteContainerRuntime: // No-op. break diff --git a/pkg/kubelet/kubelet_dockershim.go b/pkg/kubelet/kubelet_dockershim.go new file mode 100644 index 00000000000..05def3f0c0b --- /dev/null +++ b/pkg/kubelet/kubelet_dockershim.go @@ -0,0 +1,78 @@ +// +build !dockerless + +/* +Copyright 2020 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package kubelet + +import ( + "k8s.io/klog" + + kubeletconfiginternal "k8s.io/kubernetes/pkg/kubelet/apis/config" + "k8s.io/kubernetes/pkg/kubelet/config" + "k8s.io/kubernetes/pkg/kubelet/dockershim" + dockerremote "k8s.io/kubernetes/pkg/kubelet/dockershim/remote" +) + +func runDockershim(kubeCfg *kubeletconfiginternal.KubeletConfiguration, + kubeDeps *Dependencies, + crOptions *config.ContainerRuntimeOptions, + runtimeCgroups string, + remoteRuntimeEndpoint string, + remoteImageEndpoint string, + nonMasqueradeCIDR string) error { + pluginSettings := dockershim.NetworkPluginSettings{ + HairpinMode: kubeletconfiginternal.HairpinMode(kubeCfg.HairpinMode), + NonMasqueradeCIDR: nonMasqueradeCIDR, + PluginName: crOptions.NetworkPluginName, + PluginConfDir: crOptions.CNIConfDir, + PluginBinDirString: crOptions.CNIBinDir, + PluginCacheDir: crOptions.CNICacheDir, + MTU: int(crOptions.NetworkPluginMTU), + } + + // 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, + &pluginSettings, runtimeCgroups, kubeCfg.CgroupDriver, crOptions.DockershimRootDirectory, !crOptions.RedirectContainerStreaming) + if err != nil { + return err + } + if crOptions.RedirectContainerStreaming { + kubeDeps.criHandler = ds + } + + // The unix socket for kubelet <-> dockershim communication, dockershim start before runtime service init. + klog.V(5).Infof("RemoteRuntimeEndpoint: %q, RemoteImageEndpoint: %q", + remoteRuntimeEndpoint, + remoteImageEndpoint) + klog.V(2).Infof("Starting the GRPC server for the docker CRI shim.") + dockerServer := dockerremote.NewDockerServer(remoteRuntimeEndpoint, ds) + if err := dockerServer.Start(); err != nil { + return err + } + + // Create dockerLegacyService when the logging driver is not supported. + supported, err := ds.IsCRISupportedLogDriver() + if err != nil { + return err + } + if !supported { + kubeDeps.dockerLegacyService = ds + } + + return nil +} diff --git a/pkg/kubelet/kubelet_dockershim_nodocker.go b/pkg/kubelet/kubelet_dockershim_nodocker.go new file mode 100644 index 00000000000..b833934ed5d --- /dev/null +++ b/pkg/kubelet/kubelet_dockershim_nodocker.go @@ -0,0 +1,36 @@ +// +build dockerless + +/* +Copyright 2020 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package kubelet + +import ( + "fmt" + kubeletconfiginternal "k8s.io/kubernetes/pkg/kubelet/apis/config" + "k8s.io/kubernetes/pkg/kubelet/config" +) + +func runDockershim(kubeCfg *kubeletconfiginternal.KubeletConfiguration, + kubeDeps *Dependencies, + crOptions *config.ContainerRuntimeOptions, + runtimeCgroups string, + remoteRuntimeEndpoint string, + remoteImageEndpoint string, + nonMasqueradeCIDR string) error { + + return fmt.Errorf("Trying to use docker runtime, w/ Kubelet compiled w/o docker support.") +} From 34c8f51dcb0c8612df824783711d6f55843ebc34 Mon Sep 17 00:00:00 2001 From: mattjmcnaughton Date: Sun, 2 Feb 2020 16:00:28 -0500 Subject: [PATCH 3/8] 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 From 7fb6c51822e6bfbdd00b4bec55b4ff9c41ac9640 Mon Sep 17 00:00:00 2001 From: mattjmcnaughton Date: Sat, 25 Apr 2020 15:07:17 -0400 Subject: [PATCH 4/8] Move DockerLegacyService interface out of `pkg/kubelet/dockershim` DockerLegacyService interface is used throughout `pkg/kubelet`. It used to live in the `pkg/kubelet/dockershim` package. While we would eventually like to remove it entirely, we need to give users some form of warning. By including the interface in `pkg/kubelet/legacy/logs.go`, we ensure the interface is available to `pkg/kubelet`, even when we are building with the `dockerless` tag (i.e. not compiling the dockershim). While the interface always exists, there will be no implementations of the interface when building with the `dockerless` tag. The lack of implementations should not be an issue, as we only expect `pkg/kubelet` code to need an implementation of the `DockerLegacyService` when we are using docker. If we are using docker, but building with the `dockerless` tag, than this will be just one of many things that breaks. `pkg/kubelet/legacy` might not be the best name for the package... I'm very open to finding a different package name or even an already existing package. --- pkg/kubelet/BUILD | 2 + pkg/kubelet/dockershim/BUILD | 1 + .../dockershim/docker_legacy_service.go | 22 +++----- pkg/kubelet/dockershim/docker_service.go | 3 +- pkg/kubelet/kubelet.go | 6 +-- pkg/kubelet/legacy/BUILD | 27 ++++++++++ pkg/kubelet/legacy/logs.go | 53 +++++++++++++++++++ 7 files changed, 95 insertions(+), 19 deletions(-) create mode 100644 pkg/kubelet/legacy/BUILD create mode 100644 pkg/kubelet/legacy/logs.go diff --git a/pkg/kubelet/BUILD b/pkg/kubelet/BUILD index e44ceaf7e70..84a6190319e 100644 --- a/pkg/kubelet/BUILD +++ b/pkg/kubelet/BUILD @@ -62,6 +62,7 @@ go_library( "//pkg/kubelet/images:go_default_library", "//pkg/kubelet/kubeletconfig:go_default_library", "//pkg/kubelet/kuberuntime:go_default_library", + "//pkg/kubelet/legacy:go_default_library", "//pkg/kubelet/lifecycle:go_default_library", "//pkg/kubelet/logs:go_default_library", "//pkg/kubelet/metrics:go_default_library", @@ -298,6 +299,7 @@ filegroup( "//pkg/kubelet/kubeletconfig:all-srcs", "//pkg/kubelet/kuberuntime:all-srcs", "//pkg/kubelet/leaky:all-srcs", + "//pkg/kubelet/legacy:all-srcs", "//pkg/kubelet/lifecycle:all-srcs", "//pkg/kubelet/logs:all-srcs", "//pkg/kubelet/metrics:all-srcs", diff --git a/pkg/kubelet/dockershim/BUILD b/pkg/kubelet/dockershim/BUILD index 2ec3bfd14de..e9674de52fa 100644 --- a/pkg/kubelet/dockershim/BUILD +++ b/pkg/kubelet/dockershim/BUILD @@ -51,6 +51,7 @@ go_library( "//pkg/kubelet/dockershim/network/kubenet:go_default_library", "//pkg/kubelet/kuberuntime:go_default_library", "//pkg/kubelet/leaky:go_default_library", + "//pkg/kubelet/legacy:go_default_library", "//pkg/kubelet/server/streaming:go_default_library", "//pkg/kubelet/types:go_default_library", "//pkg/kubelet/util/cache:go_default_library", diff --git a/pkg/kubelet/dockershim/docker_legacy_service.go b/pkg/kubelet/dockershim/docker_legacy_service.go index 5026722303d..770b1dab9c8 100644 --- a/pkg/kubelet/dockershim/docker_legacy_service.go +++ b/pkg/kubelet/dockershim/docker_legacy_service.go @@ -32,25 +32,17 @@ import ( kubetypes "k8s.io/apimachinery/pkg/types" "k8s.io/klog" kubecontainer "k8s.io/kubernetes/pkg/kubelet/container" - "k8s.io/kubernetes/pkg/kubelet/kuberuntime" "k8s.io/kubernetes/pkg/kubelet/dockershim/libdocker" ) -// DockerLegacyService interface embeds some legacy methods for backward compatibility. -// This file/interface will be removed in the near future. Do not modify or add -// more functions. -type DockerLegacyService interface { - // GetContainerLogs gets logs for a specific container. - GetContainerLogs(context.Context, *v1.Pod, kubecontainer.ContainerID, *v1.PodLogOptions, io.Writer, io.Writer) error - - // IsCRISupportedLogDriver checks whether the logging driver used by docker is - // supported by native CRI integration. - // TODO(resouer): remove this when deprecating unsupported log driver - IsCRISupportedLogDriver() (bool, error) - - kuberuntime.LegacyLogProvider -} +// We define `DockerLegacyService` in `pkg/kubelet/legacy`, instead of in this +// file. We make this decision because `pkg/kubelet` depends on +// `DockerLegacyService`, and we want to be able to build the `kubelet` without +// relying on `github.com/docker/docker` or `pkg/kubelet/dockershim`. +// +// See https://github.com/kubernetes/enhancements/blob/master/keps/sig-node/20200205-build-kubelet-without-docker.md +// for details. // GetContainerLogs get container logs directly from docker daemon. func (d *dockerService) GetContainerLogs(_ context.Context, pod *v1.Pod, containerID kubecontainer.ContainerID, logOptions *v1.PodLogOptions, stdout, stderr io.Writer) error { diff --git a/pkg/kubelet/dockershim/docker_service.go b/pkg/kubelet/dockershim/docker_service.go index 227bef8211a..4cb8a1f31d9 100644 --- a/pkg/kubelet/dockershim/docker_service.go +++ b/pkg/kubelet/dockershim/docker_service.go @@ -40,6 +40,7 @@ import ( "k8s.io/kubernetes/pkg/kubelet/dockershim/network/cni" "k8s.io/kubernetes/pkg/kubelet/dockershim/network/hostport" "k8s.io/kubernetes/pkg/kubelet/dockershim/network/kubenet" + "k8s.io/kubernetes/pkg/kubelet/legacy" "k8s.io/kubernetes/pkg/kubelet/server/streaming" "k8s.io/kubernetes/pkg/kubelet/util/cache" @@ -97,7 +98,7 @@ type DockerService interface { http.Handler // For supporting legacy features. - DockerLegacyService + legacy.DockerLegacyService } // NetworkPluginSettings is the subset of kubelet runtime args we pass diff --git a/pkg/kubelet/kubelet.go b/pkg/kubelet/kubelet.go index 4eeb7964c00..87e06a7a035 100644 --- a/pkg/kubelet/kubelet.go +++ b/pkg/kubelet/kubelet.go @@ -70,12 +70,12 @@ import ( "k8s.io/kubernetes/pkg/kubelet/config" "k8s.io/kubernetes/pkg/kubelet/configmap" kubecontainer "k8s.io/kubernetes/pkg/kubelet/container" - "k8s.io/kubernetes/pkg/kubelet/dockershim" "k8s.io/kubernetes/pkg/kubelet/events" "k8s.io/kubernetes/pkg/kubelet/eviction" "k8s.io/kubernetes/pkg/kubelet/images" "k8s.io/kubernetes/pkg/kubelet/kubeletconfig" "k8s.io/kubernetes/pkg/kubelet/kuberuntime" + "k8s.io/kubernetes/pkg/kubelet/legacy" "k8s.io/kubernetes/pkg/kubelet/lifecycle" "k8s.io/kubernetes/pkg/kubelet/logs" "k8s.io/kubernetes/pkg/kubelet/metrics" @@ -231,7 +231,7 @@ type Dependencies struct { RemoteRuntimeService internalapi.RuntimeService RemoteImageService internalapi.ImageManagerService criHandler http.Handler - dockerLegacyService dockershim.DockerLegacyService + dockerLegacyService legacy.DockerLegacyService // remove it after cadvisor.UsingLegacyCadvisorStats dropped. useLegacyCadvisorStats bool } @@ -1129,7 +1129,7 @@ type Kubelet struct { // dockerLegacyService contains some legacy methods for backward compatibility. // It should be set only when docker is using non json-file logging driver. - dockerLegacyService dockershim.DockerLegacyService + dockerLegacyService legacy.DockerLegacyService // StatsProvider provides the node and the container stats. *stats.StatsProvider diff --git a/pkg/kubelet/legacy/BUILD b/pkg/kubelet/legacy/BUILD new file mode 100644 index 00000000000..c420c57af3c --- /dev/null +++ b/pkg/kubelet/legacy/BUILD @@ -0,0 +1,27 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library") + +go_library( + name = "go_default_library", + srcs = ["logs.go"], + importpath = "k8s.io/kubernetes/pkg/kubelet/legacy", + visibility = ["//visibility:public"], + deps = [ + "//pkg/kubelet/container:go_default_library", + "//pkg/kubelet/kuberuntime:go_default_library", + "//staging/src/k8s.io/api/core/v1:go_default_library", + ], +) + +filegroup( + name = "package-srcs", + srcs = glob(["**"]), + tags = ["automanaged"], + visibility = ["//visibility:private"], +) + +filegroup( + name = "all-srcs", + srcs = [":package-srcs"], + tags = ["automanaged"], + visibility = ["//visibility:public"], +) diff --git a/pkg/kubelet/legacy/logs.go b/pkg/kubelet/legacy/logs.go new file mode 100644 index 00000000000..d4b938a05c7 --- /dev/null +++ b/pkg/kubelet/legacy/logs.go @@ -0,0 +1,53 @@ +/* +Copyright 2020 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package legacy + +import ( + "context" + "io" + + "k8s.io/api/core/v1" + kubecontainer "k8s.io/kubernetes/pkg/kubelet/container" + "k8s.io/kubernetes/pkg/kubelet/kuberuntime" +) + +// DockerLegacyService interface is used throughout `pkg/kubelet`. +// It used to live in the `pkg/kubelet/dockershim` package. While we +// would eventually like to remove it entirely, we need to give users some form +// of warning. +// +// By including the interface in +// `pkg/kubelet/legacy/logs.go`, we ensure the interface is +// available to `pkg/kubelet`, even when we are building with the `dockerless` +// tag (i.e. not compiling the dockershim). +// While the interface always exists, there will be no implementations of the +// interface when building with the `dockerless` tag. The lack of +// implementations should not be an issue, as we only expect `pkg/kubelet` code +// to need an implementation of the `DockerLegacyService` when we are using +// docker. If we are using docker, but building with the `dockerless` tag, than +// this will be just one of many things that breaks. +type DockerLegacyService interface { + // GetContainerLogs gets logs for a specific container. + GetContainerLogs(context.Context, *v1.Pod, kubecontainer.ContainerID, *v1.PodLogOptions, io.Writer, io.Writer) error + + // IsCRISupportedLogDriver checks whether the logging driver used by docker is + // supported by native CRI integration. + // TODO(resouer): remove this when deprecating unsupported log driver + IsCRISupportedLogDriver() (bool, error) + + kuberuntime.LegacyLogProvider +} From b36f637f0d04659f2f0c4ba7d0c24cb117069c21 Mon Sep 17 00:00:00 2001 From: mattjmcnaughton Date: Sun, 2 Feb 2020 16:53:42 -0500 Subject: [PATCH 5/8] Add dockerless tags to all files in `dockershim` As the final step, add the `dockerless` tags to all files in the dockershim. Using `-tags=dockerless` in `go build`, we can compile kubelet without the dockershim. Once cadvisor no longer depends on `docker/docker`, compiling with `-tags=dockerless` should be sufficient to compile the Kubelet w/o a dependency on `docker/docker`. --- pkg/kubelet/dockershim/cm/container_manager.go | 2 ++ pkg/kubelet/dockershim/cm/container_manager_linux.go | 2 +- pkg/kubelet/dockershim/cm/container_manager_unsupported.go | 2 +- pkg/kubelet/dockershim/cm/container_manager_windows.go | 2 +- pkg/kubelet/dockershim/convert.go | 2 ++ pkg/kubelet/dockershim/convert_test.go | 2 ++ pkg/kubelet/dockershim/docker_checkpoint.go | 2 ++ pkg/kubelet/dockershim/docker_checkpoint_test.go | 2 ++ pkg/kubelet/dockershim/docker_container.go | 2 ++ pkg/kubelet/dockershim/docker_container_test.go | 2 ++ pkg/kubelet/dockershim/docker_container_unsupported.go | 2 +- pkg/kubelet/dockershim/docker_container_windows.go | 2 +- pkg/kubelet/dockershim/docker_container_windows_test.go | 2 ++ pkg/kubelet/dockershim/docker_image.go | 2 ++ pkg/kubelet/dockershim/docker_image_linux.go | 2 +- pkg/kubelet/dockershim/docker_image_test.go | 2 ++ pkg/kubelet/dockershim/docker_image_unsupported.go | 2 +- pkg/kubelet/dockershim/docker_image_windows.go | 2 +- pkg/kubelet/dockershim/docker_legacy_service.go | 2 ++ pkg/kubelet/dockershim/docker_logs.go | 2 ++ pkg/kubelet/dockershim/docker_sandbox.go | 2 ++ pkg/kubelet/dockershim/docker_sandbox_test.go | 2 ++ pkg/kubelet/dockershim/docker_service.go | 2 ++ pkg/kubelet/dockershim/docker_service_test.go | 2 ++ pkg/kubelet/dockershim/docker_stats.go | 2 ++ pkg/kubelet/dockershim/docker_stats_linux.go | 2 +- pkg/kubelet/dockershim/docker_stats_test.go | 2 ++ pkg/kubelet/dockershim/docker_stats_unsupported.go | 2 +- pkg/kubelet/dockershim/docker_stats_windows.go | 2 +- pkg/kubelet/dockershim/docker_streaming.go | 2 ++ pkg/kubelet/dockershim/docker_streaming_others.go | 2 +- pkg/kubelet/dockershim/docker_streaming_windows.go | 2 +- pkg/kubelet/dockershim/exec.go | 2 ++ pkg/kubelet/dockershim/helpers.go | 2 ++ pkg/kubelet/dockershim/helpers_linux.go | 2 +- pkg/kubelet/dockershim/helpers_linux_test.go | 2 +- pkg/kubelet/dockershim/helpers_test.go | 2 ++ pkg/kubelet/dockershim/helpers_unsupported.go | 2 +- pkg/kubelet/dockershim/helpers_windows.go | 2 +- pkg/kubelet/dockershim/libdocker/client.go | 2 ++ pkg/kubelet/dockershim/libdocker/fake_client.go | 2 ++ pkg/kubelet/dockershim/libdocker/helpers.go | 2 ++ pkg/kubelet/dockershim/libdocker/helpers_test.go | 2 ++ pkg/kubelet/dockershim/libdocker/instrumented_client.go | 2 ++ pkg/kubelet/dockershim/libdocker/kube_docker_client.go | 2 ++ pkg/kubelet/dockershim/libdocker/kube_docker_client_test.go | 2 ++ pkg/kubelet/dockershim/metrics/metrics.go | 2 ++ pkg/kubelet/dockershim/naming.go | 2 ++ pkg/kubelet/dockershim/naming_test.go | 2 ++ pkg/kubelet/dockershim/network/cni/cni.go | 2 ++ pkg/kubelet/dockershim/network/cni/cni_others.go | 2 +- pkg/kubelet/dockershim/network/cni/cni_test.go | 2 +- pkg/kubelet/dockershim/network/cni/cni_windows.go | 2 +- pkg/kubelet/dockershim/network/cni/testing/mock_cni.go | 2 ++ pkg/kubelet/dockershim/network/hairpin/hairpin.go | 2 ++ pkg/kubelet/dockershim/network/hairpin/hairpin_test.go | 2 ++ pkg/kubelet/dockershim/network/hostport/fake_iptables.go | 2 ++ pkg/kubelet/dockershim/network/hostport/fake_iptables_test.go | 2 ++ pkg/kubelet/dockershim/network/hostport/hostport.go | 2 ++ pkg/kubelet/dockershim/network/hostport/hostport_manager.go | 2 ++ .../dockershim/network/hostport/hostport_manager_test.go | 2 ++ pkg/kubelet/dockershim/network/hostport/hostport_syncer.go | 2 ++ pkg/kubelet/dockershim/network/hostport/hostport_syncer_test.go | 2 ++ pkg/kubelet/dockershim/network/hostport/hostport_test.go | 2 ++ pkg/kubelet/dockershim/network/hostport/testing/fake.go | 2 ++ pkg/kubelet/dockershim/network/kubenet/kubenet.go | 2 ++ pkg/kubelet/dockershim/network/kubenet/kubenet_linux.go | 2 +- pkg/kubelet/dockershim/network/kubenet/kubenet_linux_test.go | 2 ++ pkg/kubelet/dockershim/network/kubenet/kubenet_unsupported.go | 2 +- pkg/kubelet/dockershim/network/metrics/metrics.go | 2 ++ pkg/kubelet/dockershim/network/network.go | 2 ++ pkg/kubelet/dockershim/network/plugins.go | 2 ++ pkg/kubelet/dockershim/network/testing/fake_host.go | 2 ++ pkg/kubelet/dockershim/network/testing/mock_network_plugin.go | 2 ++ pkg/kubelet/dockershim/network/testing/plugins_test.go | 2 ++ pkg/kubelet/dockershim/remote/docker_server.go | 2 ++ pkg/kubelet/dockershim/security_context.go | 2 ++ pkg/kubelet/dockershim/security_context_test.go | 2 ++ pkg/kubelet/dockershim/selinux_util.go | 2 ++ pkg/kubelet/dockershim/selinux_util_test.go | 2 ++ 80 files changed, 138 insertions(+), 22 deletions(-) diff --git a/pkg/kubelet/dockershim/cm/container_manager.go b/pkg/kubelet/dockershim/cm/container_manager.go index 45abfcedb15..088bb6bbae9 100644 --- a/pkg/kubelet/dockershim/cm/container_manager.go +++ b/pkg/kubelet/dockershim/cm/container_manager.go @@ -1,3 +1,5 @@ +// +build !dockerless + /* Copyright 2016 The Kubernetes Authors. diff --git a/pkg/kubelet/dockershim/cm/container_manager_linux.go b/pkg/kubelet/dockershim/cm/container_manager_linux.go index da38ec0d1b1..bacb9738eca 100644 --- a/pkg/kubelet/dockershim/cm/container_manager_linux.go +++ b/pkg/kubelet/dockershim/cm/container_manager_linux.go @@ -1,4 +1,4 @@ -// +build linux +// +build linux,!dockerless /* Copyright 2016 The Kubernetes Authors. diff --git a/pkg/kubelet/dockershim/cm/container_manager_unsupported.go b/pkg/kubelet/dockershim/cm/container_manager_unsupported.go index 736c6ebd16d..3cf286fa8dc 100644 --- a/pkg/kubelet/dockershim/cm/container_manager_unsupported.go +++ b/pkg/kubelet/dockershim/cm/container_manager_unsupported.go @@ -1,4 +1,4 @@ -// +build !linux,!windows +// +build !linux,!windows,!dockerless /* Copyright 2016 The Kubernetes Authors. diff --git a/pkg/kubelet/dockershim/cm/container_manager_windows.go b/pkg/kubelet/dockershim/cm/container_manager_windows.go index 0c2ad462099..3d42314a61f 100644 --- a/pkg/kubelet/dockershim/cm/container_manager_windows.go +++ b/pkg/kubelet/dockershim/cm/container_manager_windows.go @@ -1,4 +1,4 @@ -// +build windows +// +build windows,!dockerless /* Copyright 2017 The Kubernetes Authors. diff --git a/pkg/kubelet/dockershim/convert.go b/pkg/kubelet/dockershim/convert.go index e38d4971127..1400d123bed 100644 --- a/pkg/kubelet/dockershim/convert.go +++ b/pkg/kubelet/dockershim/convert.go @@ -1,3 +1,5 @@ +// +build !dockerless + /* Copyright 2016 The Kubernetes Authors. diff --git a/pkg/kubelet/dockershim/convert_test.go b/pkg/kubelet/dockershim/convert_test.go index 1befadf72ee..a9b07eecab0 100644 --- a/pkg/kubelet/dockershim/convert_test.go +++ b/pkg/kubelet/dockershim/convert_test.go @@ -1,3 +1,5 @@ +// +build !dockerless + /* Copyright 2016 The Kubernetes Authors. diff --git a/pkg/kubelet/dockershim/docker_checkpoint.go b/pkg/kubelet/dockershim/docker_checkpoint.go index e821feb9528..4d881f7771a 100644 --- a/pkg/kubelet/dockershim/docker_checkpoint.go +++ b/pkg/kubelet/dockershim/docker_checkpoint.go @@ -1,3 +1,5 @@ +// +build !dockerless + /* Copyright 2017 The Kubernetes Authors. diff --git a/pkg/kubelet/dockershim/docker_checkpoint_test.go b/pkg/kubelet/dockershim/docker_checkpoint_test.go index 49f4e4d174a..9d64217e1e3 100644 --- a/pkg/kubelet/dockershim/docker_checkpoint_test.go +++ b/pkg/kubelet/dockershim/docker_checkpoint_test.go @@ -1,3 +1,5 @@ +// +build !dockerless + /* Copyright 2017 The Kubernetes Authors. diff --git a/pkg/kubelet/dockershim/docker_container.go b/pkg/kubelet/dockershim/docker_container.go index d1397478763..ee0020f7f62 100644 --- a/pkg/kubelet/dockershim/docker_container.go +++ b/pkg/kubelet/dockershim/docker_container.go @@ -1,3 +1,5 @@ +// +build !dockerless + /* Copyright 2016 The Kubernetes Authors. diff --git a/pkg/kubelet/dockershim/docker_container_test.go b/pkg/kubelet/dockershim/docker_container_test.go index d26a136ee05..7834da3315c 100644 --- a/pkg/kubelet/dockershim/docker_container_test.go +++ b/pkg/kubelet/dockershim/docker_container_test.go @@ -1,3 +1,5 @@ +// +build !dockerless + /* Copyright 2016 The Kubernetes Authors. diff --git a/pkg/kubelet/dockershim/docker_container_unsupported.go b/pkg/kubelet/dockershim/docker_container_unsupported.go index e3848320ba1..a9ed72bd003 100644 --- a/pkg/kubelet/dockershim/docker_container_unsupported.go +++ b/pkg/kubelet/dockershim/docker_container_unsupported.go @@ -1,4 +1,4 @@ -// +build !windows +// +build !windows,!dockerless /* Copyright 2019 The Kubernetes Authors. diff --git a/pkg/kubelet/dockershim/docker_container_windows.go b/pkg/kubelet/dockershim/docker_container_windows.go index 17b01c9c79d..57a7f8d8313 100644 --- a/pkg/kubelet/dockershim/docker_container_windows.go +++ b/pkg/kubelet/dockershim/docker_container_windows.go @@ -1,4 +1,4 @@ -// +build windows +// +build windows,!dockerless /* Copyright 2019 The Kubernetes Authors. diff --git a/pkg/kubelet/dockershim/docker_container_windows_test.go b/pkg/kubelet/dockershim/docker_container_windows_test.go index d6c39bcda3f..a2df1af0a39 100644 --- a/pkg/kubelet/dockershim/docker_container_windows_test.go +++ b/pkg/kubelet/dockershim/docker_container_windows_test.go @@ -1,3 +1,5 @@ +// +build !dockerless + /* Copyright 2019 The Kubernetes Authors. diff --git a/pkg/kubelet/dockershim/docker_image.go b/pkg/kubelet/dockershim/docker_image.go index 356f34d0ec9..d9fa556c7a7 100644 --- a/pkg/kubelet/dockershim/docker_image.go +++ b/pkg/kubelet/dockershim/docker_image.go @@ -1,3 +1,5 @@ +// +build !dockerless + /* Copyright 2016 The Kubernetes Authors. diff --git a/pkg/kubelet/dockershim/docker_image_linux.go b/pkg/kubelet/dockershim/docker_image_linux.go index 25e3d7a074e..221aa0d2ca4 100644 --- a/pkg/kubelet/dockershim/docker_image_linux.go +++ b/pkg/kubelet/dockershim/docker_image_linux.go @@ -1,4 +1,4 @@ -// +build linux +// +build linux,!dockerless /* Copyright 2017 The Kubernetes Authors. diff --git a/pkg/kubelet/dockershim/docker_image_test.go b/pkg/kubelet/dockershim/docker_image_test.go index 0bdbda2559e..16b0ac124b5 100644 --- a/pkg/kubelet/dockershim/docker_image_test.go +++ b/pkg/kubelet/dockershim/docker_image_test.go @@ -1,3 +1,5 @@ +// +build !dockerless + /* Copyright 2016 The Kubernetes Authors. diff --git a/pkg/kubelet/dockershim/docker_image_unsupported.go b/pkg/kubelet/dockershim/docker_image_unsupported.go index f6c1c72055b..282e8e7296e 100644 --- a/pkg/kubelet/dockershim/docker_image_unsupported.go +++ b/pkg/kubelet/dockershim/docker_image_unsupported.go @@ -1,4 +1,4 @@ -// +build !linux,!windows +// +build !linux,!windows,!dockerless /* Copyright 2016 The Kubernetes Authors. diff --git a/pkg/kubelet/dockershim/docker_image_windows.go b/pkg/kubelet/dockershim/docker_image_windows.go index 3d559392ce1..dd2282f07f7 100644 --- a/pkg/kubelet/dockershim/docker_image_windows.go +++ b/pkg/kubelet/dockershim/docker_image_windows.go @@ -1,4 +1,4 @@ -// +build windows +// +build windows,!dockerless /* Copyright 2016 The Kubernetes Authors. diff --git a/pkg/kubelet/dockershim/docker_legacy_service.go b/pkg/kubelet/dockershim/docker_legacy_service.go index 770b1dab9c8..dde49f19505 100644 --- a/pkg/kubelet/dockershim/docker_legacy_service.go +++ b/pkg/kubelet/dockershim/docker_legacy_service.go @@ -1,3 +1,5 @@ +// +build !dockerless + /* Copyright 2016 The Kubernetes Authors. diff --git a/pkg/kubelet/dockershim/docker_logs.go b/pkg/kubelet/dockershim/docker_logs.go index 8a157ce8baf..760ff654028 100644 --- a/pkg/kubelet/dockershim/docker_logs.go +++ b/pkg/kubelet/dockershim/docker_logs.go @@ -1,3 +1,5 @@ +// +build !dockerless + /* Copyright 2018 The Kubernetes Authors. diff --git a/pkg/kubelet/dockershim/docker_sandbox.go b/pkg/kubelet/dockershim/docker_sandbox.go index 0a077204782..b86ff9c7cd0 100644 --- a/pkg/kubelet/dockershim/docker_sandbox.go +++ b/pkg/kubelet/dockershim/docker_sandbox.go @@ -1,3 +1,5 @@ +// +build !dockerless + /* Copyright 2016 The Kubernetes Authors. diff --git a/pkg/kubelet/dockershim/docker_sandbox_test.go b/pkg/kubelet/dockershim/docker_sandbox_test.go index b34c933746d..9d385a5f089 100644 --- a/pkg/kubelet/dockershim/docker_sandbox_test.go +++ b/pkg/kubelet/dockershim/docker_sandbox_test.go @@ -1,3 +1,5 @@ +// +build !dockerless + /* Copyright 2016 The Kubernetes Authors. diff --git a/pkg/kubelet/dockershim/docker_service.go b/pkg/kubelet/dockershim/docker_service.go index 4cb8a1f31d9..3bc3a8e78df 100644 --- a/pkg/kubelet/dockershim/docker_service.go +++ b/pkg/kubelet/dockershim/docker_service.go @@ -1,3 +1,5 @@ +// +build !dockerless + /* Copyright 2016 The Kubernetes Authors. diff --git a/pkg/kubelet/dockershim/docker_service_test.go b/pkg/kubelet/dockershim/docker_service_test.go index 6523f6f97c2..27ced99a072 100644 --- a/pkg/kubelet/dockershim/docker_service_test.go +++ b/pkg/kubelet/dockershim/docker_service_test.go @@ -1,3 +1,5 @@ +// +build !dockerless + /* Copyright 2016 The Kubernetes Authors. diff --git a/pkg/kubelet/dockershim/docker_stats.go b/pkg/kubelet/dockershim/docker_stats.go index ede30c4efbb..f9b441fa842 100644 --- a/pkg/kubelet/dockershim/docker_stats.go +++ b/pkg/kubelet/dockershim/docker_stats.go @@ -1,3 +1,5 @@ +// +build !dockerless + /* Copyright 2019 The Kubernetes Authors. diff --git a/pkg/kubelet/dockershim/docker_stats_linux.go b/pkg/kubelet/dockershim/docker_stats_linux.go index 11d6add29c4..811bb066aaf 100644 --- a/pkg/kubelet/dockershim/docker_stats_linux.go +++ b/pkg/kubelet/dockershim/docker_stats_linux.go @@ -1,4 +1,4 @@ -// +build linux +// +build linux,!dockerless /* Copyright 2017 The Kubernetes Authors. diff --git a/pkg/kubelet/dockershim/docker_stats_test.go b/pkg/kubelet/dockershim/docker_stats_test.go index b4ce51ae6be..fa2d1559b53 100644 --- a/pkg/kubelet/dockershim/docker_stats_test.go +++ b/pkg/kubelet/dockershim/docker_stats_test.go @@ -1,3 +1,5 @@ +// +build !dockerless + /* Copyright 2019 The Kubernetes Authors. diff --git a/pkg/kubelet/dockershim/docker_stats_unsupported.go b/pkg/kubelet/dockershim/docker_stats_unsupported.go index 736215a9d64..560e243671b 100644 --- a/pkg/kubelet/dockershim/docker_stats_unsupported.go +++ b/pkg/kubelet/dockershim/docker_stats_unsupported.go @@ -1,4 +1,4 @@ -// +build !linux,!windows +// +build !linux,!windows,!dockerless /* Copyright 2017 The Kubernetes Authors. diff --git a/pkg/kubelet/dockershim/docker_stats_windows.go b/pkg/kubelet/dockershim/docker_stats_windows.go index 086624c4737..8173d7be2d8 100644 --- a/pkg/kubelet/dockershim/docker_stats_windows.go +++ b/pkg/kubelet/dockershim/docker_stats_windows.go @@ -1,4 +1,4 @@ -// +build windows +// +build windows,!dockerless /* Copyright 2017 The Kubernetes Authors. diff --git a/pkg/kubelet/dockershim/docker_streaming.go b/pkg/kubelet/dockershim/docker_streaming.go index 76b2fecd11b..f1394ba5c27 100644 --- a/pkg/kubelet/dockershim/docker_streaming.go +++ b/pkg/kubelet/dockershim/docker_streaming.go @@ -1,3 +1,5 @@ +// +build !dockerless + /* Copyright 2016 The Kubernetes Authors. diff --git a/pkg/kubelet/dockershim/docker_streaming_others.go b/pkg/kubelet/dockershim/docker_streaming_others.go index 75570086894..059c448be47 100644 --- a/pkg/kubelet/dockershim/docker_streaming_others.go +++ b/pkg/kubelet/dockershim/docker_streaming_others.go @@ -1,4 +1,4 @@ -// +build !windows +// +build !windows,!dockerless /* Copyright 2019 The Kubernetes Authors. diff --git a/pkg/kubelet/dockershim/docker_streaming_windows.go b/pkg/kubelet/dockershim/docker_streaming_windows.go index 151bd86066c..64c5ba18833 100644 --- a/pkg/kubelet/dockershim/docker_streaming_windows.go +++ b/pkg/kubelet/dockershim/docker_streaming_windows.go @@ -1,4 +1,4 @@ -// +build windows +// +build windows,!dockerless /* Copyright 2019 The Kubernetes Authors. diff --git a/pkg/kubelet/dockershim/exec.go b/pkg/kubelet/dockershim/exec.go index 4b0d085b5a1..a4d8862154f 100644 --- a/pkg/kubelet/dockershim/exec.go +++ b/pkg/kubelet/dockershim/exec.go @@ -1,3 +1,5 @@ +// +build !dockerless + /* Copyright 2015 The Kubernetes Authors. diff --git a/pkg/kubelet/dockershim/helpers.go b/pkg/kubelet/dockershim/helpers.go index c89db1a993a..c499cc01eb9 100644 --- a/pkg/kubelet/dockershim/helpers.go +++ b/pkg/kubelet/dockershim/helpers.go @@ -1,3 +1,5 @@ +// +build !dockerless + /* Copyright 2016 The Kubernetes Authors. diff --git a/pkg/kubelet/dockershim/helpers_linux.go b/pkg/kubelet/dockershim/helpers_linux.go index 11931a9ba9a..e18692150a5 100644 --- a/pkg/kubelet/dockershim/helpers_linux.go +++ b/pkg/kubelet/dockershim/helpers_linux.go @@ -1,4 +1,4 @@ -// +build linux +// +build linux,!dockerless /* Copyright 2015 The Kubernetes Authors. diff --git a/pkg/kubelet/dockershim/helpers_linux_test.go b/pkg/kubelet/dockershim/helpers_linux_test.go index 2f7ddb5329e..76ad4bb85f3 100644 --- a/pkg/kubelet/dockershim/helpers_linux_test.go +++ b/pkg/kubelet/dockershim/helpers_linux_test.go @@ -1,4 +1,4 @@ -// +build linux +// +build linux,!dockerless /* Copyright 2017 The Kubernetes Authors. diff --git a/pkg/kubelet/dockershim/helpers_test.go b/pkg/kubelet/dockershim/helpers_test.go index 62c07a5c3e8..ff2e09db13b 100644 --- a/pkg/kubelet/dockershim/helpers_test.go +++ b/pkg/kubelet/dockershim/helpers_test.go @@ -1,3 +1,5 @@ +// +build !dockerless + /* Copyright 2016 The Kubernetes Authors. diff --git a/pkg/kubelet/dockershim/helpers_unsupported.go b/pkg/kubelet/dockershim/helpers_unsupported.go index 623e0b56b44..72f1d1674aa 100644 --- a/pkg/kubelet/dockershim/helpers_unsupported.go +++ b/pkg/kubelet/dockershim/helpers_unsupported.go @@ -1,4 +1,4 @@ -// +build !linux,!windows +// +build !linux,!windows,!dockerless /* Copyright 2015 The Kubernetes Authors. diff --git a/pkg/kubelet/dockershim/helpers_windows.go b/pkg/kubelet/dockershim/helpers_windows.go index effdf92be3d..8442f9d93ce 100644 --- a/pkg/kubelet/dockershim/helpers_windows.go +++ b/pkg/kubelet/dockershim/helpers_windows.go @@ -1,4 +1,4 @@ -// +build windows +// +build windows,!dockerless /* Copyright 2015 The Kubernetes Authors. diff --git a/pkg/kubelet/dockershim/libdocker/client.go b/pkg/kubelet/dockershim/libdocker/client.go index 5ec3d224c38..68a4de6a5ee 100644 --- a/pkg/kubelet/dockershim/libdocker/client.go +++ b/pkg/kubelet/dockershim/libdocker/client.go @@ -1,3 +1,5 @@ +// +build !dockerless + /* Copyright 2014 The Kubernetes Authors. diff --git a/pkg/kubelet/dockershim/libdocker/fake_client.go b/pkg/kubelet/dockershim/libdocker/fake_client.go index d75728d2e17..27d38ebfd93 100644 --- a/pkg/kubelet/dockershim/libdocker/fake_client.go +++ b/pkg/kubelet/dockershim/libdocker/fake_client.go @@ -1,3 +1,5 @@ +// +build !dockerless + /* Copyright 2014 The Kubernetes Authors. diff --git a/pkg/kubelet/dockershim/libdocker/helpers.go b/pkg/kubelet/dockershim/libdocker/helpers.go index 171b247f8f0..067de82151b 100644 --- a/pkg/kubelet/dockershim/libdocker/helpers.go +++ b/pkg/kubelet/dockershim/libdocker/helpers.go @@ -1,3 +1,5 @@ +// +build !dockerless + /* Copyright 2014 The Kubernetes Authors. diff --git a/pkg/kubelet/dockershim/libdocker/helpers_test.go b/pkg/kubelet/dockershim/libdocker/helpers_test.go index e6a48198343..2a31b658366 100644 --- a/pkg/kubelet/dockershim/libdocker/helpers_test.go +++ b/pkg/kubelet/dockershim/libdocker/helpers_test.go @@ -1,3 +1,5 @@ +// +build !dockerless + /* Copyright 2014 The Kubernetes Authors. diff --git a/pkg/kubelet/dockershim/libdocker/instrumented_client.go b/pkg/kubelet/dockershim/libdocker/instrumented_client.go index d2cefafb729..d6c80e3dee7 100644 --- a/pkg/kubelet/dockershim/libdocker/instrumented_client.go +++ b/pkg/kubelet/dockershim/libdocker/instrumented_client.go @@ -1,3 +1,5 @@ +// +build !dockerless + /* Copyright 2015 The Kubernetes Authors. diff --git a/pkg/kubelet/dockershim/libdocker/kube_docker_client.go b/pkg/kubelet/dockershim/libdocker/kube_docker_client.go index 7f961297a53..0daa7d7cd88 100644 --- a/pkg/kubelet/dockershim/libdocker/kube_docker_client.go +++ b/pkg/kubelet/dockershim/libdocker/kube_docker_client.go @@ -1,3 +1,5 @@ +// +build !dockerless + /* Copyright 2016 The Kubernetes Authors. diff --git a/pkg/kubelet/dockershim/libdocker/kube_docker_client_test.go b/pkg/kubelet/dockershim/libdocker/kube_docker_client_test.go index dca570bbd26..d004f38c6f5 100644 --- a/pkg/kubelet/dockershim/libdocker/kube_docker_client_test.go +++ b/pkg/kubelet/dockershim/libdocker/kube_docker_client_test.go @@ -1,3 +1,5 @@ +// +build !dockerless + /* Copyright 2017 The Kubernetes Authors. diff --git a/pkg/kubelet/dockershim/metrics/metrics.go b/pkg/kubelet/dockershim/metrics/metrics.go index 16be68982bc..73fd251707c 100644 --- a/pkg/kubelet/dockershim/metrics/metrics.go +++ b/pkg/kubelet/dockershim/metrics/metrics.go @@ -1,3 +1,5 @@ +// +build !dockerless + /* Copyright 2015 The Kubernetes Authors. diff --git a/pkg/kubelet/dockershim/naming.go b/pkg/kubelet/dockershim/naming.go index f464dab2831..47e55a05733 100644 --- a/pkg/kubelet/dockershim/naming.go +++ b/pkg/kubelet/dockershim/naming.go @@ -1,3 +1,5 @@ +// +build !dockerless + /* Copyright 2016 The Kubernetes Authors. diff --git a/pkg/kubelet/dockershim/naming_test.go b/pkg/kubelet/dockershim/naming_test.go index bc2f4408ac3..12b30f56c12 100644 --- a/pkg/kubelet/dockershim/naming_test.go +++ b/pkg/kubelet/dockershim/naming_test.go @@ -1,3 +1,5 @@ +// +build !dockerless + /* Copyright 2016 The Kubernetes Authors. diff --git a/pkg/kubelet/dockershim/network/cni/cni.go b/pkg/kubelet/dockershim/network/cni/cni.go index 5c471f9272d..c3748700e14 100644 --- a/pkg/kubelet/dockershim/network/cni/cni.go +++ b/pkg/kubelet/dockershim/network/cni/cni.go @@ -1,3 +1,5 @@ +// +build !dockerless + /* Copyright 2014 The Kubernetes Authors. diff --git a/pkg/kubelet/dockershim/network/cni/cni_others.go b/pkg/kubelet/dockershim/network/cni/cni_others.go index 55487454310..3c2c4852b71 100644 --- a/pkg/kubelet/dockershim/network/cni/cni_others.go +++ b/pkg/kubelet/dockershim/network/cni/cni_others.go @@ -1,4 +1,4 @@ -// +build !windows +// +build !windows,!dockerless /* Copyright 2017 The Kubernetes Authors. diff --git a/pkg/kubelet/dockershim/network/cni/cni_test.go b/pkg/kubelet/dockershim/network/cni/cni_test.go index ef6009eee29..0005c1940cf 100644 --- a/pkg/kubelet/dockershim/network/cni/cni_test.go +++ b/pkg/kubelet/dockershim/network/cni/cni_test.go @@ -1,4 +1,4 @@ -// +build linux +// +build linux,!dockerless /* Copyright 2014 The Kubernetes Authors. diff --git a/pkg/kubelet/dockershim/network/cni/cni_windows.go b/pkg/kubelet/dockershim/network/cni/cni_windows.go index 316d4df9b99..6554d7325d2 100644 --- a/pkg/kubelet/dockershim/network/cni/cni_windows.go +++ b/pkg/kubelet/dockershim/network/cni/cni_windows.go @@ -1,4 +1,4 @@ -// +build windows +// +build windows,!dockerless /* Copyright 2017 The Kubernetes Authors. diff --git a/pkg/kubelet/dockershim/network/cni/testing/mock_cni.go b/pkg/kubelet/dockershim/network/cni/testing/mock_cni.go index afc3a510f09..b81014f4919 100644 --- a/pkg/kubelet/dockershim/network/cni/testing/mock_cni.go +++ b/pkg/kubelet/dockershim/network/cni/testing/mock_cni.go @@ -1,3 +1,5 @@ +// +build !dockerless + /* Copyright 2014 The Kubernetes Authors. diff --git a/pkg/kubelet/dockershim/network/hairpin/hairpin.go b/pkg/kubelet/dockershim/network/hairpin/hairpin.go index a3e455ff10c..53e1be21e3d 100644 --- a/pkg/kubelet/dockershim/network/hairpin/hairpin.go +++ b/pkg/kubelet/dockershim/network/hairpin/hairpin.go @@ -1,3 +1,5 @@ +// +build !dockerless + /* Copyright 2015 The Kubernetes Authors. diff --git a/pkg/kubelet/dockershim/network/hairpin/hairpin_test.go b/pkg/kubelet/dockershim/network/hairpin/hairpin_test.go index eb4c15872e7..72e76b4e6d6 100644 --- a/pkg/kubelet/dockershim/network/hairpin/hairpin_test.go +++ b/pkg/kubelet/dockershim/network/hairpin/hairpin_test.go @@ -1,3 +1,5 @@ +// +build !dockerless + /* Copyright 2015 The Kubernetes Authors. diff --git a/pkg/kubelet/dockershim/network/hostport/fake_iptables.go b/pkg/kubelet/dockershim/network/hostport/fake_iptables.go index be59dd5a9a6..9080a58b3d5 100644 --- a/pkg/kubelet/dockershim/network/hostport/fake_iptables.go +++ b/pkg/kubelet/dockershim/network/hostport/fake_iptables.go @@ -1,3 +1,5 @@ +// +build !dockerless + /* Copyright 2016 The Kubernetes Authors. diff --git a/pkg/kubelet/dockershim/network/hostport/fake_iptables_test.go b/pkg/kubelet/dockershim/network/hostport/fake_iptables_test.go index bda4c024736..a503b6d822e 100644 --- a/pkg/kubelet/dockershim/network/hostport/fake_iptables_test.go +++ b/pkg/kubelet/dockershim/network/hostport/fake_iptables_test.go @@ -1,3 +1,5 @@ +// +build !dockerless + /* Copyright 2016 The Kubernetes Authors. diff --git a/pkg/kubelet/dockershim/network/hostport/hostport.go b/pkg/kubelet/dockershim/network/hostport/hostport.go index 1cf83d134c6..f92ad07e248 100644 --- a/pkg/kubelet/dockershim/network/hostport/hostport.go +++ b/pkg/kubelet/dockershim/network/hostport/hostport.go @@ -1,3 +1,5 @@ +// +build !dockerless + /* Copyright 2017 The Kubernetes Authors. diff --git a/pkg/kubelet/dockershim/network/hostport/hostport_manager.go b/pkg/kubelet/dockershim/network/hostport/hostport_manager.go index f7e076ac49a..f7820ae0231 100644 --- a/pkg/kubelet/dockershim/network/hostport/hostport_manager.go +++ b/pkg/kubelet/dockershim/network/hostport/hostport_manager.go @@ -1,3 +1,5 @@ +// +build !dockerless + /* Copyright 2017 The Kubernetes Authors. diff --git a/pkg/kubelet/dockershim/network/hostport/hostport_manager_test.go b/pkg/kubelet/dockershim/network/hostport/hostport_manager_test.go index a8d03affd92..b41e7908c0b 100644 --- a/pkg/kubelet/dockershim/network/hostport/hostport_manager_test.go +++ b/pkg/kubelet/dockershim/network/hostport/hostport_manager_test.go @@ -1,3 +1,5 @@ +// +build !dockerless + /* Copyright 2017 The Kubernetes Authors. diff --git a/pkg/kubelet/dockershim/network/hostport/hostport_syncer.go b/pkg/kubelet/dockershim/network/hostport/hostport_syncer.go index 517c5a30889..454b86973a6 100644 --- a/pkg/kubelet/dockershim/network/hostport/hostport_syncer.go +++ b/pkg/kubelet/dockershim/network/hostport/hostport_syncer.go @@ -1,3 +1,5 @@ +// +build !dockerless + /* Copyright 2014 The Kubernetes Authors. diff --git a/pkg/kubelet/dockershim/network/hostport/hostport_syncer_test.go b/pkg/kubelet/dockershim/network/hostport/hostport_syncer_test.go index 874da8780bb..d8ac3affae3 100644 --- a/pkg/kubelet/dockershim/network/hostport/hostport_syncer_test.go +++ b/pkg/kubelet/dockershim/network/hostport/hostport_syncer_test.go @@ -1,3 +1,5 @@ +// +build !dockerless + /* Copyright 2016 The Kubernetes Authors. diff --git a/pkg/kubelet/dockershim/network/hostport/hostport_test.go b/pkg/kubelet/dockershim/network/hostport/hostport_test.go index 97dd907c308..4721158f2a6 100644 --- a/pkg/kubelet/dockershim/network/hostport/hostport_test.go +++ b/pkg/kubelet/dockershim/network/hostport/hostport_test.go @@ -1,3 +1,5 @@ +// +build !dockerless + /* Copyright 2017 The Kubernetes Authors. diff --git a/pkg/kubelet/dockershim/network/hostport/testing/fake.go b/pkg/kubelet/dockershim/network/hostport/testing/fake.go index 3bde65cc2ed..24de155626c 100644 --- a/pkg/kubelet/dockershim/network/hostport/testing/fake.go +++ b/pkg/kubelet/dockershim/network/hostport/testing/fake.go @@ -1,3 +1,5 @@ +// +build !dockerless + /* Copyright 2016 The Kubernetes Authors. diff --git a/pkg/kubelet/dockershim/network/kubenet/kubenet.go b/pkg/kubelet/dockershim/network/kubenet/kubenet.go index 146ae732e70..558cf0bdfbe 100644 --- a/pkg/kubelet/dockershim/network/kubenet/kubenet.go +++ b/pkg/kubelet/dockershim/network/kubenet/kubenet.go @@ -1,3 +1,5 @@ +// +build !dockerless + /* Copyright 2016 The Kubernetes Authors. diff --git a/pkg/kubelet/dockershim/network/kubenet/kubenet_linux.go b/pkg/kubelet/dockershim/network/kubenet/kubenet_linux.go index e878e7c6175..5c5e4617b69 100644 --- a/pkg/kubelet/dockershim/network/kubenet/kubenet_linux.go +++ b/pkg/kubelet/dockershim/network/kubenet/kubenet_linux.go @@ -1,4 +1,4 @@ -// +build linux +// +build linux,!dockerless /* Copyright 2014 The Kubernetes Authors. diff --git a/pkg/kubelet/dockershim/network/kubenet/kubenet_linux_test.go b/pkg/kubelet/dockershim/network/kubenet/kubenet_linux_test.go index cedb7772b0c..85e791e37be 100644 --- a/pkg/kubelet/dockershim/network/kubenet/kubenet_linux_test.go +++ b/pkg/kubelet/dockershim/network/kubenet/kubenet_linux_test.go @@ -1,3 +1,5 @@ +// +build !dockerless + /* Copyright 2015 The Kubernetes Authors. diff --git a/pkg/kubelet/dockershim/network/kubenet/kubenet_unsupported.go b/pkg/kubelet/dockershim/network/kubenet/kubenet_unsupported.go index 5b7ef00cb26..05d9c66fcf2 100644 --- a/pkg/kubelet/dockershim/network/kubenet/kubenet_unsupported.go +++ b/pkg/kubelet/dockershim/network/kubenet/kubenet_unsupported.go @@ -1,4 +1,4 @@ -// +build !linux +// +build !linux,!dockerless /* Copyright 2014 The Kubernetes Authors. diff --git a/pkg/kubelet/dockershim/network/metrics/metrics.go b/pkg/kubelet/dockershim/network/metrics/metrics.go index b5da24400a6..eaa05f0649d 100644 --- a/pkg/kubelet/dockershim/network/metrics/metrics.go +++ b/pkg/kubelet/dockershim/network/metrics/metrics.go @@ -1,3 +1,5 @@ +// +build !dockerless + /* Copyright 2017 The Kubernetes Authors. diff --git a/pkg/kubelet/dockershim/network/network.go b/pkg/kubelet/dockershim/network/network.go index fbd1ba12550..a609c8cf8d9 100644 --- a/pkg/kubelet/dockershim/network/network.go +++ b/pkg/kubelet/dockershim/network/network.go @@ -1,3 +1,5 @@ +// +build !dockerless + /* Copyright 2014 The Kubernetes Authors. diff --git a/pkg/kubelet/dockershim/network/plugins.go b/pkg/kubelet/dockershim/network/plugins.go index 9c904202ba3..c3a4bc985aa 100644 --- a/pkg/kubelet/dockershim/network/plugins.go +++ b/pkg/kubelet/dockershim/network/plugins.go @@ -1,3 +1,5 @@ +// +build !dockerless + /* Copyright 2014 The Kubernetes Authors. diff --git a/pkg/kubelet/dockershim/network/testing/fake_host.go b/pkg/kubelet/dockershim/network/testing/fake_host.go index c2e3b65cbe7..6b07d0e6ad8 100644 --- a/pkg/kubelet/dockershim/network/testing/fake_host.go +++ b/pkg/kubelet/dockershim/network/testing/fake_host.go @@ -1,3 +1,5 @@ +// +build !dockerless + /* Copyright 2014 The Kubernetes Authors. diff --git a/pkg/kubelet/dockershim/network/testing/mock_network_plugin.go b/pkg/kubelet/dockershim/network/testing/mock_network_plugin.go index afb0752e1df..59fbb7b027e 100644 --- a/pkg/kubelet/dockershim/network/testing/mock_network_plugin.go +++ b/pkg/kubelet/dockershim/network/testing/mock_network_plugin.go @@ -1,3 +1,5 @@ +// +build !dockerless + /* Copyright 2016 The Kubernetes Authors. diff --git a/pkg/kubelet/dockershim/network/testing/plugins_test.go b/pkg/kubelet/dockershim/network/testing/plugins_test.go index 42c6ba9e8e1..8943197afe1 100644 --- a/pkg/kubelet/dockershim/network/testing/plugins_test.go +++ b/pkg/kubelet/dockershim/network/testing/plugins_test.go @@ -1,3 +1,5 @@ +// +build !dockerless + /* Copyright 2014 The Kubernetes Authors. diff --git a/pkg/kubelet/dockershim/remote/docker_server.go b/pkg/kubelet/dockershim/remote/docker_server.go index 167843dd321..125e203cfcf 100644 --- a/pkg/kubelet/dockershim/remote/docker_server.go +++ b/pkg/kubelet/dockershim/remote/docker_server.go @@ -1,3 +1,5 @@ +// +build !dockerless + /* Copyright 2016 The Kubernetes Authors. diff --git a/pkg/kubelet/dockershim/security_context.go b/pkg/kubelet/dockershim/security_context.go index 38fed8daded..571fdd33767 100644 --- a/pkg/kubelet/dockershim/security_context.go +++ b/pkg/kubelet/dockershim/security_context.go @@ -1,3 +1,5 @@ +// +build !dockerless + /* Copyright 2016 The Kubernetes Authors. diff --git a/pkg/kubelet/dockershim/security_context_test.go b/pkg/kubelet/dockershim/security_context_test.go index 46fb825adcf..6277f6bd5a3 100644 --- a/pkg/kubelet/dockershim/security_context_test.go +++ b/pkg/kubelet/dockershim/security_context_test.go @@ -1,3 +1,5 @@ +// +build !dockerless + /* Copyright 2016 The Kubernetes Authors. diff --git a/pkg/kubelet/dockershim/selinux_util.go b/pkg/kubelet/dockershim/selinux_util.go index 1cd05f04642..00565596273 100644 --- a/pkg/kubelet/dockershim/selinux_util.go +++ b/pkg/kubelet/dockershim/selinux_util.go @@ -1,3 +1,5 @@ +// +build !dockerless + /* Copyright 2017 The Kubernetes Authors. diff --git a/pkg/kubelet/dockershim/selinux_util_test.go b/pkg/kubelet/dockershim/selinux_util_test.go index 93ef091723e..99eb6a437d1 100644 --- a/pkg/kubelet/dockershim/selinux_util_test.go +++ b/pkg/kubelet/dockershim/selinux_util_test.go @@ -1,3 +1,5 @@ +// +build !dockerless + /* Copyright 2017 The Kubernetes Authors. From 4a8da5e7b495463106d7182ae7817e8757307e54 Mon Sep 17 00:00:00 2001 From: mattjmcnaughton Date: Wed, 26 Feb 2020 09:16:12 -0500 Subject: [PATCH 6/8] Add typecheck-dockerless Ensure that k8s still passes the typecheck when the `dockerless` tag is enabled. We perform a similar verify step for `providerless`. --- hack/make-rules/verify.sh | 1 + hack/verify-typecheck-dockerless.sh | 25 +++++++++++++++++++++++++ 2 files changed, 26 insertions(+) create mode 100755 hack/verify-typecheck-dockerless.sh diff --git a/hack/make-rules/verify.sh b/hack/make-rules/verify.sh index ea2ea8559fe..bb0b40bc3b2 100755 --- a/hack/make-rules/verify.sh +++ b/hack/make-rules/verify.sh @@ -48,6 +48,7 @@ if [[ ${EXCLUDE_TYPECHECK:-} =~ ^[yY]$ ]]; then EXCLUDED_PATTERNS+=( "verify-typecheck.sh" # runs in separate typecheck job "verify-typecheck-providerless.sh" # runs in separate typecheck job + "verify-typecheck-dockerless.sh" # runs in separate typecheck job ) fi diff --git a/hack/verify-typecheck-dockerless.sh b/hack/verify-typecheck-dockerless.sh new file mode 100755 index 00000000000..c8364d3446a --- /dev/null +++ b/hack/verify-typecheck-dockerless.sh @@ -0,0 +1,25 @@ +#!/usr/bin/env bash + +# Copyright 2018 The Kubernetes Authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +set -o errexit +set -o nounset +set -o pipefail + +KUBE_ROOT=$(dirname "${BASH_SOURCE[0]}")/.. + +cd "${KUBE_ROOT}" +# verify the dockerless build +hack/verify-typecheck.sh --skip-test --tags=dockerless --ignore-dirs=test From 29fa1f45664e09879402437487f42c74324be056 Mon Sep 17 00:00:00 2001 From: mattjmcnaughton Date: Thu, 27 Feb 2020 09:29:39 -0500 Subject: [PATCH 7/8] Fix the verify job Small changes to fix the verify job. Add the proper headers, fix lint errors, etc... --- pkg/kubelet/dockershim/BUILD | 1 - pkg/kubelet/dockershim/doc.go | 2 ++ pkg/kubelet/dockershim/dockershim_nodocker.go | 16 ++++++++++++++++ pkg/kubelet/kubelet.go | 3 +++ pkg/kubelet/kubelet_dockershim_nodocker.go | 2 +- 5 files changed, 22 insertions(+), 2 deletions(-) diff --git a/pkg/kubelet/dockershim/BUILD b/pkg/kubelet/dockershim/BUILD index e9674de52fa..3a77759a281 100644 --- a/pkg/kubelet/dockershim/BUILD +++ b/pkg/kubelet/dockershim/BUILD @@ -49,7 +49,6 @@ go_library( "//pkg/kubelet/dockershim/network/cni:go_default_library", "//pkg/kubelet/dockershim/network/hostport:go_default_library", "//pkg/kubelet/dockershim/network/kubenet:go_default_library", - "//pkg/kubelet/kuberuntime:go_default_library", "//pkg/kubelet/leaky:go_default_library", "//pkg/kubelet/legacy:go_default_library", "//pkg/kubelet/server/streaming:go_default_library", diff --git a/pkg/kubelet/dockershim/doc.go b/pkg/kubelet/dockershim/doc.go index 82f3fbe7032..2e9fda933f3 100644 --- a/pkg/kubelet/dockershim/doc.go +++ b/pkg/kubelet/dockershim/doc.go @@ -1,3 +1,5 @@ +// +build !dockerless + /* Copyright 2016 The Kubernetes Authors. diff --git a/pkg/kubelet/dockershim/dockershim_nodocker.go b/pkg/kubelet/dockershim/dockershim_nodocker.go index a6e0e2ce074..1f5720a10af 100644 --- a/pkg/kubelet/dockershim/dockershim_nodocker.go +++ b/pkg/kubelet/dockershim/dockershim_nodocker.go @@ -1,3 +1,19 @@ // +build dockerless +/* +Copyright 2020 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + package dockershim diff --git a/pkg/kubelet/kubelet.go b/pkg/kubelet/kubelet.go index 87e06a7a035..e9563a73bf4 100644 --- a/pkg/kubelet/kubelet.go +++ b/pkg/kubelet/kubelet.go @@ -236,6 +236,9 @@ type Dependencies struct { useLegacyCadvisorStats bool } +// DockerOptions contains docker specific configuration. Importantly, since it +// lives outside of `dockershim`, it should not depend on the `docker/docker` +// client library. type DockerOptions struct { DockerEndpoint string RuntimeRequestTimeout time.Duration diff --git a/pkg/kubelet/kubelet_dockershim_nodocker.go b/pkg/kubelet/kubelet_dockershim_nodocker.go index b833934ed5d..63cb51fd98b 100644 --- a/pkg/kubelet/kubelet_dockershim_nodocker.go +++ b/pkg/kubelet/kubelet_dockershim_nodocker.go @@ -32,5 +32,5 @@ func runDockershim(kubeCfg *kubeletconfiginternal.KubeletConfiguration, remoteImageEndpoint string, nonMasqueradeCIDR string) error { - return fmt.Errorf("Trying to use docker runtime, w/ Kubelet compiled w/o docker support.") + return fmt.Errorf("trying to use docker runtime, w/ Kubelet compiled w/o docker support") } From 49fc82f7abfa3bf841dbe403ebf0d459c00bc8d1 Mon Sep 17 00:00:00 2001 From: mattjmcnaughton Date: Tue, 24 Mar 2020 16:59:59 -0400 Subject: [PATCH 8/8] Ensure we only run the `cadvisor/docker` init in !dockerless We do not want to run the `cadvisor/docker` init when we are using the dockerless build tags. We can ensure this by isolating into a separate file with the proper build tag constraints. --- pkg/kubelet/cadvisor/BUILD | 1 + pkg/kubelet/cadvisor/cadvisor_linux.go | 1 - pkg/kubelet/cadvisor/cadvisor_linux_docker.go | 25 +++++++++++++++++++ 3 files changed, 26 insertions(+), 1 deletion(-) create mode 100644 pkg/kubelet/cadvisor/cadvisor_linux_docker.go diff --git a/pkg/kubelet/cadvisor/BUILD b/pkg/kubelet/cadvisor/BUILD index f3d64675cee..a965343615f 100644 --- a/pkg/kubelet/cadvisor/BUILD +++ b/pkg/kubelet/cadvisor/BUILD @@ -10,6 +10,7 @@ go_library( name = "go_default_library", srcs = [ "cadvisor_linux.go", + "cadvisor_linux_docker.go", "cadvisor_unsupported.go", "cadvisor_windows.go", "doc.go", diff --git a/pkg/kubelet/cadvisor/cadvisor_linux.go b/pkg/kubelet/cadvisor/cadvisor_linux.go index 7f52070b146..7d20b77e2a6 100644 --- a/pkg/kubelet/cadvisor/cadvisor_linux.go +++ b/pkg/kubelet/cadvisor/cadvisor_linux.go @@ -29,7 +29,6 @@ import ( // Register supported container handlers. _ "github.com/google/cadvisor/container/containerd/install" _ "github.com/google/cadvisor/container/crio/install" - _ "github.com/google/cadvisor/container/docker/install" _ "github.com/google/cadvisor/container/systemd/install" // Register cloud info providers. diff --git a/pkg/kubelet/cadvisor/cadvisor_linux_docker.go b/pkg/kubelet/cadvisor/cadvisor_linux_docker.go new file mode 100644 index 00000000000..46802f7c52f --- /dev/null +++ b/pkg/kubelet/cadvisor/cadvisor_linux_docker.go @@ -0,0 +1,25 @@ +// +build linux,!dockerless + +/* +Copyright 2020 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package cadvisor + +import ( + // We only want to perform this docker specific cadvisor init when we are not + // using the `dockerless` build tag. + _ "github.com/google/cadvisor/container/docker/install" +)