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
ba6feb27
Commit
ba6feb27
authored
Sep 14, 2016
by
Vishnu kannan
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
fix kubelet ignoring docker daemon in container feature
Signed-off-by:
Vishnu kannan
<
vishnuk@google.com
>
parent
7df2c304
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
14 additions
and
9 deletions
+14
-9
container_manager_linux.go
pkg/kubelet/cm/container_manager_linux.go
+14
-9
No files found.
pkg/kubelet/cm/container_manager_linux.go
View file @
ba6feb27
...
@@ -358,6 +358,7 @@ func (cm *containerManagerImpl) setupNode() error {
...
@@ -358,6 +358,7 @@ func (cm *containerManagerImpl) setupNode() error {
systemContainers
=
append
(
systemContainers
,
cont
)
systemContainers
=
append
(
systemContainers
,
cont
)
}
else
{
}
else
{
cm
.
periodicTasks
=
append
(
cm
.
periodicTasks
,
func
()
{
cm
.
periodicTasks
=
append
(
cm
.
periodicTasks
,
func
()
{
glog
.
V
(
10
)
.
Infof
(
"Adding docker daemon periodic tasks"
)
if
err
:=
ensureDockerInContainer
(
dockerVersion
,
qos
.
DockerOOMScoreAdj
,
nil
);
err
!=
nil
{
if
err
:=
ensureDockerInContainer
(
dockerVersion
,
qos
.
DockerOOMScoreAdj
,
nil
);
err
!=
nil
{
glog
.
Error
(
err
)
glog
.
Error
(
err
)
return
return
...
@@ -524,16 +525,18 @@ func (cm *containerManagerImpl) SystemCgroupsLimit() api.ResourceList {
...
@@ -524,16 +525,18 @@ func (cm *containerManagerImpl) SystemCgroupsLimit() api.ResourceList {
}
}
func
isProcessRunningInHost
(
pid
int
)
(
bool
,
error
)
{
func
isProcessRunningInHost
(
pid
int
)
(
bool
,
error
)
{
// Get init
mount namespace. Mount namespace is unique for all containers
.
// Get init
pid namespace
.
init
MntNs
,
err
:=
os
.
Readlink
(
"/proc/1/ns/mnt
"
)
init
PidNs
,
err
:=
os
.
Readlink
(
"/proc/1/ns/pid
"
)
if
err
!=
nil
{
if
err
!=
nil
{
return
false
,
fmt
.
Errorf
(
"failed to find
mount
namespace of init process"
)
return
false
,
fmt
.
Errorf
(
"failed to find
pid
namespace of init process"
)
}
}
processMntNs
,
err
:=
os
.
Readlink
(
fmt
.
Sprintf
(
"/proc/%d/ns/mnt"
,
pid
))
glog
.
V
(
10
)
.
Infof
(
"init pid ns is %q"
,
initPidNs
)
processPidNs
,
err
:=
os
.
Readlink
(
fmt
.
Sprintf
(
"/proc/%d/ns/pid"
,
pid
))
if
err
!=
nil
{
if
err
!=
nil
{
return
false
,
fmt
.
Errorf
(
"failed to find
mount
namespace of process %q"
,
pid
)
return
false
,
fmt
.
Errorf
(
"failed to find
pid
namespace of process %q"
,
pid
)
}
}
return
initMntNs
==
processMntNs
,
nil
glog
.
V
(
10
)
.
Infof
(
"Pid %d pid ns is %q"
,
pid
,
processPidNs
)
return
initPidNs
==
processPidNs
,
nil
}
}
func
getPidFromPidFile
(
pidFile
string
)
(
int
,
error
)
{
func
getPidFromPidFile
(
pidFile
string
)
(
int
,
error
)
{
...
@@ -575,7 +578,6 @@ func ensureDockerInContainer(dockerVersion semver.Version, oomScoreAdj int, mana
...
@@ -575,7 +578,6 @@ func ensureDockerInContainer(dockerVersion semver.Version, oomScoreAdj int, mana
if
dockerVersion
.
GTE
(
containerdVersion
)
{
if
dockerVersion
.
GTE
(
containerdVersion
)
{
dockerProcs
=
append
(
dockerProcs
,
process
{
containerdProcessName
,
containerdPidFile
})
dockerProcs
=
append
(
dockerProcs
,
process
{
containerdProcessName
,
containerdPidFile
})
}
}
var
errs
[]
error
var
errs
[]
error
for
_
,
proc
:=
range
dockerProcs
{
for
_
,
proc
:=
range
dockerProcs
{
pids
,
err
:=
getPidsForProcess
(
proc
.
name
,
proc
.
file
)
pids
,
err
:=
getPidsForProcess
(
proc
.
name
,
proc
.
file
)
...
@@ -600,25 +602,28 @@ func ensureProcessInContainerWithOOMScore(pid int, oomScoreAdj int, manager *fs.
...
@@ -600,25 +602,28 @@ func ensureProcessInContainerWithOOMScore(pid int, oomScoreAdj int, manager *fs.
return
err
return
err
}
else
if
!
runningInHost
{
}
else
if
!
runningInHost
{
// Process is running inside a container. Don't touch that.
// Process is running inside a container. Don't touch that.
glog
.
V
(
2
)
.
Infof
(
"pid %d is running in the host namespaces"
,
pid
)
glog
.
V
(
2
)
.
Infof
(
"pid %d is
not
running in the host namespaces"
,
pid
)
return
nil
return
nil
}
}
var
errs
[]
error
var
errs
[]
error
if
manager
!=
nil
{
cont
,
err
:=
getContainer
(
pid
)
cont
,
err
:=
getContainer
(
pid
)
if
err
!=
nil
{
if
err
!=
nil
{
errs
=
append
(
errs
,
fmt
.
Errorf
(
"failed to find container of PID %d: %v"
,
pid
,
err
))
errs
=
append
(
errs
,
fmt
.
Errorf
(
"failed to find container of PID %d: %v"
,
pid
,
err
))
}
}
if
manager
!=
nil
&&
cont
!=
manager
.
Cgroups
.
Name
{
if
cont
!=
manager
.
Cgroups
.
Name
{
err
=
manager
.
Apply
(
pid
)
err
=
manager
.
Apply
(
pid
)
if
err
!=
nil
{
if
err
!=
nil
{
errs
=
append
(
errs
,
fmt
.
Errorf
(
"failed to move PID %d (in %q) to %q: %v"
,
pid
,
cont
,
manager
.
Cgroups
.
Name
,
err
))
errs
=
append
(
errs
,
fmt
.
Errorf
(
"failed to move PID %d (in %q) to %q: %v"
,
pid
,
cont
,
manager
.
Cgroups
.
Name
,
err
))
}
}
}
}
}
// Also apply oom-score-adj to processes
// Also apply oom-score-adj to processes
oomAdjuster
:=
oom
.
NewOOMAdjuster
()
oomAdjuster
:=
oom
.
NewOOMAdjuster
()
glog
.
V
(
5
)
.
Infof
(
"attempting to apply oom_score_adj of %d to pid %d"
,
oomScoreAdj
,
pid
)
if
err
:=
oomAdjuster
.
ApplyOOMScoreAdj
(
pid
,
oomScoreAdj
);
err
!=
nil
{
if
err
:=
oomAdjuster
.
ApplyOOMScoreAdj
(
pid
,
oomScoreAdj
);
err
!=
nil
{
glog
.
V
(
3
)
.
Infof
(
"Failed to apply oom_score_adj %d for pid %d: %v"
,
oomScoreAdj
,
pid
,
err
)
glog
.
V
(
3
)
.
Infof
(
"Failed to apply oom_score_adj %d for pid %d: %v"
,
oomScoreAdj
,
pid
,
err
)
errs
=
append
(
errs
,
fmt
.
Errorf
(
"failed to apply oom score %d to PID %d: %v"
,
oomScoreAdj
,
pid
,
err
))
errs
=
append
(
errs
,
fmt
.
Errorf
(
"failed to apply oom score %d to PID %d: %v"
,
oomScoreAdj
,
pid
,
err
))
...
...
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