Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
K
k3s
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Jacklull
k3s
Commits
de1c3053
Commit
de1c3053
authored
Oct 23, 2017
by
Harry Zhang
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Remove docker dep in kubelet startup
Update bazel
parent
09d896bf
Hide whitespace changes
Inline
Side-by-side
Showing
15 changed files
with
126 additions
and
51 deletions
+126
-51
BUILD
cmd/kubelet/app/BUILD
+0
-1
server.go
cmd/kubelet/app/server.go
+15
-11
BUILD
cmd/kubemark/BUILD
+1
-0
hollow-node.go
cmd/kubemark/hollow-node.go
+8
-3
BUILD
pkg/kubelet/BUILD
+0
-1
docker_container.go
pkg/kubelet/dockershim/docker_container.go
+1
-1
docker_service.go
pkg/kubelet/dockershim/docker_service.go
+48
-5
client.go
pkg/kubelet/dockershim/libdocker/client.go
+15
-3
BUILD
pkg/kubelet/gpu/nvidia/BUILD
+2
-0
nvidia_gpu_manager.go
pkg/kubelet/gpu/nvidia/nvidia_gpu_manager.go
+5
-2
nvidia_gpu_manager_test.go
pkg/kubelet/gpu/nvidia/nvidia_gpu_manager_test.go
+4
-2
kubelet.go
pkg/kubelet/kubelet.go
+5
-6
BUILD
pkg/kubemark/BUILD
+1
-1
hollow_kubelet.go
pkg/kubemark/hollow_kubelet.go
+14
-14
garbage_collector_test.go
test/e2e_node/garbage_collector_test.go
+7
-1
No files found.
cmd/kubelet/app/BUILD
View file @
de1c3053
...
@@ -52,7 +52,6 @@ go_library(
...
@@ -52,7 +52,6 @@ go_library(
"//pkg/kubelet/config:go_default_library",
"//pkg/kubelet/config:go_default_library",
"//pkg/kubelet/container:go_default_library",
"//pkg/kubelet/container:go_default_library",
"//pkg/kubelet/dockershim:go_default_library",
"//pkg/kubelet/dockershim:go_default_library",
"//pkg/kubelet/dockershim/libdocker:go_default_library",
"//pkg/kubelet/dockershim/remote:go_default_library",
"//pkg/kubelet/dockershim/remote:go_default_library",
"//pkg/kubelet/eviction:go_default_library",
"//pkg/kubelet/eviction:go_default_library",
"//pkg/kubelet/eviction/api:go_default_library",
"//pkg/kubelet/eviction/api:go_default_library",
...
...
cmd/kubelet/app/server.go
View file @
de1c3053
...
@@ -72,7 +72,6 @@ import (
...
@@ -72,7 +72,6 @@ import (
"k8s.io/kubernetes/pkg/kubelet/config"
"k8s.io/kubernetes/pkg/kubelet/config"
kubecontainer
"k8s.io/kubernetes/pkg/kubelet/container"
kubecontainer
"k8s.io/kubernetes/pkg/kubelet/container"
"k8s.io/kubernetes/pkg/kubelet/dockershim"
"k8s.io/kubernetes/pkg/kubelet/dockershim"
"k8s.io/kubernetes/pkg/kubelet/dockershim/libdocker"
dockerremote
"k8s.io/kubernetes/pkg/kubelet/dockershim/remote"
dockerremote
"k8s.io/kubernetes/pkg/kubelet/dockershim/remote"
"k8s.io/kubernetes/pkg/kubelet/eviction"
"k8s.io/kubernetes/pkg/kubelet/eviction"
evictionapi
"k8s.io/kubernetes/pkg/kubelet/eviction/api"
evictionapi
"k8s.io/kubernetes/pkg/kubelet/eviction/api"
...
@@ -145,12 +144,13 @@ func UnsecuredDependencies(s *options.KubeletServer) (*kubelet.Dependencies, err
...
@@ -145,12 +144,13 @@ func UnsecuredDependencies(s *options.KubeletServer) (*kubelet.Dependencies, err
writer
=
&
kubeio
.
NsenterWriter
{}
writer
=
&
kubeio
.
NsenterWriter
{}
}
}
var
dockerClient
libdocker
.
Interface
var
dockerClient
Config
*
dockershim
.
ClientConfig
if
s
.
ContainerRuntime
==
kubetypes
.
DockerContainerRuntime
{
if
s
.
ContainerRuntime
==
kubetypes
.
DockerContainerRuntime
{
dockerClient
=
libdocker
.
ConnectToDockerOrDie
(
s
.
DockerEndpoint
,
s
.
RuntimeRequestTimeout
.
Duration
,
dockerClientConfig
=
&
dockershim
.
ClientConfig
{
s
.
ImagePullProgressDeadline
.
Duration
)
DockerEndpoint
:
s
.
DockerEndpoint
,
}
else
{
RuntimeRequestTimeout
:
s
.
RuntimeRequestTimeout
.
Duration
,
dockerClient
=
nil
ImagePullProgressDeadline
:
s
.
ImagePullProgressDeadline
.
Duration
,
}
}
}
return
&
kubelet
.
Dependencies
{
return
&
kubelet
.
Dependencies
{
...
@@ -158,7 +158,7 @@ func UnsecuredDependencies(s *options.KubeletServer) (*kubelet.Dependencies, err
...
@@ -158,7 +158,7 @@ func UnsecuredDependencies(s *options.KubeletServer) (*kubelet.Dependencies, err
CAdvisorInterface
:
nil
,
// cadvisor.New launches background processes (bg http.ListenAndServe, and some bg cleaners), not set here
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
Cloud
:
nil
,
// cloud provider might start background processes
ContainerManager
:
nil
,
ContainerManager
:
nil
,
DockerClient
:
dockerClient
,
DockerClient
Config
:
dockerClientConfig
,
KubeClient
:
nil
,
KubeClient
:
nil
,
HeartbeatClient
:
nil
,
HeartbeatClient
:
nil
,
ExternalKubeClient
:
nil
,
ExternalKubeClient
:
nil
,
...
@@ -898,9 +898,13 @@ func BootstrapKubeletConfigController(defaultConfig *kubeletconfiginternal.Kubel
...
@@ -898,9 +898,13 @@ func BootstrapKubeletConfigController(defaultConfig *kubeletconfiginternal.Kubel
// TODO(random-liu): Move this to a separate binary.
// TODO(random-liu): Move this to a separate binary.
func
RunDockershim
(
f
*
options
.
KubeletFlags
,
c
*
kubeletconfiginternal
.
KubeletConfiguration
)
error
{
func
RunDockershim
(
f
*
options
.
KubeletFlags
,
c
*
kubeletconfiginternal
.
KubeletConfiguration
)
error
{
r
:=
&
f
.
ContainerRuntimeOptions
r
:=
&
f
.
ContainerRuntimeOptions
// Create docker client.
dockerClient
:=
libdocker
.
ConnectToDockerOrDie
(
r
.
DockerEndpoint
,
c
.
RuntimeRequestTimeout
.
Duration
,
// Initialize docker client configuration.
r
.
ImagePullProgressDeadline
.
Duration
)
dockerClientConfig
:=
&
dockershim
.
ClientConfig
{
DockerEndpoint
:
r
.
DockerEndpoint
,
RuntimeRequestTimeout
:
c
.
RuntimeRequestTimeout
.
Duration
,
ImagePullProgressDeadline
:
r
.
ImagePullProgressDeadline
.
Duration
,
}
// Initialize network plugin settings.
// Initialize network plugin settings.
binDir
:=
r
.
CNIBinDir
binDir
:=
r
.
CNIBinDir
...
@@ -925,7 +929,7 @@ func RunDockershim(f *options.KubeletFlags, c *kubeletconfiginternal.KubeletConf
...
@@ -925,7 +929,7 @@ func RunDockershim(f *options.KubeletFlags, c *kubeletconfiginternal.KubeletConf
SupportedPortForwardProtocols
:
streaming
.
DefaultConfig
.
SupportedPortForwardProtocols
,
SupportedPortForwardProtocols
:
streaming
.
DefaultConfig
.
SupportedPortForwardProtocols
,
}
}
ds
,
err
:=
dockershim
.
NewDockerService
(
dockerClient
,
r
.
PodSandboxImage
,
streamingConfig
,
&
pluginSettings
,
ds
,
err
:=
dockershim
.
NewDockerService
(
dockerClient
Config
,
r
.
PodSandboxImage
,
streamingConfig
,
&
pluginSettings
,
f
.
RuntimeCgroups
,
c
.
CgroupDriver
,
r
.
DockershimRootDirectory
,
r
.
DockerDisableSharedPID
)
f
.
RuntimeCgroups
,
c
.
CgroupDriver
,
r
.
DockershimRootDirectory
,
r
.
DockerDisableSharedPID
)
if
err
!=
nil
{
if
err
!=
nil
{
return
err
return
err
...
...
cmd/kubemark/BUILD
View file @
de1c3053
...
@@ -22,6 +22,7 @@ go_library(
...
@@ -22,6 +22,7 @@ go_library(
"//pkg/client/metrics/prometheus:go_default_library",
"//pkg/client/metrics/prometheus: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/kubelet/dockershim/libdocker:go_default_library",
"//pkg/kubemark:go_default_library",
"//pkg/kubemark:go_default_library",
"//pkg/util/iptables/testing:go_default_library",
"//pkg/util/iptables/testing:go_default_library",
...
...
cmd/kubemark/hollow-node.go
View file @
de1c3053
...
@@ -32,6 +32,7 @@ import (
...
@@ -32,6 +32,7 @@ import (
_
"k8s.io/kubernetes/pkg/client/metrics/prometheus"
// for client metric registration
_
"k8s.io/kubernetes/pkg/client/metrics/prometheus"
// for client metric registration
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/kubelet/dockershim/libdocker"
"k8s.io/kubernetes/pkg/kubemark"
"k8s.io/kubernetes/pkg/kubemark"
fakeiptables
"k8s.io/kubernetes/pkg/util/iptables/testing"
fakeiptables
"k8s.io/kubernetes/pkg/util/iptables/testing"
...
@@ -116,14 +117,18 @@ func main() {
...
@@ -116,14 +117,18 @@ func main() {
NodeName
:
config
.
NodeName
,
NodeName
:
config
.
NodeName
,
}
}
containerManager
:=
cm
.
NewStubContainerManager
()
containerManager
:=
cm
.
NewStubContainerManager
()
fakeDockerClient
:=
libdocker
.
NewFakeDockerClient
()
.
WithTraceDisabled
()
fakeDockerClient
.
EnableSleep
=
true
fakeDockerClientConfig
:=
&
dockershim
.
ClientConfig
{
DockerEndpoint
:
libdocker
.
FakeDockerEndpoint
,
EnableSleep
:
true
,
WithTraceDisabled
:
true
,
}
hollowKubelet
:=
kubemark
.
NewHollowKubelet
(
hollowKubelet
:=
kubemark
.
NewHollowKubelet
(
config
.
NodeName
,
config
.
NodeName
,
clientset
,
clientset
,
cadvisorInterface
,
cadvisorInterface
,
fakeDockerClient
,
fakeDockerClient
Config
,
config
.
KubeletPort
,
config
.
KubeletPort
,
config
.
KubeletReadOnlyPort
,
config
.
KubeletReadOnlyPort
,
containerManager
,
containerManager
,
...
...
pkg/kubelet/BUILD
View file @
de1c3053
...
@@ -54,7 +54,6 @@ go_library(
...
@@ -54,7 +54,6 @@ go_library(
"//pkg/kubelet/configmap:go_default_library",
"//pkg/kubelet/configmap:go_default_library",
"//pkg/kubelet/container:go_default_library",
"//pkg/kubelet/container:go_default_library",
"//pkg/kubelet/dockershim:go_default_library",
"//pkg/kubelet/dockershim:go_default_library",
"//pkg/kubelet/dockershim/libdocker:go_default_library",
"//pkg/kubelet/dockershim/remote:go_default_library",
"//pkg/kubelet/dockershim/remote:go_default_library",
"//pkg/kubelet/envvars:go_default_library",
"//pkg/kubelet/envvars:go_default_library",
"//pkg/kubelet/events:go_default_library",
"//pkg/kubelet/events:go_default_library",
...
...
pkg/kubelet/dockershim/docker_container.go
View file @
de1c3053
...
@@ -197,7 +197,7 @@ func (ds *dockerService) createContainerLogSymlink(containerID string) error {
...
@@ -197,7 +197,7 @@ func (ds *dockerService) createContainerLogSymlink(containerID string) error {
path
,
realPath
,
containerID
,
err
)
path
,
realPath
,
containerID
,
err
)
}
}
}
else
{
}
else
{
supported
,
err
:=
IsCRISupportedLogDriver
(
ds
.
client
)
supported
,
err
:=
ds
.
IsCRISupportedLogDriver
(
)
if
err
!=
nil
{
if
err
!=
nil
{
glog
.
Warningf
(
"Failed to check supported logging driver by CRI: %v"
,
err
)
glog
.
Warningf
(
"Failed to check supported logging driver by CRI: %v"
,
err
)
return
nil
return
nil
...
...
pkg/kubelet/dockershim/docker_service.go
View file @
de1c3053
...
@@ -148,9 +148,41 @@ type dockerNetworkHost struct {
...
@@ -148,9 +148,41 @@ type dockerNetworkHost struct {
var
internalLabelKeys
[]
string
=
[]
string
{
containerTypeLabelKey
,
containerLogPathLabelKey
,
sandboxIDLabelKey
}
var
internalLabelKeys
[]
string
=
[]
string
{
containerTypeLabelKey
,
containerLogPathLabelKey
,
sandboxIDLabelKey
}
// ClientConfig is parameters used to initialize docker client
type
ClientConfig
struct
{
DockerEndpoint
string
RuntimeRequestTimeout
time
.
Duration
ImagePullProgressDeadline
time
.
Duration
// Configuration for fake docker client
EnableSleep
bool
WithTraceDisabled
bool
}
// NewDockerClientFromConfig create a docker client from given configure
// return nil if nil configure is given.
func
NewDockerClientFromConfig
(
config
*
ClientConfig
)
libdocker
.
Interface
{
if
config
!=
nil
{
// Create docker client.
client
:=
libdocker
.
ConnectToDockerOrDie
(
config
.
DockerEndpoint
,
config
.
RuntimeRequestTimeout
,
config
.
ImagePullProgressDeadline
,
config
.
WithTraceDisabled
,
config
.
EnableSleep
,
)
return
client
}
return
nil
}
// NOTE: Anything passed to DockerService should be eventually handled in another way when we switch to running the shim as a different process.
// NOTE: Anything passed to DockerService should be eventually handled in another way when we switch to running the shim as a different process.
func
NewDockerService
(
c
lient
libdocker
.
Interface
,
podSandboxImage
string
,
streamingConfig
*
streaming
.
Config
,
func
NewDockerService
(
c
onfig
*
ClientConfig
,
podSandboxImage
string
,
streamingConfig
*
streaming
.
Config
,
pluginSettings
*
NetworkPluginSettings
,
cgroupsName
string
,
kubeCgroupDriver
string
,
dockershimRootDir
string
,
disableSharedPID
bool
)
(
DockerService
,
error
)
{
pluginSettings
*
NetworkPluginSettings
,
cgroupsName
string
,
kubeCgroupDriver
string
,
dockershimRootDir
string
,
disableSharedPID
bool
)
(
DockerService
,
error
)
{
client
:=
NewDockerClientFromConfig
(
config
)
c
:=
libdocker
.
NewInstrumentedInterface
(
client
)
c
:=
libdocker
.
NewInstrumentedInterface
(
client
)
checkpointHandler
,
err
:=
NewPersistentCheckpointHandler
(
dockershimRootDir
)
checkpointHandler
,
err
:=
NewPersistentCheckpointHandler
(
dockershimRootDir
)
if
err
!=
nil
{
if
err
!=
nil
{
...
@@ -237,6 +269,15 @@ type DockerService interface {
...
@@ -237,6 +269,15 @@ type DockerService interface {
Start
()
error
Start
()
error
// For serving streaming calls.
// For serving streaming calls.
http
.
Handler
http
.
Handler
// IsCRISupportedLogDriver checks whether the logging driver used by docker is
// suppoted by native CRI integration.
// TODO(resouer): remove this when deprecating unsupported log driver
IsCRISupportedLogDriver
()
(
bool
,
error
)
// NewDockerLegacyService created docker legacy service when log driver is not supported.
// TODO(resouer): remove this when deprecating unsupported log driver
NewDockerLegacyService
()
DockerLegacyService
}
}
type
dockerService
struct
{
type
dockerService
struct
{
...
@@ -479,8 +520,10 @@ type dockerLegacyService struct {
...
@@ -479,8 +520,10 @@ type dockerLegacyService struct {
client
libdocker
.
Interface
client
libdocker
.
Interface
}
}
func
NewDockerLegacyService
(
client
libdocker
.
Interface
)
DockerLegacyService
{
// NewDockerLegacyService created docker legacy service when log driver is not supported.
return
&
dockerLegacyService
{
client
:
client
}
// TODO(resouer): remove this when deprecating unsupported log driver
func
(
d
*
dockerService
)
NewDockerLegacyService
()
DockerLegacyService
{
return
&
dockerLegacyService
{
client
:
d
.
client
}
}
}
// GetContainerLogs get container logs directly from docker daemon.
// GetContainerLogs get container logs directly from docker daemon.
...
@@ -552,8 +595,8 @@ var criSupportedLogDrivers = []string{"json-file"}
...
@@ -552,8 +595,8 @@ var criSupportedLogDrivers = []string{"json-file"}
// IsCRISupportedLogDriver checks whether the logging driver used by docker is
// IsCRISupportedLogDriver checks whether the logging driver used by docker is
// suppoted by native CRI integration.
// suppoted by native CRI integration.
func
IsCRISupportedLogDriver
(
client
libdocker
.
Interface
)
(
bool
,
error
)
{
func
(
d
*
dockerService
)
IsCRISupportedLogDriver
(
)
(
bool
,
error
)
{
info
,
err
:=
client
.
Info
()
info
,
err
:=
d
.
client
.
Info
()
if
err
!=
nil
{
if
err
!=
nil
{
return
false
,
fmt
.
Errorf
(
"failed to get docker info: %v"
,
err
)
return
false
,
fmt
.
Errorf
(
"failed to get docker info: %v"
,
err
)
}
}
...
...
pkg/kubelet/dockershim/libdocker/client.go
View file @
de1c3053
...
@@ -40,6 +40,9 @@ const (
...
@@ -40,6 +40,9 @@ const (
// This is only used by GetKubeletDockerContainers(), and should be removed
// This is only used by GetKubeletDockerContainers(), and should be removed
// along with the function.
// along with the function.
containerNamePrefix
=
"k8s"
containerNamePrefix
=
"k8s"
// Fake docker endpoint
FakeDockerEndpoint
=
"fake://"
)
)
// Interface is an abstract interface for testability. It abstracts the interface of docker client.
// Interface is an abstract interface for testability. It abstracts the interface of docker client.
...
@@ -86,9 +89,18 @@ func getDockerClient(dockerEndpoint string) (*dockerapi.Client, error) {
...
@@ -86,9 +89,18 @@ 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
,
if
dockerEndpoint
==
"fake://"
{
withTraceDisabled
bool
,
enableSleep
bool
)
Interface
{
return
NewFakeDockerClient
()
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
{
...
...
pkg/kubelet/gpu/nvidia/BUILD
View file @
de1c3053
...
@@ -14,6 +14,7 @@ go_library(
...
@@ -14,6 +14,7 @@ go_library(
],
],
importpath = "k8s.io/kubernetes/pkg/kubelet/gpu/nvidia",
importpath = "k8s.io/kubernetes/pkg/kubelet/gpu/nvidia",
deps = [
deps = [
"//pkg/kubelet/dockershim:go_default_library",
"//pkg/kubelet/dockershim/libdocker:go_default_library",
"//pkg/kubelet/dockershim/libdocker:go_default_library",
"//pkg/kubelet/gpu:go_default_library",
"//pkg/kubelet/gpu:go_default_library",
"//vendor/github.com/golang/glog:go_default_library",
"//vendor/github.com/golang/glog:go_default_library",
...
@@ -42,6 +43,7 @@ go_test(
...
@@ -42,6 +43,7 @@ go_test(
importpath = "k8s.io/kubernetes/pkg/kubelet/gpu/nvidia",
importpath = "k8s.io/kubernetes/pkg/kubelet/gpu/nvidia",
library = ":go_default_library",
library = ":go_default_library",
deps = [
deps = [
"//pkg/kubelet/dockershim:go_default_library",
"//pkg/kubelet/dockershim/libdocker:go_default_library",
"//pkg/kubelet/dockershim/libdocker:go_default_library",
"//vendor/github.com/stretchr/testify/assert:go_default_library",
"//vendor/github.com/stretchr/testify/assert:go_default_library",
"//vendor/k8s.io/api/core/v1:go_default_library",
"//vendor/k8s.io/api/core/v1:go_default_library",
...
...
pkg/kubelet/gpu/nvidia/nvidia_gpu_manager.go
View file @
de1c3053
...
@@ -30,6 +30,7 @@ import (
...
@@ -30,6 +30,7 @@ import (
"k8s.io/api/core/v1"
"k8s.io/api/core/v1"
"k8s.io/apimachinery/pkg/api/resource"
"k8s.io/apimachinery/pkg/api/resource"
"k8s.io/apimachinery/pkg/util/sets"
"k8s.io/apimachinery/pkg/util/sets"
"k8s.io/kubernetes/pkg/kubelet/dockershim"
"k8s.io/kubernetes/pkg/kubelet/dockershim/libdocker"
"k8s.io/kubernetes/pkg/kubelet/dockershim/libdocker"
"k8s.io/kubernetes/pkg/kubelet/gpu"
"k8s.io/kubernetes/pkg/kubelet/gpu"
)
)
...
@@ -67,10 +68,12 @@ type nvidiaGPUManager struct {
...
@@ -67,10 +68,12 @@ type nvidiaGPUManager struct {
// NewNvidiaGPUManager returns a GPUManager that manages local Nvidia GPUs.
// NewNvidiaGPUManager returns a GPUManager that manages local Nvidia GPUs.
// TODO: Migrate to use pod level cgroups and make it generic to all runtimes.
// TODO: Migrate to use pod level cgroups and make it generic to all runtimes.
func
NewNvidiaGPUManager
(
activePodsLister
activePodsLister
,
dockerClient
libdocker
.
Interface
)
(
gpu
.
GPUManager
,
error
)
{
func
NewNvidiaGPUManager
(
activePodsLister
activePodsLister
,
config
*
dockershim
.
ClientConfig
)
(
gpu
.
GPUManager
,
error
)
{
dockerClient
:=
dockershim
.
NewDockerClientFromConfig
(
config
)
if
dockerClient
==
nil
{
if
dockerClient
==
nil
{
return
nil
,
fmt
.
Errorf
(
"invalid docker client specified"
)
return
nil
,
fmt
.
Errorf
(
"invalid docker client
configure
specified"
)
}
}
return
&
nvidiaGPUManager
{
return
&
nvidiaGPUManager
{
allGPUs
:
sets
.
NewString
(),
allGPUs
:
sets
.
NewString
(),
dockerClient
:
dockerClient
,
dockerClient
:
dockerClient
,
...
...
pkg/kubelet/gpu/nvidia/nvidia_gpu_manager_test.go
View file @
de1c3053
...
@@ -28,6 +28,7 @@ import (
...
@@ -28,6 +28,7 @@ import (
metav1
"k8s.io/apimachinery/pkg/apis/meta/v1"
metav1
"k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/util/sets"
"k8s.io/apimachinery/pkg/util/sets"
"k8s.io/apimachinery/pkg/util/uuid"
"k8s.io/apimachinery/pkg/util/uuid"
"k8s.io/kubernetes/pkg/kubelet/dockershim"
"k8s.io/kubernetes/pkg/kubelet/dockershim/libdocker"
"k8s.io/kubernetes/pkg/kubelet/dockershim/libdocker"
)
)
...
@@ -73,8 +74,9 @@ func TestNewNvidiaGPUManager(t *testing.T) {
...
@@ -73,8 +74,9 @@ func TestNewNvidiaGPUManager(t *testing.T) {
as
.
NotNil
(
err
)
as
.
NotNil
(
err
)
// Expects a GPUManager to be created with non-nil dockerClient.
// Expects a GPUManager to be created with non-nil dockerClient.
fakeDocker
:=
libdocker
.
NewFakeDockerClient
()
testGpuManager2
,
err
:=
NewNvidiaGPUManager
(
podLister
,
&
dockershim
.
ClientConfig
{
testGpuManager2
,
err
:=
NewNvidiaGPUManager
(
podLister
,
fakeDocker
)
DockerEndpoint
:
libdocker
.
FakeDockerEndpoint
,
})
as
.
NotNil
(
testGpuManager2
)
as
.
NotNil
(
testGpuManager2
)
as
.
Nil
(
err
)
as
.
Nil
(
err
)
...
...
pkg/kubelet/kubelet.go
View file @
de1c3053
...
@@ -70,7 +70,6 @@ import (
...
@@ -70,7 +70,6 @@ import (
"k8s.io/kubernetes/pkg/kubelet/configmap"
"k8s.io/kubernetes/pkg/kubelet/configmap"
kubecontainer
"k8s.io/kubernetes/pkg/kubelet/container"
kubecontainer
"k8s.io/kubernetes/pkg/kubelet/container"
"k8s.io/kubernetes/pkg/kubelet/dockershim"
"k8s.io/kubernetes/pkg/kubelet/dockershim"
"k8s.io/kubernetes/pkg/kubelet/dockershim/libdocker"
dockerremote
"k8s.io/kubernetes/pkg/kubelet/dockershim/remote"
dockerremote
"k8s.io/kubernetes/pkg/kubelet/dockershim/remote"
"k8s.io/kubernetes/pkg/kubelet/events"
"k8s.io/kubernetes/pkg/kubelet/events"
"k8s.io/kubernetes/pkg/kubelet/eviction"
"k8s.io/kubernetes/pkg/kubelet/eviction"
...
@@ -252,7 +251,7 @@ type Dependencies struct {
...
@@ -252,7 +251,7 @@ type Dependencies struct {
CAdvisorInterface
cadvisor
.
Interface
CAdvisorInterface
cadvisor
.
Interface
Cloud
cloudprovider
.
Interface
Cloud
cloudprovider
.
Interface
ContainerManager
cm
.
ContainerManager
ContainerManager
cm
.
ContainerManager
DockerClient
libdocker
.
Interface
DockerClient
Config
*
dockershim
.
ClientConfig
EventClient
v1core
.
EventsGetter
EventClient
v1core
.
EventsGetter
HeartbeatClient
v1core
.
CoreV1Interface
HeartbeatClient
v1core
.
CoreV1Interface
KubeClient
clientset
.
Interface
KubeClient
clientset
.
Interface
...
@@ -611,7 +610,7 @@ func NewMainKubelet(kubeCfg *kubeletconfiginternal.KubeletConfiguration,
...
@@ -611,7 +610,7 @@ func NewMainKubelet(kubeCfg *kubeletconfiginternal.KubeletConfiguration,
case
kubetypes
.
DockerContainerRuntime
:
case
kubetypes
.
DockerContainerRuntime
:
// Create and start the CRI shim running as a grpc server.
// Create and start the CRI shim running as a grpc server.
streamingConfig
:=
getStreamingConfig
(
kubeCfg
,
kubeDeps
)
streamingConfig
:=
getStreamingConfig
(
kubeCfg
,
kubeDeps
)
ds
,
err
:=
dockershim
.
NewDockerService
(
kubeDeps
.
DockerClient
,
crOptions
.
PodSandboxImage
,
streamingConfig
,
ds
,
err
:=
dockershim
.
NewDockerService
(
kubeDeps
.
DockerClient
Config
,
crOptions
.
PodSandboxImage
,
streamingConfig
,
&
pluginSettings
,
runtimeCgroups
,
kubeCfg
.
CgroupDriver
,
crOptions
.
DockershimRootDirectory
,
&
pluginSettings
,
runtimeCgroups
,
kubeCfg
.
CgroupDriver
,
crOptions
.
DockershimRootDirectory
,
crOptions
.
DockerDisableSharedPID
)
crOptions
.
DockerDisableSharedPID
)
if
err
!=
nil
{
if
err
!=
nil
{
...
@@ -635,12 +634,12 @@ func NewMainKubelet(kubeCfg *kubeletconfiginternal.KubeletConfiguration,
...
@@ -635,12 +634,12 @@ func NewMainKubelet(kubeCfg *kubeletconfiginternal.KubeletConfiguration,
}
}
// Create dockerLegacyService when the logging driver is not supported.
// Create dockerLegacyService when the logging driver is not supported.
supported
,
err
:=
d
ockershim
.
IsCRISupportedLogDriver
(
kubeDeps
.
DockerClient
)
supported
,
err
:=
d
s
.
IsCRISupportedLogDriver
(
)
if
err
!=
nil
{
if
err
!=
nil
{
return
nil
,
err
return
nil
,
err
}
}
if
!
supported
{
if
!
supported
{
klet
.
dockerLegacyService
=
d
ockershim
.
NewDockerLegacyService
(
kubeDeps
.
DockerClient
)
klet
.
dockerLegacyService
=
d
s
.
NewDockerLegacyService
(
)
legacyLogProvider
=
dockershim
.
NewLegacyLogProvider
(
klet
.
dockerLegacyService
)
legacyLogProvider
=
dockershim
.
NewLegacyLogProvider
(
klet
.
dockerLegacyService
)
}
}
case
kubetypes
.
RemoteContainerRuntime
:
case
kubetypes
.
RemoteContainerRuntime
:
...
@@ -889,7 +888,7 @@ func NewMainKubelet(kubeCfg *kubeletconfiginternal.KubeletConfiguration,
...
@@ -889,7 +888,7 @@ func NewMainKubelet(kubeCfg *kubeletconfiginternal.KubeletConfiguration,
klet
.
softAdmitHandlers
.
AddPodAdmitHandler
(
lifecycle
.
NewNoNewPrivsAdmitHandler
(
klet
.
containerRuntime
))
klet
.
softAdmitHandlers
.
AddPodAdmitHandler
(
lifecycle
.
NewNoNewPrivsAdmitHandler
(
klet
.
containerRuntime
))
if
utilfeature
.
DefaultFeatureGate
.
Enabled
(
features
.
Accelerators
)
{
if
utilfeature
.
DefaultFeatureGate
.
Enabled
(
features
.
Accelerators
)
{
if
containerRuntime
==
kubetypes
.
DockerContainerRuntime
{
if
containerRuntime
==
kubetypes
.
DockerContainerRuntime
{
if
klet
.
gpuManager
,
err
=
nvidia
.
NewNvidiaGPUManager
(
klet
,
kubeDeps
.
DockerClient
);
err
!=
nil
{
if
klet
.
gpuManager
,
err
=
nvidia
.
NewNvidiaGPUManager
(
klet
,
kubeDeps
.
DockerClient
Config
);
err
!=
nil
{
return
nil
,
err
return
nil
,
err
}
}
}
else
{
}
else
{
...
...
pkg/kubemark/BUILD
View file @
de1c3053
...
@@ -25,7 +25,7 @@ go_library(
...
@@ -25,7 +25,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
/libdocker
: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",
...
...
pkg/kubemark/hollow_kubelet.go
View file @
de1c3053
...
@@ -28,7 +28,7 @@ import (
...
@@ -28,7 +28,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
/libdocker
"
"k8s.io/kubernetes/pkg/kubelet/dockershim"
kubetypes
"k8s.io/kubernetes/pkg/kubelet/types"
kubetypes
"k8s.io/kubernetes/pkg/kubelet/types"
kubeio
"k8s.io/kubernetes/pkg/util/io"
kubeio
"k8s.io/kubernetes/pkg/util/io"
"k8s.io/kubernetes/pkg/util/mount"
"k8s.io/kubernetes/pkg/util/mount"
...
@@ -50,7 +50,7 @@ func NewHollowKubelet(
...
@@ -50,7 +50,7 @@ func NewHollowKubelet(
nodeName
string
,
nodeName
string
,
client
*
clientset
.
Clientset
,
client
*
clientset
.
Clientset
,
cadvisorInterface
cadvisor
.
Interface
,
cadvisorInterface
cadvisor
.
Interface
,
dockerClient
libdocker
.
Interface
,
dockerClient
Config
*
dockershim
.
ClientConfig
,
kubeletPort
,
kubeletReadOnlyPort
int
,
kubeletPort
,
kubeletReadOnlyPort
int
,
containerManager
cm
.
ContainerManager
,
containerManager
cm
.
ContainerManager
,
maxPods
int
,
podsPerCore
int
,
maxPods
int
,
podsPerCore
int
,
...
@@ -66,18 +66,18 @@ func NewHollowKubelet(
...
@@ -66,18 +66,18 @@ func NewHollowKubelet(
volumePlugins
:=
empty_dir
.
ProbeVolumePlugins
()
volumePlugins
:=
empty_dir
.
ProbeVolumePlugins
()
volumePlugins
=
append
(
volumePlugins
,
secret
.
ProbeVolumePlugins
()
...
)
volumePlugins
=
append
(
volumePlugins
,
secret
.
ProbeVolumePlugins
()
...
)
d
:=
&
kubelet
.
Dependencies
{
d
:=
&
kubelet
.
Dependencies
{
KubeClient
:
client
,
KubeClient
:
client
,
HeartbeatClient
:
client
.
CoreV1
(),
HeartbeatClient
:
client
.
CoreV1
(),
DockerClient
:
dockerClient
,
DockerClient
Config
:
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
(),
Writer
:
&
kubeio
.
StdWriter
{},
Writer
:
&
kubeio
.
StdWriter
{},
Mounter
:
mount
.
New
(
""
/* default mount path */
),
Mounter
:
mount
.
New
(
""
/* default mount path */
),
}
}
return
&
HollowKubelet
{
return
&
HollowKubelet
{
...
...
test/e2e_node/garbage_collector_test.go
View file @
de1c3053
...
@@ -249,7 +249,13 @@ func containerGCTest(f *framework.Framework, test testRun) {
...
@@ -249,7 +249,13 @@ func containerGCTest(f *framework.Framework, test testRun) {
func
dockerContainerGCTest
(
f
*
framework
.
Framework
,
test
testRun
)
{
func
dockerContainerGCTest
(
f
*
framework
.
Framework
,
test
testRun
)
{
var
runtime
libdocker
.
Interface
var
runtime
libdocker
.
Interface
BeforeEach
(
func
()
{
BeforeEach
(
func
()
{
runtime
=
libdocker
.
ConnectToDockerOrDie
(
defaultDockerEndpoint
,
defaultRuntimeRequestTimeoutDuration
,
defaultImagePullProgressDeadline
)
runtime
=
libdocker
.
ConnectToDockerOrDie
(
defaultDockerEndpoint
,
defaultRuntimeRequestTimeoutDuration
,
defaultImagePullProgressDeadline
,
false
,
false
,
)
})
})
for
_
,
pod
:=
range
test
.
testPods
{
for
_
,
pod
:=
range
test
.
testPods
{
// Initialize the getContainerNames function to use the libdocker api
// Initialize the getContainerNames function to use the libdocker api
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment