hollow-node use remote CRI

This commit is contained in:
louisgong 2019-12-04 12:58:34 +08:00
parent f6337c7624
commit b469404d97
7 changed files with 32 additions and 27 deletions

View File

@ -19,8 +19,6 @@ 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/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",

View File

@ -43,8 +43,6 @@ 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"
"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"
@ -195,18 +193,11 @@ func run(config *hollowNodeConfig) {
} }
containerManager := cm.NewStubContainerManager() containerManager := cm.NewStubContainerManager()
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,
fakeDockerClientConfig,
containerManager, containerManager,
) )
hollowKubelet.Run() hollowKubelet.Run()

View File

@ -77,6 +77,7 @@ go_library(
"//pkg/kubelet/prober:go_default_library", "//pkg/kubelet/prober:go_default_library",
"//pkg/kubelet/prober/results:go_default_library", "//pkg/kubelet/prober/results:go_default_library",
"//pkg/kubelet/remote:go_default_library", "//pkg/kubelet/remote:go_default_library",
"//pkg/kubelet/remote/fake:go_default_library",
"//pkg/kubelet/runtimeclass:go_default_library", "//pkg/kubelet/runtimeclass:go_default_library",
"//pkg/kubelet/secret:go_default_library", "//pkg/kubelet/secret:go_default_library",
"//pkg/kubelet/server:go_default_library", "//pkg/kubelet/server:go_default_library",

View File

@ -93,6 +93,7 @@ import (
"k8s.io/kubernetes/pkg/kubelet/prober" "k8s.io/kubernetes/pkg/kubelet/prober"
proberesults "k8s.io/kubernetes/pkg/kubelet/prober/results" proberesults "k8s.io/kubernetes/pkg/kubelet/prober/results"
"k8s.io/kubernetes/pkg/kubelet/remote" "k8s.io/kubernetes/pkg/kubelet/remote"
fakeremote "k8s.io/kubernetes/pkg/kubelet/remote/fake"
"k8s.io/kubernetes/pkg/kubelet/runtimeclass" "k8s.io/kubernetes/pkg/kubelet/runtimeclass"
"k8s.io/kubernetes/pkg/kubelet/secret" "k8s.io/kubernetes/pkg/kubelet/secret"
"k8s.io/kubernetes/pkg/kubelet/server" "k8s.io/kubernetes/pkg/kubelet/server"
@ -318,6 +319,11 @@ func makePodSourceConfig(kubeCfg *kubeletconfiginternal.KubeletConfiguration, ku
} }
func getRuntimeAndImageServices(remoteRuntimeEndpoint string, remoteImageEndpoint string, runtimeRequestTimeout metav1.Duration) (internalapi.RuntimeService, internalapi.ImageManagerService, error) { func getRuntimeAndImageServices(remoteRuntimeEndpoint string, remoteImageEndpoint string, runtimeRequestTimeout metav1.Duration) (internalapi.RuntimeService, internalapi.ImageManagerService, error) {
if remoteRuntimeEndpoint == fakeremote.FakeRemoteRuntimeEndpoint && remoteImageEndpoint == fakeremote.FakeRemoteImageEndpoint {
fakeRuntime := fakeremote.NewFakeRemoteRuntime()
return fakeRuntime.RuntimeService, fakeRuntime.ImageService, nil
}
rs, err := remote.NewRemoteRuntimeService(remoteRuntimeEndpoint, runtimeRequestTimeout.Duration) rs, err := remote.NewRemoteRuntimeService(remoteRuntimeEndpoint, runtimeRequestTimeout.Duration)
if err != nil { if err != nil {
return nil, nil, err return nil, nil, err

View File

@ -28,6 +28,14 @@ import (
utilexec "k8s.io/utils/exec" utilexec "k8s.io/utils/exec"
) )
const (
// FakeRemoteRuntimeEndpoint used by kubemark hollow-node
FakeRemoteRuntimeEndpoint = "fake://runtime"
// FakeRemoteImageEndpoint used by kubemark hollow-node
FakeRemoteImageEndpoint = "fake://image"
)
// RemoteRuntime represents a fake remote container runtime. // RemoteRuntime represents a fake remote container runtime.
type RemoteRuntime struct { type RemoteRuntime struct {
server *grpc.Server server *grpc.Server

View File

@ -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/dockershim:go_default_library", "//pkg/kubelet/remote/fake: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",

View File

@ -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"
"k8s.io/kubernetes/pkg/kubelet/dockershim" fakeremote "k8s.io/kubernetes/pkg/kubelet/remote/fake"
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,22 +98,20 @@ func NewHollowKubelet(
client *clientset.Clientset, client *clientset.Clientset,
heartbeatClient *clientset.Clientset, heartbeatClient *clientset.Clientset,
cadvisorInterface cadvisor.Interface, cadvisorInterface cadvisor.Interface,
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,
DockerClientConfig: dockerClientConfig, CAdvisorInterface: cadvisorInterface,
CAdvisorInterface: cadvisorInterface, Cloud: nil,
Cloud: nil, OSInterface: &containertest.FakeOS{},
OSInterface: &containertest.FakeOS{}, ContainerManager: containerManager,
ContainerManager: containerManager, VolumePlugins: volumePlugins(),
VolumePlugins: volumePlugins(), TLSOptions: nil,
TLSOptions: nil, OOMAdjuster: oom.NewFakeOOMAdjuster(),
OOMAdjuster: oom.NewFakeOOMAdjuster(), Mounter: &mount.FakeMounter{},
Mounter: &mount.FakeMounter{}, Subpather: &subpath.FakeSubpath{},
Subpather: &subpath.FakeSubpath{}, HostUtil: hostutil.NewFakeHostUtil(nil),
HostUtil: hostutil.NewFakeHostUtil(nil),
} }
return &HollowKubelet{ return &HollowKubelet{
@ -160,6 +158,9 @@ 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.RemoteRuntimeEndpoint = fakeremote.FakeRemoteRuntimeEndpoint
f.RemoteImageEndpoint = fakeremote.FakeRemoteImageEndpoint
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)