mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-27 13:37:30 +00:00
Revert pull request #85879 "hollow-node use remote CRI"
This commit is contained in:
parent
6c98d5515b
commit
4303be3d9f
@ -757,17 +757,6 @@ func run(s *options.KubeletServer, kubeDeps *kubelet.Dependencies, featureGate f
|
|||||||
klog.Warning(err)
|
klog.Warning(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
err = kubelet.PreInitRuntimeService(&s.KubeletConfiguration,
|
|
||||||
kubeDeps, &s.ContainerRuntimeOptions,
|
|
||||||
s.ContainerRuntime,
|
|
||||||
s.RuntimeCgroups,
|
|
||||||
s.RemoteRuntimeEndpoint,
|
|
||||||
s.RemoteImageEndpoint,
|
|
||||||
s.NonMasqueradeCIDR)
|
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
|
|
||||||
if err := RunKubelet(s, kubeDeps, s.RunOnce); err != nil {
|
if err := RunKubelet(s, kubeDeps, s.RunOnce); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
@ -1073,6 +1062,7 @@ func RunKubelet(kubeServer *options.KubeletServer, kubeDeps *kubelet.Dependencie
|
|||||||
kubeDeps,
|
kubeDeps,
|
||||||
&kubeServer.ContainerRuntimeOptions,
|
&kubeServer.ContainerRuntimeOptions,
|
||||||
kubeServer.ContainerRuntime,
|
kubeServer.ContainerRuntime,
|
||||||
|
kubeServer.RuntimeCgroups,
|
||||||
kubeServer.HostnameOverride,
|
kubeServer.HostnameOverride,
|
||||||
kubeServer.NodeIP,
|
kubeServer.NodeIP,
|
||||||
kubeServer.ProviderID,
|
kubeServer.ProviderID,
|
||||||
@ -1082,6 +1072,8 @@ func RunKubelet(kubeServer *options.KubeletServer, kubeDeps *kubelet.Dependencie
|
|||||||
kubeServer.RegisterNode,
|
kubeServer.RegisterNode,
|
||||||
kubeServer.RegisterWithTaints,
|
kubeServer.RegisterWithTaints,
|
||||||
kubeServer.AllowedUnsafeSysctls,
|
kubeServer.AllowedUnsafeSysctls,
|
||||||
|
kubeServer.RemoteRuntimeEndpoint,
|
||||||
|
kubeServer.RemoteImageEndpoint,
|
||||||
kubeServer.ExperimentalMounterPath,
|
kubeServer.ExperimentalMounterPath,
|
||||||
kubeServer.ExperimentalKernelMemcgNotification,
|
kubeServer.ExperimentalKernelMemcgNotification,
|
||||||
kubeServer.ExperimentalCheckNodeCapabilitiesBeforeMount,
|
kubeServer.ExperimentalCheckNodeCapabilitiesBeforeMount,
|
||||||
@ -1091,6 +1083,7 @@ func RunKubelet(kubeServer *options.KubeletServer, kubeDeps *kubelet.Dependencie
|
|||||||
kubeServer.MaxContainerCount,
|
kubeServer.MaxContainerCount,
|
||||||
kubeServer.MasterServiceNamespace,
|
kubeServer.MasterServiceNamespace,
|
||||||
kubeServer.RegisterSchedulable,
|
kubeServer.RegisterSchedulable,
|
||||||
|
kubeServer.NonMasqueradeCIDR,
|
||||||
kubeServer.KeepTerminatedPodVolumes,
|
kubeServer.KeepTerminatedPodVolumes,
|
||||||
kubeServer.NodeLabels,
|
kubeServer.NodeLabels,
|
||||||
kubeServer.SeccompProfileRoot,
|
kubeServer.SeccompProfileRoot,
|
||||||
@ -1145,6 +1138,7 @@ func createAndInitKubelet(kubeCfg *kubeletconfiginternal.KubeletConfiguration,
|
|||||||
kubeDeps *kubelet.Dependencies,
|
kubeDeps *kubelet.Dependencies,
|
||||||
crOptions *config.ContainerRuntimeOptions,
|
crOptions *config.ContainerRuntimeOptions,
|
||||||
containerRuntime string,
|
containerRuntime string,
|
||||||
|
runtimeCgroups string,
|
||||||
hostnameOverride string,
|
hostnameOverride string,
|
||||||
nodeIP string,
|
nodeIP string,
|
||||||
providerID string,
|
providerID string,
|
||||||
@ -1154,6 +1148,8 @@ func createAndInitKubelet(kubeCfg *kubeletconfiginternal.KubeletConfiguration,
|
|||||||
registerNode bool,
|
registerNode bool,
|
||||||
registerWithTaints []api.Taint,
|
registerWithTaints []api.Taint,
|
||||||
allowedUnsafeSysctls []string,
|
allowedUnsafeSysctls []string,
|
||||||
|
remoteRuntimeEndpoint string,
|
||||||
|
remoteImageEndpoint string,
|
||||||
experimentalMounterPath string,
|
experimentalMounterPath string,
|
||||||
experimentalKernelMemcgNotification bool,
|
experimentalKernelMemcgNotification bool,
|
||||||
experimentalCheckNodeCapabilitiesBeforeMount bool,
|
experimentalCheckNodeCapabilitiesBeforeMount bool,
|
||||||
@ -1163,6 +1159,7 @@ func createAndInitKubelet(kubeCfg *kubeletconfiginternal.KubeletConfiguration,
|
|||||||
maxContainerCount int32,
|
maxContainerCount int32,
|
||||||
masterServiceNamespace string,
|
masterServiceNamespace string,
|
||||||
registerSchedulable bool,
|
registerSchedulable bool,
|
||||||
|
nonMasqueradeCIDR string,
|
||||||
keepTerminatedPodVolumes bool,
|
keepTerminatedPodVolumes bool,
|
||||||
nodeLabels map[string]string,
|
nodeLabels map[string]string,
|
||||||
seccompProfileRoot string,
|
seccompProfileRoot string,
|
||||||
@ -1175,6 +1172,7 @@ func createAndInitKubelet(kubeCfg *kubeletconfiginternal.KubeletConfiguration,
|
|||||||
kubeDeps,
|
kubeDeps,
|
||||||
crOptions,
|
crOptions,
|
||||||
containerRuntime,
|
containerRuntime,
|
||||||
|
runtimeCgroups,
|
||||||
hostnameOverride,
|
hostnameOverride,
|
||||||
nodeIP,
|
nodeIP,
|
||||||
providerID,
|
providerID,
|
||||||
@ -1184,6 +1182,8 @@ func createAndInitKubelet(kubeCfg *kubeletconfiginternal.KubeletConfiguration,
|
|||||||
registerNode,
|
registerNode,
|
||||||
registerWithTaints,
|
registerWithTaints,
|
||||||
allowedUnsafeSysctls,
|
allowedUnsafeSysctls,
|
||||||
|
remoteRuntimeEndpoint,
|
||||||
|
remoteImageEndpoint,
|
||||||
experimentalMounterPath,
|
experimentalMounterPath,
|
||||||
experimentalKernelMemcgNotification,
|
experimentalKernelMemcgNotification,
|
||||||
experimentalCheckNodeCapabilitiesBeforeMount,
|
experimentalCheckNodeCapabilitiesBeforeMount,
|
||||||
@ -1193,6 +1193,7 @@ func createAndInitKubelet(kubeCfg *kubeletconfiginternal.KubeletConfiguration,
|
|||||||
maxContainerCount,
|
maxContainerCount,
|
||||||
masterServiceNamespace,
|
masterServiceNamespace,
|
||||||
registerSchedulable,
|
registerSchedulable,
|
||||||
|
nonMasqueradeCIDR,
|
||||||
keepTerminatedPodVolumes,
|
keepTerminatedPodVolumes,
|
||||||
nodeLabels,
|
nodeLabels,
|
||||||
seccompProfileRoot,
|
seccompProfileRoot,
|
||||||
|
@ -19,7 +19,8 @@ go_library(
|
|||||||
"//pkg/api/legacyscheme:go_default_library",
|
"//pkg/api/legacyscheme:go_default_library",
|
||||||
"//pkg/kubelet/cadvisor/testing:go_default_library",
|
"//pkg/kubelet/cadvisor/testing:go_default_library",
|
||||||
"//pkg/kubelet/cm:go_default_library",
|
"//pkg/kubelet/cm:go_default_library",
|
||||||
"//pkg/kubelet/remote/fake:go_default_library",
|
"//pkg/kubelet/dockershim:go_default_library",
|
||||||
|
"//pkg/kubelet/dockershim/libdocker:go_default_library",
|
||||||
"//pkg/kubemark:go_default_library",
|
"//pkg/kubemark:go_default_library",
|
||||||
"//pkg/master/ports:go_default_library",
|
"//pkg/master/ports:go_default_library",
|
||||||
"//pkg/util/iptables/testing:go_default_library",
|
"//pkg/util/iptables/testing:go_default_library",
|
||||||
|
@ -43,7 +43,8 @@ import (
|
|||||||
"k8s.io/kubernetes/pkg/api/legacyscheme"
|
"k8s.io/kubernetes/pkg/api/legacyscheme"
|
||||||
cadvisortest "k8s.io/kubernetes/pkg/kubelet/cadvisor/testing"
|
cadvisortest "k8s.io/kubernetes/pkg/kubelet/cadvisor/testing"
|
||||||
"k8s.io/kubernetes/pkg/kubelet/cm"
|
"k8s.io/kubernetes/pkg/kubelet/cm"
|
||||||
fakeremote "k8s.io/kubernetes/pkg/kubelet/remote/fake"
|
"k8s.io/kubernetes/pkg/kubelet/dockershim"
|
||||||
|
"k8s.io/kubernetes/pkg/kubelet/dockershim/libdocker"
|
||||||
"k8s.io/kubernetes/pkg/kubemark"
|
"k8s.io/kubernetes/pkg/kubemark"
|
||||||
"k8s.io/kubernetes/pkg/master/ports"
|
"k8s.io/kubernetes/pkg/master/ports"
|
||||||
fakeiptables "k8s.io/kubernetes/pkg/util/iptables/testing"
|
fakeiptables "k8s.io/kubernetes/pkg/util/iptables/testing"
|
||||||
@ -193,14 +194,19 @@ func run(config *hollowNodeConfig) {
|
|||||||
NodeName: config.NodeName,
|
NodeName: config.NodeName,
|
||||||
}
|
}
|
||||||
containerManager := cm.NewStubContainerManager()
|
containerManager := cm.NewStubContainerManager()
|
||||||
fakeRemoteRuntime := fakeremote.NewFakeRemoteRuntime()
|
|
||||||
|
fakeDockerClientConfig := &dockershim.ClientConfig{
|
||||||
|
DockerEndpoint: libdocker.FakeDockerEndpoint,
|
||||||
|
EnableSleep: true,
|
||||||
|
WithTraceDisabled: true,
|
||||||
|
}
|
||||||
|
|
||||||
hollowKubelet := kubemark.NewHollowKubelet(
|
hollowKubelet := kubemark.NewHollowKubelet(
|
||||||
f, c,
|
f, c,
|
||||||
client,
|
client,
|
||||||
heartbeatClient,
|
heartbeatClient,
|
||||||
cadvisorInterface,
|
cadvisorInterface,
|
||||||
fakeRemoteRuntime,
|
fakeDockerClientConfig,
|
||||||
containerManager,
|
containerManager,
|
||||||
)
|
)
|
||||||
hollowKubelet.Run()
|
hollowKubelet.Run()
|
||||||
|
@ -179,6 +179,8 @@ func NewDockerClientFromConfig(config *ClientConfig) libdocker.Interface {
|
|||||||
config.DockerEndpoint,
|
config.DockerEndpoint,
|
||||||
config.RuntimeRequestTimeout,
|
config.RuntimeRequestTimeout,
|
||||||
config.ImagePullProgressDeadline,
|
config.ImagePullProgressDeadline,
|
||||||
|
config.WithTraceDisabled,
|
||||||
|
config.EnableSleep,
|
||||||
)
|
)
|
||||||
return client
|
return client
|
||||||
}
|
}
|
||||||
|
@ -84,7 +84,19 @@ func getDockerClient(dockerEndpoint string) (*dockerapi.Client, error) {
|
|||||||
// is the timeout for docker requests. If timeout is exceeded, the request
|
// is the timeout for docker requests. If timeout is exceeded, the request
|
||||||
// will be cancelled and throw out an error. If requestTimeout is 0, a default
|
// will be cancelled and throw out an error. If requestTimeout is 0, a default
|
||||||
// value will be applied.
|
// value will be applied.
|
||||||
func ConnectToDockerOrDie(dockerEndpoint string, requestTimeout, imagePullProgressDeadline time.Duration) Interface {
|
func ConnectToDockerOrDie(dockerEndpoint string, requestTimeout, imagePullProgressDeadline time.Duration,
|
||||||
|
withTraceDisabled bool, enableSleep bool) Interface {
|
||||||
|
if dockerEndpoint == FakeDockerEndpoint {
|
||||||
|
fakeClient := NewFakeDockerClient()
|
||||||
|
if withTraceDisabled {
|
||||||
|
fakeClient = fakeClient.WithTraceDisabled()
|
||||||
|
}
|
||||||
|
|
||||||
|
if enableSleep {
|
||||||
|
fakeClient.EnableSleep = true
|
||||||
|
}
|
||||||
|
return fakeClient
|
||||||
|
}
|
||||||
client, err := getDockerClient(dockerEndpoint)
|
client, err := getDockerClient(dockerEndpoint)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
klog.Fatalf("Couldn't connect to docker: %v", err)
|
klog.Fatalf("Couldn't connect to docker: %v", err)
|
||||||
|
@ -264,12 +264,6 @@ type Dependencies struct {
|
|||||||
DynamicPluginProber volume.DynamicPluginProber
|
DynamicPluginProber volume.DynamicPluginProber
|
||||||
TLSOptions *server.TLSOptions
|
TLSOptions *server.TLSOptions
|
||||||
KubeletConfigController *kubeletconfig.Controller
|
KubeletConfigController *kubeletconfig.Controller
|
||||||
RemoteRuntimeService internalapi.RuntimeService
|
|
||||||
RemoteImageService internalapi.ImageManagerService
|
|
||||||
criHandler http.Handler
|
|
||||||
dockerLegacyService dockershim.DockerLegacyService
|
|
||||||
// remove it after cadvisor.UsingLegacyCadvisorStats dropped.
|
|
||||||
useLegacyCadvisorStats bool
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// makePodSourceConfig creates a config.PodConfig from the given
|
// makePodSourceConfig creates a config.PodConfig from the given
|
||||||
@ -323,82 +317,16 @@ func makePodSourceConfig(kubeCfg *kubeletconfiginternal.KubeletConfiguration, ku
|
|||||||
return cfg, nil
|
return cfg, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// PreInitRuntimeService will init runtime service before RunKubelet.
|
func getRuntimeAndImageServices(remoteRuntimeEndpoint string, remoteImageEndpoint string, runtimeRequestTimeout metav1.Duration) (internalapi.RuntimeService, internalapi.ImageManagerService, error) {
|
||||||
func PreInitRuntimeService(kubeCfg *kubeletconfiginternal.KubeletConfiguration,
|
rs, err := remote.NewRemoteRuntimeService(remoteRuntimeEndpoint, runtimeRequestTimeout.Duration)
|
||||||
kubeDeps *Dependencies,
|
|
||||||
crOptions *config.ContainerRuntimeOptions,
|
|
||||||
containerRuntime string,
|
|
||||||
runtimeCgroups string,
|
|
||||||
remoteRuntimeEndpoint string,
|
|
||||||
remoteImageEndpoint string,
|
|
||||||
nonMasqueradeCIDR string) error {
|
|
||||||
if remoteRuntimeEndpoint != "" {
|
|
||||||
// remoteImageEndpoint is same as remoteRuntimeEndpoint if not explicitly specified
|
|
||||||
if remoteImageEndpoint == "" {
|
|
||||||
remoteImageEndpoint = remoteRuntimeEndpoint
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
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 {
|
if err != nil {
|
||||||
return err
|
return nil, nil, err
|
||||||
}
|
}
|
||||||
if crOptions.RedirectContainerStreaming {
|
is, err := remote.NewRemoteImageService(remoteImageEndpoint, runtimeRequestTimeout.Duration)
|
||||||
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 {
|
if err != nil {
|
||||||
return err
|
return nil, nil, err
|
||||||
}
|
}
|
||||||
if !supported {
|
return rs, is, err
|
||||||
kubeDeps.dockerLegacyService = ds
|
|
||||||
}
|
|
||||||
case kubetypes.RemoteContainerRuntime:
|
|
||||||
// No-op.
|
|
||||||
break
|
|
||||||
default:
|
|
||||||
return fmt.Errorf("unsupported CRI runtime: %q", containerRuntime)
|
|
||||||
}
|
|
||||||
|
|
||||||
var err error
|
|
||||||
if kubeDeps.RemoteRuntimeService, err = remote.NewRemoteRuntimeService(remoteRuntimeEndpoint, kubeCfg.RuntimeRequestTimeout.Duration); err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
if kubeDeps.RemoteImageService, err = remote.NewRemoteImageService(remoteImageEndpoint, kubeCfg.RuntimeRequestTimeout.Duration); err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
|
|
||||||
kubeDeps.useLegacyCadvisorStats = cadvisor.UsingLegacyCadvisorStats(containerRuntime, remoteRuntimeEndpoint)
|
|
||||||
|
|
||||||
return nil
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// NewMainKubelet instantiates a new Kubelet object along with all the required internal modules.
|
// NewMainKubelet instantiates a new Kubelet object along with all the required internal modules.
|
||||||
@ -407,6 +335,7 @@ func NewMainKubelet(kubeCfg *kubeletconfiginternal.KubeletConfiguration,
|
|||||||
kubeDeps *Dependencies,
|
kubeDeps *Dependencies,
|
||||||
crOptions *config.ContainerRuntimeOptions,
|
crOptions *config.ContainerRuntimeOptions,
|
||||||
containerRuntime string,
|
containerRuntime string,
|
||||||
|
runtimeCgroups string,
|
||||||
hostnameOverride string,
|
hostnameOverride string,
|
||||||
nodeIP string,
|
nodeIP string,
|
||||||
providerID string,
|
providerID string,
|
||||||
@ -416,6 +345,8 @@ func NewMainKubelet(kubeCfg *kubeletconfiginternal.KubeletConfiguration,
|
|||||||
registerNode bool,
|
registerNode bool,
|
||||||
registerWithTaints []api.Taint,
|
registerWithTaints []api.Taint,
|
||||||
allowedUnsafeSysctls []string,
|
allowedUnsafeSysctls []string,
|
||||||
|
remoteRuntimeEndpoint string,
|
||||||
|
remoteImageEndpoint string,
|
||||||
experimentalMounterPath string,
|
experimentalMounterPath string,
|
||||||
experimentalKernelMemcgNotification bool,
|
experimentalKernelMemcgNotification bool,
|
||||||
experimentalCheckNodeCapabilitiesBeforeMount bool,
|
experimentalCheckNodeCapabilitiesBeforeMount bool,
|
||||||
@ -425,6 +356,7 @@ func NewMainKubelet(kubeCfg *kubeletconfiginternal.KubeletConfiguration,
|
|||||||
maxContainerCount int32,
|
maxContainerCount int32,
|
||||||
masterServiceNamespace string,
|
masterServiceNamespace string,
|
||||||
registerSchedulable bool,
|
registerSchedulable bool,
|
||||||
|
nonMasqueradeCIDR string,
|
||||||
keepTerminatedPodVolumes bool,
|
keepTerminatedPodVolumes bool,
|
||||||
nodeLabels map[string]string,
|
nodeLabels map[string]string,
|
||||||
seccompProfileRoot string,
|
seccompProfileRoot string,
|
||||||
@ -667,11 +599,72 @@ func NewMainKubelet(kubeCfg *kubeletconfiginternal.KubeletConfiguration,
|
|||||||
|
|
||||||
klet.statusManager = status.NewManager(klet.kubeClient, klet.podManager, klet)
|
klet.statusManager = status.NewManager(klet.kubeClient, klet.podManager, klet)
|
||||||
|
|
||||||
|
if remoteRuntimeEndpoint != "" {
|
||||||
|
// remoteImageEndpoint is same as remoteRuntimeEndpoint if not explicitly specified
|
||||||
|
if remoteImageEndpoint == "" {
|
||||||
|
remoteImageEndpoint = remoteRuntimeEndpoint
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 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),
|
||||||
|
}
|
||||||
|
|
||||||
klet.resourceAnalyzer = serverstats.NewResourceAnalyzer(klet, kubeCfg.VolumeStatsAggPeriod.Duration)
|
klet.resourceAnalyzer = serverstats.NewResourceAnalyzer(klet, kubeCfg.VolumeStatsAggPeriod.Duration)
|
||||||
|
|
||||||
klet.dockerLegacyService = kubeDeps.dockerLegacyService
|
// if left at nil, that means it is unneeded
|
||||||
klet.criHandler = kubeDeps.criHandler
|
var legacyLogProvider kuberuntime.LegacyLogProvider
|
||||||
klet.runtimeService = kubeDeps.RemoteRuntimeService
|
|
||||||
|
switch containerRuntime {
|
||||||
|
case kubetypes.DockerContainerRuntime:
|
||||||
|
// 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 nil, err
|
||||||
|
}
|
||||||
|
if crOptions.RedirectContainerStreaming {
|
||||||
|
klet.criHandler = ds
|
||||||
|
}
|
||||||
|
|
||||||
|
// The unix socket for kubelet <-> dockershim communication.
|
||||||
|
klog.V(5).Infof("RemoteRuntimeEndpoint: %q, RemoteImageEndpoint: %q",
|
||||||
|
remoteRuntimeEndpoint,
|
||||||
|
remoteImageEndpoint)
|
||||||
|
klog.V(2).Infof("Starting the GRPC server for the docker CRI shim.")
|
||||||
|
server := dockerremote.NewDockerServer(remoteRuntimeEndpoint, ds)
|
||||||
|
if err := server.Start(); err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// Create dockerLegacyService when the logging driver is not supported.
|
||||||
|
supported, err := ds.IsCRISupportedLogDriver()
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
if !supported {
|
||||||
|
klet.dockerLegacyService = ds
|
||||||
|
legacyLogProvider = ds
|
||||||
|
}
|
||||||
|
case kubetypes.RemoteContainerRuntime:
|
||||||
|
// No-op.
|
||||||
|
break
|
||||||
|
default:
|
||||||
|
return nil, fmt.Errorf("unsupported CRI runtime: %q", containerRuntime)
|
||||||
|
}
|
||||||
|
runtimeService, imageService, err := getRuntimeAndImageServices(remoteRuntimeEndpoint, remoteImageEndpoint, kubeCfg.RuntimeRequestTimeout)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
klet.runtimeService = runtimeService
|
||||||
|
|
||||||
if utilfeature.DefaultFeatureGate.Enabled(features.RuntimeClass) && kubeDeps.KubeClient != nil {
|
if utilfeature.DefaultFeatureGate.Enabled(features.RuntimeClass) && kubeDeps.KubeClient != nil {
|
||||||
klet.runtimeClassManager = runtimeclass.NewManager(kubeDeps.KubeClient)
|
klet.runtimeClassManager = runtimeclass.NewManager(kubeDeps.KubeClient)
|
||||||
@ -694,10 +687,10 @@ func NewMainKubelet(kubeCfg *kubeletconfiginternal.KubeletConfiguration,
|
|||||||
int(kubeCfg.RegistryBurst),
|
int(kubeCfg.RegistryBurst),
|
||||||
kubeCfg.CPUCFSQuota,
|
kubeCfg.CPUCFSQuota,
|
||||||
kubeCfg.CPUCFSQuotaPeriod,
|
kubeCfg.CPUCFSQuotaPeriod,
|
||||||
kubeDeps.RemoteRuntimeService,
|
runtimeService,
|
||||||
kubeDeps.RemoteImageService,
|
imageService,
|
||||||
kubeDeps.ContainerManager.InternalContainerLifecycle(),
|
kubeDeps.ContainerManager.InternalContainerLifecycle(),
|
||||||
kubeDeps.dockerLegacyService,
|
legacyLogProvider,
|
||||||
klet.runtimeClassManager,
|
klet.runtimeClassManager,
|
||||||
)
|
)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@ -713,7 +706,7 @@ func NewMainKubelet(kubeCfg *kubeletconfiginternal.KubeletConfiguration,
|
|||||||
}
|
}
|
||||||
klet.runtimeCache = runtimeCache
|
klet.runtimeCache = runtimeCache
|
||||||
|
|
||||||
if kubeDeps.useLegacyCadvisorStats {
|
if cadvisor.UsingLegacyCadvisorStats(containerRuntime, remoteRuntimeEndpoint) {
|
||||||
klet.StatsProvider = stats.NewCadvisorStatsProvider(
|
klet.StatsProvider = stats.NewCadvisorStatsProvider(
|
||||||
klet.cadvisor,
|
klet.cadvisor,
|
||||||
klet.resourceAnalyzer,
|
klet.resourceAnalyzer,
|
||||||
@ -727,8 +720,8 @@ func NewMainKubelet(kubeCfg *kubeletconfiginternal.KubeletConfiguration,
|
|||||||
klet.resourceAnalyzer,
|
klet.resourceAnalyzer,
|
||||||
klet.podManager,
|
klet.podManager,
|
||||||
klet.runtimeCache,
|
klet.runtimeCache,
|
||||||
kubeDeps.RemoteRuntimeService,
|
runtimeService,
|
||||||
kubeDeps.RemoteImageService,
|
imageService,
|
||||||
stats.NewLogMetricsService(),
|
stats.NewLogMetricsService(),
|
||||||
kubecontainer.RealOS{})
|
kubecontainer.RealOS{})
|
||||||
}
|
}
|
||||||
|
@ -22,7 +22,7 @@ go_library(
|
|||||||
"//pkg/kubelet/cadvisor:go_default_library",
|
"//pkg/kubelet/cadvisor:go_default_library",
|
||||||
"//pkg/kubelet/cm:go_default_library",
|
"//pkg/kubelet/cm:go_default_library",
|
||||||
"//pkg/kubelet/container/testing:go_default_library",
|
"//pkg/kubelet/container/testing:go_default_library",
|
||||||
"//pkg/kubelet/remote/fake:go_default_library",
|
"//pkg/kubelet/dockershim:go_default_library",
|
||||||
"//pkg/kubelet/types:go_default_library",
|
"//pkg/kubelet/types:go_default_library",
|
||||||
"//pkg/proxy:go_default_library",
|
"//pkg/proxy:go_default_library",
|
||||||
"//pkg/proxy/config:go_default_library",
|
"//pkg/proxy/config:go_default_library",
|
||||||
|
@ -32,7 +32,7 @@ import (
|
|||||||
"k8s.io/kubernetes/pkg/kubelet/cadvisor"
|
"k8s.io/kubernetes/pkg/kubelet/cadvisor"
|
||||||
"k8s.io/kubernetes/pkg/kubelet/cm"
|
"k8s.io/kubernetes/pkg/kubelet/cm"
|
||||||
containertest "k8s.io/kubernetes/pkg/kubelet/container/testing"
|
containertest "k8s.io/kubernetes/pkg/kubelet/container/testing"
|
||||||
fakeremote "k8s.io/kubernetes/pkg/kubelet/remote/fake"
|
"k8s.io/kubernetes/pkg/kubelet/dockershim"
|
||||||
kubetypes "k8s.io/kubernetes/pkg/kubelet/types"
|
kubetypes "k8s.io/kubernetes/pkg/kubelet/types"
|
||||||
"k8s.io/kubernetes/pkg/util/oom"
|
"k8s.io/kubernetes/pkg/util/oom"
|
||||||
"k8s.io/kubernetes/pkg/volume"
|
"k8s.io/kubernetes/pkg/volume"
|
||||||
@ -98,13 +98,12 @@ func NewHollowKubelet(
|
|||||||
client *clientset.Clientset,
|
client *clientset.Clientset,
|
||||||
heartbeatClient *clientset.Clientset,
|
heartbeatClient *clientset.Clientset,
|
||||||
cadvisorInterface cadvisor.Interface,
|
cadvisorInterface cadvisor.Interface,
|
||||||
remoteRuntime *fakeremote.RemoteRuntime,
|
dockerClientConfig *dockershim.ClientConfig,
|
||||||
containerManager cm.ContainerManager) *HollowKubelet {
|
containerManager cm.ContainerManager) *HollowKubelet {
|
||||||
d := &kubelet.Dependencies{
|
d := &kubelet.Dependencies{
|
||||||
KubeClient: client,
|
KubeClient: client,
|
||||||
HeartbeatClient: heartbeatClient,
|
HeartbeatClient: heartbeatClient,
|
||||||
RemoteRuntimeService: remoteRuntime.RuntimeService,
|
DockerClientConfig: dockerClientConfig,
|
||||||
RemoteImageService: remoteRuntime.ImageService,
|
|
||||||
CAdvisorInterface: cadvisorInterface,
|
CAdvisorInterface: cadvisorInterface,
|
||||||
Cloud: nil,
|
Cloud: nil,
|
||||||
OSInterface: &containertest.FakeOS{},
|
OSInterface: &containertest.FakeOS{},
|
||||||
@ -161,7 +160,6 @@ func GetHollowKubeletConfig(opt *HollowKubletOptions) (*options.KubeletFlags, *k
|
|||||||
f.MaxContainerCount = 100
|
f.MaxContainerCount = 100
|
||||||
f.MaxPerPodContainerCount = 2
|
f.MaxPerPodContainerCount = 2
|
||||||
f.NodeLabels = opt.NodeLabels
|
f.NodeLabels = opt.NodeLabels
|
||||||
f.ContainerRuntimeOptions.ContainerRuntime = kubetypes.RemoteContainerRuntime
|
|
||||||
f.RegisterNode = true
|
f.RegisterNode = true
|
||||||
f.RegisterSchedulable = true
|
f.RegisterSchedulable = true
|
||||||
f.ProviderID = fmt.Sprintf("kubemark://%v", opt.NodeName)
|
f.ProviderID = fmt.Sprintf("kubemark://%v", opt.NodeName)
|
||||||
|
Loading…
Reference in New Issue
Block a user