Skip to content

Commit 0dd4680

Browse files
author
louisgong
committed
inject remoteRuntime to kubelet dependency
1 parent b469404 commit 0dd4680

File tree

8 files changed

+35
-59
lines changed

8 files changed

+35
-59
lines changed

cmd/kubemark/BUILD

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ go_library(
1919
"//pkg/api/legacyscheme:go_default_library",
2020
"//pkg/kubelet/cadvisor/testing:go_default_library",
2121
"//pkg/kubelet/cm:go_default_library",
22+
"//pkg/kubelet/remote/fake:go_default_library",
2223
"//pkg/kubemark:go_default_library",
2324
"//pkg/master/ports:go_default_library",
2425
"//pkg/util/iptables/testing:go_default_library",

cmd/kubemark/hollow-node.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@ import (
4343
"k8s.io/kubernetes/pkg/api/legacyscheme"
4444
cadvisortest "k8s.io/kubernetes/pkg/kubelet/cadvisor/testing"
4545
"k8s.io/kubernetes/pkg/kubelet/cm"
46+
fakeremote "k8s.io/kubernetes/pkg/kubelet/remote/fake"
4647
"k8s.io/kubernetes/pkg/kubemark"
4748
"k8s.io/kubernetes/pkg/master/ports"
4849
fakeiptables "k8s.io/kubernetes/pkg/util/iptables/testing"
@@ -192,12 +193,14 @@ func run(config *hollowNodeConfig) {
192193
NodeName: config.NodeName,
193194
}
194195
containerManager := cm.NewStubContainerManager()
196+
fakeRemoteRuntime := fakeremote.NewFakeRemoteRuntime()
195197

196198
hollowKubelet := kubemark.NewHollowKubelet(
197199
f, c,
198200
client,
199201
heartbeatClient,
200202
cadvisorInterface,
203+
fakeRemoteRuntime,
201204
containerManager,
202205
)
203206
hollowKubelet.Run()

pkg/kubelet/BUILD

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,6 @@ go_library(
7777
"//pkg/kubelet/prober:go_default_library",
7878
"//pkg/kubelet/prober/results:go_default_library",
7979
"//pkg/kubelet/remote:go_default_library",
80-
"//pkg/kubelet/remote/fake:go_default_library",
8180
"//pkg/kubelet/runtimeclass:go_default_library",
8281
"//pkg/kubelet/secret:go_default_library",
8382
"//pkg/kubelet/server:go_default_library",

pkg/kubelet/dockershim/docker_service.go

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -179,8 +179,6 @@ func NewDockerClientFromConfig(config *ClientConfig) libdocker.Interface {
179179
config.DockerEndpoint,
180180
config.RuntimeRequestTimeout,
181181
config.ImagePullProgressDeadline,
182-
config.WithTraceDisabled,
183-
config.EnableSleep,
184182
)
185183
return client
186184
}

pkg/kubelet/dockershim/libdocker/client.go

Lines changed: 1 addition & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -84,19 +84,7 @@ func getDockerClient(dockerEndpoint string) (*dockerapi.Client, error) {
8484
// is the timeout for docker requests. If timeout is exceeded, the request
8585
// will be cancelled and throw out an error. If requestTimeout is 0, a default
8686
// value will be applied.
87-
func ConnectToDockerOrDie(dockerEndpoint string, requestTimeout, imagePullProgressDeadline time.Duration,
88-
withTraceDisabled bool, enableSleep bool) Interface {
89-
if dockerEndpoint == FakeDockerEndpoint {
90-
fakeClient := NewFakeDockerClient()
91-
if withTraceDisabled {
92-
fakeClient = fakeClient.WithTraceDisabled()
93-
}
94-
95-
if enableSleep {
96-
fakeClient.EnableSleep = true
97-
}
98-
return fakeClient
99-
}
87+
func ConnectToDockerOrDie(dockerEndpoint string, requestTimeout, imagePullProgressDeadline time.Duration) Interface {
10088
client, err := getDockerClient(dockerEndpoint)
10189
if err != nil {
10290
klog.Fatalf("Couldn't connect to docker: %v", err)

pkg/kubelet/kubelet.go

Lines changed: 15 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,6 @@ import (
9393
"k8s.io/kubernetes/pkg/kubelet/prober"
9494
proberesults "k8s.io/kubernetes/pkg/kubelet/prober/results"
9595
"k8s.io/kubernetes/pkg/kubelet/remote"
96-
fakeremote "k8s.io/kubernetes/pkg/kubelet/remote/fake"
9796
"k8s.io/kubernetes/pkg/kubelet/runtimeclass"
9897
"k8s.io/kubernetes/pkg/kubelet/secret"
9998
"k8s.io/kubernetes/pkg/kubelet/server"
@@ -265,6 +264,8 @@ type Dependencies struct {
265264
DynamicPluginProber volume.DynamicPluginProber
266265
TLSOptions *server.TLSOptions
267266
KubeletConfigController *kubeletconfig.Controller
267+
RemoteRuntimeService internalapi.RuntimeService
268+
RemoteImageService internalapi.ImageManagerService
268269
}
269270

270271
// makePodSourceConfig creates a config.PodConfig from the given
@@ -318,23 +319,6 @@ func makePodSourceConfig(kubeCfg *kubeletconfiginternal.KubeletConfiguration, ku
318319
return cfg, nil
319320
}
320321

321-
func getRuntimeAndImageServices(remoteRuntimeEndpoint string, remoteImageEndpoint string, runtimeRequestTimeout metav1.Duration) (internalapi.RuntimeService, internalapi.ImageManagerService, error) {
322-
if remoteRuntimeEndpoint == fakeremote.FakeRemoteRuntimeEndpoint && remoteImageEndpoint == fakeremote.FakeRemoteImageEndpoint {
323-
fakeRuntime := fakeremote.NewFakeRemoteRuntime()
324-
return fakeRuntime.RuntimeService, fakeRuntime.ImageService, nil
325-
}
326-
327-
rs, err := remote.NewRemoteRuntimeService(remoteRuntimeEndpoint, runtimeRequestTimeout.Duration)
328-
if err != nil {
329-
return nil, nil, err
330-
}
331-
is, err := remote.NewRemoteImageService(remoteImageEndpoint, runtimeRequestTimeout.Duration)
332-
if err != nil {
333-
return nil, nil, err
334-
}
335-
return rs, is, err
336-
}
337-
338322
// NewMainKubelet instantiates a new Kubelet object along with all the required internal modules.
339323
// No initialization of Kubelet and its modules should happen here.
340324
func NewMainKubelet(kubeCfg *kubeletconfiginternal.KubeletConfiguration,
@@ -666,9 +650,19 @@ func NewMainKubelet(kubeCfg *kubeletconfiginternal.KubeletConfiguration,
666650
default:
667651
return nil, fmt.Errorf("unsupported CRI runtime: %q", containerRuntime)
668652
}
669-
runtimeService, imageService, err := getRuntimeAndImageServices(remoteRuntimeEndpoint, remoteImageEndpoint, kubeCfg.RuntimeRequestTimeout)
670-
if err != nil {
671-
return nil, err
653+
654+
runtimeService, imageService := kubeDeps.RemoteRuntimeService, kubeDeps.RemoteImageService
655+
if runtimeService == nil {
656+
runtimeService, err = remote.NewRemoteRuntimeService(remoteRuntimeEndpoint, kubeCfg.RuntimeRequestTimeout.Duration)
657+
if err != nil {
658+
return nil, err
659+
}
660+
}
661+
if imageService == nil {
662+
imageService, err = remote.NewRemoteImageService(remoteImageEndpoint, kubeCfg.RuntimeRequestTimeout.Duration)
663+
if err != nil {
664+
return nil, err
665+
}
672666
}
673667
klet.runtimeService = runtimeService
674668

pkg/kubelet/remote/fake/fake_runtime.go

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -28,14 +28,6 @@ import (
2828
utilexec "k8s.io/utils/exec"
2929
)
3030

31-
const (
32-
// FakeRemoteRuntimeEndpoint used by kubemark hollow-node
33-
FakeRemoteRuntimeEndpoint = "fake://runtime"
34-
35-
// FakeRemoteImageEndpoint used by kubemark hollow-node
36-
FakeRemoteImageEndpoint = "fake://image"
37-
)
38-
3931
// RemoteRuntime represents a fake remote container runtime.
4032
type RemoteRuntime struct {
4133
server *grpc.Server

pkg/kubemark/hollow_kubelet.go

Lines changed: 15 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -98,20 +98,23 @@ func NewHollowKubelet(
9898
client *clientset.Clientset,
9999
heartbeatClient *clientset.Clientset,
100100
cadvisorInterface cadvisor.Interface,
101+
remoteRuntime *fakeremote.RemoteRuntime,
101102
containerManager cm.ContainerManager) *HollowKubelet {
102103
d := &kubelet.Dependencies{
103-
KubeClient: client,
104-
HeartbeatClient: heartbeatClient,
105-
CAdvisorInterface: cadvisorInterface,
106-
Cloud: nil,
107-
OSInterface: &containertest.FakeOS{},
108-
ContainerManager: containerManager,
109-
VolumePlugins: volumePlugins(),
110-
TLSOptions: nil,
111-
OOMAdjuster: oom.NewFakeOOMAdjuster(),
112-
Mounter: &mount.FakeMounter{},
113-
Subpather: &subpath.FakeSubpath{},
114-
HostUtil: hostutil.NewFakeHostUtil(nil),
104+
KubeClient: client,
105+
HeartbeatClient: heartbeatClient,
106+
RemoteRuntimeService: remoteRuntime.RuntimeService,
107+
RemoteImageService: remoteRuntime.ImageService,
108+
CAdvisorInterface: cadvisorInterface,
109+
Cloud: nil,
110+
OSInterface: &containertest.FakeOS{},
111+
ContainerManager: containerManager,
112+
VolumePlugins: volumePlugins(),
113+
TLSOptions: nil,
114+
OOMAdjuster: oom.NewFakeOOMAdjuster(),
115+
Mounter: &mount.FakeMounter{},
116+
Subpather: &subpath.FakeSubpath{},
117+
HostUtil: hostutil.NewFakeHostUtil(nil),
115118
}
116119

117120
return &HollowKubelet{
@@ -159,8 +162,6 @@ func GetHollowKubeletConfig(opt *HollowKubletOptions) (*options.KubeletFlags, *k
159162
f.MaxPerPodContainerCount = 2
160163
f.NodeLabels = opt.NodeLabels
161164
f.ContainerRuntimeOptions.ContainerRuntime = kubetypes.RemoteContainerRuntime
162-
f.RemoteRuntimeEndpoint = fakeremote.FakeRemoteRuntimeEndpoint
163-
f.RemoteImageEndpoint = fakeremote.FakeRemoteImageEndpoint
164165
f.RegisterNode = true
165166
f.RegisterSchedulable = true
166167
f.ProviderID = fmt.Sprintf("kubemark://%v", opt.NodeName)

0 commit comments

Comments
 (0)