Bumping k8s dependencies to 1.13
This commit is contained in:
175
vendor/k8s.io/kubernetes/cmd/kubelet/app/server.go
generated
vendored
175
vendor/k8s.io/kubernetes/cmd/kubelet/app/server.go
generated
vendored
@@ -31,7 +31,6 @@ import (
|
||||
"path"
|
||||
"path/filepath"
|
||||
"strconv"
|
||||
"sync"
|
||||
"time"
|
||||
|
||||
"github.com/coreos/go-systemd/daemon"
|
||||
@@ -49,6 +48,7 @@ import (
|
||||
"k8s.io/apiserver/pkg/server/healthz"
|
||||
utilfeature "k8s.io/apiserver/pkg/util/feature"
|
||||
"k8s.io/apiserver/pkg/util/flag"
|
||||
"k8s.io/client-go/dynamic"
|
||||
clientset "k8s.io/client-go/kubernetes"
|
||||
v1core "k8s.io/client-go/kubernetes/typed/core/v1"
|
||||
restclient "k8s.io/client-go/rest"
|
||||
@@ -56,6 +56,8 @@ import (
|
||||
"k8s.io/client-go/tools/record"
|
||||
certutil "k8s.io/client-go/util/cert"
|
||||
"k8s.io/client-go/util/certificate"
|
||||
csiclientset "k8s.io/csi-api/pkg/client/clientset/versioned"
|
||||
kubeletconfigv1beta1 "k8s.io/kubelet/config/v1beta1"
|
||||
"k8s.io/kubernetes/cmd/kubelet/app/options"
|
||||
"k8s.io/kubernetes/pkg/api/legacyscheme"
|
||||
api "k8s.io/kubernetes/pkg/apis/core"
|
||||
@@ -65,10 +67,9 @@ import (
|
||||
"k8s.io/kubernetes/pkg/credentialprovider"
|
||||
"k8s.io/kubernetes/pkg/features"
|
||||
"k8s.io/kubernetes/pkg/kubelet"
|
||||
kubeletconfiginternal "k8s.io/kubernetes/pkg/kubelet/apis/kubeletconfig"
|
||||
kubeletscheme "k8s.io/kubernetes/pkg/kubelet/apis/kubeletconfig/scheme"
|
||||
kubeletconfigv1beta1 "k8s.io/kubernetes/pkg/kubelet/apis/kubeletconfig/v1beta1"
|
||||
kubeletconfigvalidation "k8s.io/kubernetes/pkg/kubelet/apis/kubeletconfig/validation"
|
||||
kubeletconfiginternal "k8s.io/kubernetes/pkg/kubelet/apis/config"
|
||||
kubeletscheme "k8s.io/kubernetes/pkg/kubelet/apis/config/scheme"
|
||||
kubeletconfigvalidation "k8s.io/kubernetes/pkg/kubelet/apis/config/validation"
|
||||
"k8s.io/kubernetes/pkg/kubelet/cadvisor"
|
||||
kubeletcertificate "k8s.io/kubernetes/pkg/kubelet/certificate"
|
||||
"k8s.io/kubernetes/pkg/kubelet/certificate/bootstrap"
|
||||
@@ -88,7 +89,6 @@ import (
|
||||
utilfs "k8s.io/kubernetes/pkg/util/filesystem"
|
||||
utilflag "k8s.io/kubernetes/pkg/util/flag"
|
||||
"k8s.io/kubernetes/pkg/util/flock"
|
||||
kubeio "k8s.io/kubernetes/pkg/util/io"
|
||||
"k8s.io/kubernetes/pkg/util/mount"
|
||||
nodeutil "k8s.io/kubernetes/pkg/util/node"
|
||||
"k8s.io/kubernetes/pkg/util/nsenter"
|
||||
@@ -360,7 +360,7 @@ func UnsecuredDependencies(s *options.KubeletServer) (*kubelet.Dependencies, err
|
||||
}
|
||||
|
||||
mounter := mount.New(s.ExperimentalMounterPath)
|
||||
var writer kubeio.Writer = &kubeio.StdWriter{}
|
||||
var pluginRunner = exec.New()
|
||||
if s.Containerized {
|
||||
glog.V(2).Info("Running kubelet in containerized mode")
|
||||
ne, err := nsenter.NewNsenter(nsenter.DefaultHostRootFsPath, exec.New())
|
||||
@@ -368,7 +368,8 @@ func UnsecuredDependencies(s *options.KubeletServer) (*kubelet.Dependencies, err
|
||||
return nil, err
|
||||
}
|
||||
mounter = mount.NewNsenterMounter(s.RootDirectory, ne)
|
||||
writer = kubeio.NewNsenterWriter(ne)
|
||||
// an exec interface which can use nsenter for flex plugin calls
|
||||
pluginRunner = nsenter.NewNsenterExecutor(nsenter.DefaultHostRootFsPath, exec.New())
|
||||
}
|
||||
|
||||
var dockerClientConfig *dockershim.ClientConfig
|
||||
@@ -388,14 +389,13 @@ func UnsecuredDependencies(s *options.KubeletServer) (*kubelet.Dependencies, err
|
||||
DockerClientConfig: dockerClientConfig,
|
||||
KubeClient: nil,
|
||||
HeartbeatClient: nil,
|
||||
ExternalKubeClient: nil,
|
||||
CSIClient: nil,
|
||||
EventClient: nil,
|
||||
Mounter: mounter,
|
||||
OOMAdjuster: oom.NewOOMAdjuster(),
|
||||
OSInterface: kubecontainer.RealOS{},
|
||||
Writer: writer,
|
||||
VolumePlugins: ProbeVolumePlugins(),
|
||||
DynamicPluginProber: GetDynamicPluginProber(s.VolumePluginDir),
|
||||
DynamicPluginProber: GetDynamicPluginProber(s.VolumePluginDir, pluginRunner),
|
||||
TLSOptions: tlsOptions}, nil
|
||||
}
|
||||
|
||||
@@ -529,7 +529,11 @@ func run(s *options.KubeletServer, kubeDeps *kubelet.Dependencies, stopCh <-chan
|
||||
}
|
||||
}
|
||||
|
||||
nodeName, err := getNodeName(kubeDeps.Cloud, nodeutil.GetHostname(s.HostnameOverride))
|
||||
hostName, err := nodeutil.GetHostname(s.HostnameOverride)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
nodeName, err := getNodeName(kubeDeps.Cloud, hostName)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -543,16 +547,16 @@ func run(s *options.KubeletServer, kubeDeps *kubelet.Dependencies, stopCh <-chan
|
||||
// if in standalone mode, indicate as much by setting all clients to nil
|
||||
if standaloneMode {
|
||||
kubeDeps.KubeClient = nil
|
||||
kubeDeps.ExternalKubeClient = nil
|
||||
kubeDeps.DynamicKubeClient = nil
|
||||
kubeDeps.EventClient = nil
|
||||
kubeDeps.HeartbeatClient = nil
|
||||
glog.Warningf("standalone mode, no API client")
|
||||
} else if kubeDeps.KubeClient == nil || kubeDeps.ExternalKubeClient == nil || kubeDeps.EventClient == nil || kubeDeps.HeartbeatClient == nil {
|
||||
} else if kubeDeps.KubeClient == nil || kubeDeps.EventClient == nil || kubeDeps.HeartbeatClient == nil || kubeDeps.DynamicKubeClient == nil {
|
||||
// initialize clients if not standalone mode and any of the clients are not provided
|
||||
var kubeClient clientset.Interface
|
||||
var eventClient v1core.EventsGetter
|
||||
var heartbeatClient v1core.CoreV1Interface
|
||||
var externalKubeClient clientset.Interface
|
||||
var heartbeatClient clientset.Interface
|
||||
var dynamicKubeClient dynamic.Interface
|
||||
|
||||
clientConfig, err := createAPIServerClientConfig(s)
|
||||
if err != nil {
|
||||
@@ -582,9 +586,9 @@ func run(s *options.KubeletServer, kubeDeps *kubelet.Dependencies, stopCh <-chan
|
||||
clientCertificateManager.SetCertificateSigningRequestClient(kubeClient.CertificatesV1beta1().CertificateSigningRequests())
|
||||
clientCertificateManager.Start()
|
||||
}
|
||||
externalKubeClient, err = clientset.NewForConfig(clientConfig)
|
||||
dynamicKubeClient, err = dynamic.NewForConfig(clientConfig)
|
||||
if err != nil {
|
||||
glog.Warningf("New kubeClient from clientConfig error: %v", err)
|
||||
glog.Warningf("Failed to initialize dynamic KubeClient: %v", err)
|
||||
}
|
||||
|
||||
// make a separate client for events
|
||||
@@ -599,14 +603,28 @@ func run(s *options.KubeletServer, kubeDeps *kubelet.Dependencies, stopCh <-chan
|
||||
// make a separate client for heartbeat with throttling disabled and a timeout attached
|
||||
heartbeatClientConfig := *clientConfig
|
||||
heartbeatClientConfig.Timeout = s.KubeletConfiguration.NodeStatusUpdateFrequency.Duration
|
||||
// if the NodeLease feature is enabled, the timeout is the minimum of the lease duration and status update frequency
|
||||
if utilfeature.DefaultFeatureGate.Enabled(features.NodeLease) {
|
||||
leaseTimeout := time.Duration(s.KubeletConfiguration.NodeLeaseDurationSeconds) * time.Second
|
||||
if heartbeatClientConfig.Timeout > leaseTimeout {
|
||||
heartbeatClientConfig.Timeout = leaseTimeout
|
||||
}
|
||||
}
|
||||
heartbeatClientConfig.QPS = float32(-1)
|
||||
heartbeatClient, err = v1core.NewForConfig(&heartbeatClientConfig)
|
||||
heartbeatClient, err = clientset.NewForConfig(&heartbeatClientConfig)
|
||||
if err != nil {
|
||||
glog.Warningf("Failed to create API Server client for heartbeat: %v", err)
|
||||
}
|
||||
|
||||
// csiClient works with CRDs that support json only
|
||||
clientConfig.ContentType = "application/json"
|
||||
csiClient, err := csiclientset.NewForConfig(clientConfig)
|
||||
if err != nil {
|
||||
glog.Warningf("Failed to create CSI API client: %v", err)
|
||||
}
|
||||
|
||||
kubeDeps.KubeClient = kubeClient
|
||||
kubeDeps.ExternalKubeClient = externalKubeClient
|
||||
kubeDeps.DynamicKubeClient = dynamicKubeClient
|
||||
if heartbeatClient != nil {
|
||||
kubeDeps.HeartbeatClient = heartbeatClient
|
||||
kubeDeps.OnHeartbeatFailure = closeAllConns
|
||||
@@ -614,6 +632,7 @@ func run(s *options.KubeletServer, kubeDeps *kubelet.Dependencies, stopCh <-chan
|
||||
if eventClient != nil {
|
||||
kubeDeps.EventClient = eventClient
|
||||
}
|
||||
kubeDeps.CSIClient = csiClient
|
||||
}
|
||||
|
||||
// If the kubelet config controller is available, and dynamic config is enabled, start the config and status sync loops
|
||||
@@ -625,7 +644,7 @@ func run(s *options.KubeletServer, kubeDeps *kubelet.Dependencies, stopCh <-chan
|
||||
}
|
||||
|
||||
if kubeDeps.Auth == nil {
|
||||
auth, err := BuildAuth(nodeName, kubeDeps.ExternalKubeClient, s.KubeletConfiguration)
|
||||
auth, err := BuildAuth(nodeName, kubeDeps.KubeClient, s.KubeletConfiguration)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -634,7 +653,7 @@ func run(s *options.KubeletServer, kubeDeps *kubelet.Dependencies, stopCh <-chan
|
||||
|
||||
if kubeDeps.CAdvisorInterface == nil {
|
||||
imageFsInfoProvider := cadvisor.NewImageFsInfoProvider(s.ContainerRuntime, s.RemoteRuntimeEndpoint)
|
||||
kubeDeps.CAdvisorInterface, err = cadvisor.New(s.Address, uint(s.CAdvisorPort), imageFsInfoProvider, s.RootDirectory, cadvisor.UsingLegacyCadvisorStats(s.ContainerRuntime, s.RemoteRuntimeEndpoint))
|
||||
kubeDeps.CAdvisorInterface, err = cadvisor.New(imageFsInfoProvider, s.RootDirectory, cadvisor.UsingLegacyCadvisorStats(s.ContainerRuntime, s.RemoteRuntimeEndpoint))
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -697,6 +716,7 @@ func run(s *options.KubeletServer, kubeDeps *kubelet.Dependencies, stopCh <-chan
|
||||
ExperimentalCPUManagerReconcilePeriod: s.CPUManagerReconcilePeriod.Duration,
|
||||
ExperimentalPodPidsLimit: s.PodPidsLimit,
|
||||
EnforceCPULimits: s.CPUCFSQuota,
|
||||
CPUCFSQuotaPeriod: s.CPUCFSQuotaPeriod.Duration,
|
||||
},
|
||||
s.FailSwapOn,
|
||||
devicePluginEnabled,
|
||||
@@ -721,7 +741,7 @@ func run(s *options.KubeletServer, kubeDeps *kubelet.Dependencies, stopCh <-chan
|
||||
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
|
||||
}
|
||||
|
||||
@@ -786,7 +806,11 @@ func InitializeTLS(kf *options.KubeletFlags, kc *kubeletconfiginternal.KubeletCo
|
||||
return nil, err
|
||||
}
|
||||
if !canReadCertAndKey {
|
||||
cert, key, err := certutil.GenerateSelfSignedCertKey(nodeutil.GetHostname(kf.HostnameOverride), nil, nil)
|
||||
hostName, err := nodeutil.GetHostname(kf.HostnameOverride)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
cert, key, err := certutil.GenerateSelfSignedCertKey(hostName, nil, nil)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("unable to generate self signed cert: %v", err)
|
||||
}
|
||||
@@ -887,8 +911,11 @@ func addChaosToClientConfig(s *options.KubeletServer, config *restclient.Config)
|
||||
// 2 Kubelet binary
|
||||
// 3 Standalone 'kubernetes' binary
|
||||
// Eventually, #2 will be replaced with instances of #3
|
||||
func RunKubelet(kubeFlags *options.KubeletFlags, kubeCfg *kubeletconfiginternal.KubeletConfiguration, kubeDeps *kubelet.Dependencies, runOnce bool) error {
|
||||
hostname := nodeutil.GetHostname(kubeFlags.HostnameOverride)
|
||||
func RunKubelet(kubeServer *options.KubeletServer, kubeDeps *kubelet.Dependencies, runOnce bool) error {
|
||||
hostname, err := nodeutil.GetHostname(kubeServer.HostnameOverride)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
// Query the cloud provider for our node name, default to hostname if kubeDeps.Cloud == nil
|
||||
nodeName, err := getNodeName(kubeDeps.Cloud, hostname)
|
||||
if err != nil {
|
||||
@@ -902,17 +929,17 @@ func RunKubelet(kubeFlags *options.KubeletFlags, kubeCfg *kubeletconfiginternal.
|
||||
// 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
|
||||
// place for validation of the KubeletConfiguration yet.
|
||||
hostNetworkSources, err := kubetypes.GetValidatedSources(kubeFlags.HostNetworkSources)
|
||||
hostNetworkSources, err := kubetypes.GetValidatedSources(kubeServer.HostNetworkSources)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
hostPIDSources, err := kubetypes.GetValidatedSources(kubeFlags.HostPIDSources)
|
||||
hostPIDSources, err := kubetypes.GetValidatedSources(kubeServer.HostPIDSources)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
hostIPCSources, err := kubetypes.GetValidatedSources(kubeFlags.HostIPCSources)
|
||||
hostIPCSources, err := kubetypes.GetValidatedSources(kubeServer.HostIPCSources)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -922,46 +949,46 @@ func RunKubelet(kubeFlags *options.KubeletFlags, kubeCfg *kubeletconfiginternal.
|
||||
HostPIDSources: hostPIDSources,
|
||||
HostIPCSources: hostIPCSources,
|
||||
}
|
||||
capabilities.Setup(kubeFlags.AllowPrivileged, privilegedSources, 0)
|
||||
capabilities.Setup(kubeServer.AllowPrivileged, privilegedSources, 0)
|
||||
|
||||
credentialprovider.SetPreferredDockercfgPath(kubeFlags.RootDirectory)
|
||||
glog.V(2).Infof("Using root directory: %v", kubeFlags.RootDirectory)
|
||||
credentialprovider.SetPreferredDockercfgPath(kubeServer.RootDirectory)
|
||||
glog.V(2).Infof("Using root directory: %v", kubeServer.RootDirectory)
|
||||
|
||||
if kubeDeps.OSInterface == nil {
|
||||
kubeDeps.OSInterface = kubecontainer.RealOS{}
|
||||
}
|
||||
|
||||
k, err := CreateAndInitKubelet(kubeCfg,
|
||||
k, err := CreateAndInitKubelet(&kubeServer.KubeletConfiguration,
|
||||
kubeDeps,
|
||||
&kubeFlags.ContainerRuntimeOptions,
|
||||
kubeFlags.ContainerRuntime,
|
||||
kubeFlags.RuntimeCgroups,
|
||||
kubeFlags.HostnameOverride,
|
||||
kubeFlags.NodeIP,
|
||||
kubeFlags.ProviderID,
|
||||
kubeFlags.CloudProvider,
|
||||
kubeFlags.CertDirectory,
|
||||
kubeFlags.RootDirectory,
|
||||
kubeFlags.RegisterNode,
|
||||
kubeFlags.RegisterWithTaints,
|
||||
kubeFlags.AllowedUnsafeSysctls,
|
||||
kubeFlags.RemoteRuntimeEndpoint,
|
||||
kubeFlags.RemoteImageEndpoint,
|
||||
kubeFlags.ExperimentalMounterPath,
|
||||
kubeFlags.ExperimentalKernelMemcgNotification,
|
||||
kubeFlags.ExperimentalCheckNodeCapabilitiesBeforeMount,
|
||||
kubeFlags.ExperimentalNodeAllocatableIgnoreEvictionThreshold,
|
||||
kubeFlags.MinimumGCAge,
|
||||
kubeFlags.MaxPerPodContainerCount,
|
||||
kubeFlags.MaxContainerCount,
|
||||
kubeFlags.MasterServiceNamespace,
|
||||
kubeFlags.RegisterSchedulable,
|
||||
kubeFlags.NonMasqueradeCIDR,
|
||||
kubeFlags.KeepTerminatedPodVolumes,
|
||||
kubeFlags.NodeLabels,
|
||||
kubeFlags.SeccompProfileRoot,
|
||||
kubeFlags.BootstrapCheckpointPath,
|
||||
kubeFlags.NodeStatusMaxImages)
|
||||
&kubeServer.ContainerRuntimeOptions,
|
||||
kubeServer.ContainerRuntime,
|
||||
kubeServer.RuntimeCgroups,
|
||||
kubeServer.HostnameOverride,
|
||||
kubeServer.NodeIP,
|
||||
kubeServer.ProviderID,
|
||||
kubeServer.CloudProvider,
|
||||
kubeServer.CertDirectory,
|
||||
kubeServer.RootDirectory,
|
||||
kubeServer.RegisterNode,
|
||||
kubeServer.RegisterWithTaints,
|
||||
kubeServer.AllowedUnsafeSysctls,
|
||||
kubeServer.RemoteRuntimeEndpoint,
|
||||
kubeServer.RemoteImageEndpoint,
|
||||
kubeServer.ExperimentalMounterPath,
|
||||
kubeServer.ExperimentalKernelMemcgNotification,
|
||||
kubeServer.ExperimentalCheckNodeCapabilitiesBeforeMount,
|
||||
kubeServer.ExperimentalNodeAllocatableIgnoreEvictionThreshold,
|
||||
kubeServer.MinimumGCAge,
|
||||
kubeServer.MaxPerPodContainerCount,
|
||||
kubeServer.MaxContainerCount,
|
||||
kubeServer.MasterServiceNamespace,
|
||||
kubeServer.RegisterSchedulable,
|
||||
kubeServer.NonMasqueradeCIDR,
|
||||
kubeServer.KeepTerminatedPodVolumes,
|
||||
kubeServer.NodeLabels,
|
||||
kubeServer.SeccompProfileRoot,
|
||||
kubeServer.BootstrapCheckpointPath,
|
||||
kubeServer.NodeStatusMaxImages)
|
||||
if err != nil {
|
||||
return fmt.Errorf("failed to create kubelet: %v", err)
|
||||
}
|
||||
@@ -973,7 +1000,7 @@ func RunKubelet(kubeFlags *options.KubeletFlags, kubeCfg *kubeletconfiginternal.
|
||||
}
|
||||
podCfg := kubeDeps.PodConfig
|
||||
|
||||
rlimit.RlimitNumFiles(uint64(kubeCfg.MaxOpenFiles))
|
||||
rlimit.RlimitNumFiles(uint64(kubeServer.MaxOpenFiles))
|
||||
|
||||
// process pods and exit.
|
||||
if runOnce {
|
||||
@@ -982,38 +1009,26 @@ func RunKubelet(kubeFlags *options.KubeletFlags, kubeCfg *kubeletconfiginternal.
|
||||
}
|
||||
glog.Infof("Started kubelet as runonce")
|
||||
} else {
|
||||
startKubelet(k, podCfg, kubeCfg, kubeDeps, kubeFlags.EnableServer)
|
||||
startKubelet(k, podCfg, &kubeServer.KubeletConfiguration, kubeDeps, kubeServer.EnableServer)
|
||||
glog.Infof("Started kubelet")
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func startKubelet(k kubelet.Bootstrap, podCfg *config.PodConfig, kubeCfg *kubeletconfiginternal.KubeletConfiguration, kubeDeps *kubelet.Dependencies, enableServer bool) {
|
||||
wg := sync.WaitGroup{}
|
||||
|
||||
// start the kubelet
|
||||
wg.Add(1)
|
||||
go wait.Until(func() {
|
||||
wg.Done()
|
||||
k.Run(podCfg.Updates())
|
||||
}, 0, wait.NeverStop)
|
||||
|
||||
// start the kubelet server
|
||||
if enableServer {
|
||||
wg.Add(1)
|
||||
go wait.Until(func() {
|
||||
wg.Done()
|
||||
k.ListenAndServe(net.ParseIP(kubeCfg.Address), uint(kubeCfg.Port), kubeDeps.TLSOptions, kubeDeps.Auth, kubeCfg.EnableDebuggingHandlers, kubeCfg.EnableContentionProfiling)
|
||||
}, 0, wait.NeverStop)
|
||||
go k.ListenAndServe(net.ParseIP(kubeCfg.Address), uint(kubeCfg.Port), kubeDeps.TLSOptions, kubeDeps.Auth, kubeCfg.EnableDebuggingHandlers, kubeCfg.EnableContentionProfiling)
|
||||
|
||||
}
|
||||
if kubeCfg.ReadOnlyPort > 0 {
|
||||
wg.Add(1)
|
||||
go wait.Until(func() {
|
||||
wg.Done()
|
||||
k.ListenAndServeReadOnly(net.ParseIP(kubeCfg.Address), uint(kubeCfg.ReadOnlyPort))
|
||||
}, 0, wait.NeverStop)
|
||||
go k.ListenAndServeReadOnly(net.ParseIP(kubeCfg.Address), uint(kubeCfg.ReadOnlyPort))
|
||||
}
|
||||
wg.Wait()
|
||||
}
|
||||
|
||||
func CreateAndInitKubelet(kubeCfg *kubeletconfiginternal.KubeletConfiguration,
|
||||
@@ -1175,7 +1190,7 @@ func RunDockershim(f *options.KubeletFlags, c *kubeletconfiginternal.KubeletConf
|
||||
|
||||
// Standalone dockershim will always start the local streaming server.
|
||||
ds, err := dockershim.NewDockerService(dockerClientConfig, r.PodSandboxImage, streamingConfig, &pluginSettings,
|
||||
f.RuntimeCgroups, c.CgroupDriver, r.DockershimRootDirectory, r.DockerDisableSharedPID, true /*startLocalStreamingServer*/)
|
||||
f.RuntimeCgroups, c.CgroupDriver, r.DockershimRootDirectory, true /*startLocalStreamingServer*/)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
Reference in New Issue
Block a user