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
5d05fbad
Commit
5d05fbad
authored
Jul 06, 2016
by
ronnielai
Committed by
GitHub
Jul 06, 2016
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Revert "Declare out of disk when there is no free inodes"
parent
f78da7c2
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
44 additions
and
102 deletions
+44
-102
disk_manager.go
pkg/kubelet/disk_manager.go
+5
-10
disk_manager_test.go
pkg/kubelet/disk_manager_test.go
+37
-90
kubelet_test.go
pkg/kubelet/kubelet_test.go
+2
-2
No files found.
pkg/kubelet/disk_manager.go
View file @
5d05fbad
...
...
@@ -46,11 +46,10 @@ type DiskSpacePolicy struct {
}
type
fsInfo
struct
{
Usage
int64
Capacity
int64
Available
int64
Timestamp
time
.
Time
InodesFree
int64
Usage
int64
Capacity
int64
Available
int64
Timestamp
time
.
Time
}
type
realDiskSpaceManager
struct
{
...
...
@@ -79,7 +78,6 @@ func (dm *realDiskSpaceManager) getFsInfo(fsType string, f func() (cadvisorapi.F
fsi
.
Usage
=
int64
(
fs
.
Usage
)
fsi
.
Capacity
=
int64
(
fs
.
Capacity
)
fsi
.
Available
=
int64
(
fs
.
Available
)
fsi
.
InodesFree
=
int64
(
fs
.
InodesFree
)
dm
.
cachedInfo
[
fsType
]
=
fsi
}
return
fsi
,
nil
...
...
@@ -104,14 +102,11 @@ func (dm *realDiskSpaceManager) isSpaceAvailable(fsType string, threshold int, f
if
fsInfo
.
Available
<
0
{
return
true
,
fmt
.
Errorf
(
"wrong available space for %q: %+v"
,
fsType
,
fsInfo
)
}
if
fsInfo
.
Available
<
int64
(
threshold
)
*
mb
{
glog
.
Infof
(
"Running out of space on disk for %q: available %d MB, threshold %d MB"
,
fsType
,
fsInfo
.
Available
/
mb
,
threshold
)
return
false
,
nil
}
if
fsInfo
.
InodesFree
==
0
{
glog
.
Infof
(
"Running out of inodes for %q"
,
fsType
)
return
false
,
nil
}
return
true
,
nil
}
...
...
pkg/kubelet/disk_manager_test.go
View file @
5d05fbad
...
...
@@ -62,15 +62,13 @@ func TestSpaceAvailable(t *testing.T) {
assert
.
NoError
(
err
)
mockCadvisor
.
On
(
"ImagesFsInfo"
)
.
Return
(
cadvisorapi
.
FsInfo
{
Usage
:
400
*
mb
,
Capacity
:
1000
*
mb
,
Available
:
600
*
mb
,
InodesFree
:
5
,
Usage
:
400
*
mb
,
Capacity
:
1000
*
mb
,
Available
:
600
*
mb
,
},
nil
)
mockCadvisor
.
On
(
"RootFsInfo"
)
.
Return
(
cadvisorapi
.
FsInfo
{
Usage
:
9
*
mb
,
Capacity
:
10
*
mb
,
InodesFree
:
5
,
Usage
:
9
*
mb
,
Capacity
:
10
*
mb
,
},
nil
)
ok
,
err
:=
dm
.
IsRuntimeDiskSpaceAvailable
()
...
...
@@ -83,7 +81,7 @@ func TestSpaceAvailable(t *testing.T) {
}
// TestIsRuntimeDiskSpaceAvailableWithSpace verifies IsRuntimeDiskSpaceAvailable results when
// space
and inodes are
available.
// space
is
available.
func
TestIsRuntimeDiskSpaceAvailableWithSpace
(
t
*
testing
.
T
)
{
assert
,
policy
,
mockCadvisor
:=
setUp
(
t
)
dm
,
err
:=
newDiskSpaceManager
(
mockCadvisor
,
policy
)
...
...
@@ -91,10 +89,9 @@ func TestIsRuntimeDiskSpaceAvailableWithSpace(t *testing.T) {
// 500MB available
mockCadvisor
.
On
(
"ImagesFsInfo"
)
.
Return
(
cadvisorapi
.
FsInfo
{
Usage
:
9500
*
mb
,
Capacity
:
10000
*
mb
,
Available
:
500
*
mb
,
InodesFree
:
10
,
Usage
:
9500
*
mb
,
Capacity
:
10000
*
mb
,
Available
:
500
*
mb
,
},
nil
)
ok
,
err
:=
dm
.
IsRuntimeDiskSpaceAvailable
()
...
...
@@ -108,30 +105,9 @@ func TestIsRuntimeDiskSpaceAvailableWithoutSpace(t *testing.T) {
// 1MB available
assert
,
policy
,
mockCadvisor
:=
setUp
(
t
)
mockCadvisor
.
On
(
"ImagesFsInfo"
)
.
Return
(
cadvisorapi
.
FsInfo
{
Usage
:
999
*
mb
,
Capacity
:
1000
*
mb
,
Available
:
1
*
mb
,
InodesFree
:
10
,
},
nil
)
dm
,
err
:=
newDiskSpaceManager
(
mockCadvisor
,
policy
)
require
.
NoError
(
t
,
err
)
ok
,
err
:=
dm
.
IsRuntimeDiskSpaceAvailable
()
assert
.
NoError
(
err
)
assert
.
False
(
ok
)
}
// TestIsRuntimeDiskSpaceAvailableWithoutInode verifies IsRuntimeDiskSpaceAvailable results when
// inode is not available.
func
TestIsRuntimeDiskSpaceAvailableWithoutInode
(
t
*
testing
.
T
)
{
// 1MB available
assert
,
policy
,
mockCadvisor
:=
setUp
(
t
)
mockCadvisor
.
On
(
"ImagesFsInfo"
)
.
Return
(
cadvisorapi
.
FsInfo
{
Usage
:
999
*
mb
,
Capacity
:
1000
*
mb
,
Available
:
500
*
mb
,
InodesFree
:
0
,
Usage
:
999
*
mb
,
Capacity
:
1000
*
mb
,
Available
:
1
*
mb
,
},
nil
)
dm
,
err
:=
newDiskSpaceManager
(
mockCadvisor
,
policy
)
...
...
@@ -143,7 +119,7 @@ func TestIsRuntimeDiskSpaceAvailableWithoutInode(t *testing.T) {
}
// TestIsRootDiskSpaceAvailableWithSpace verifies IsRootDiskSpaceAvailable results when
// space
and inodes are
available.
// space
is
available.
func
TestIsRootDiskSpaceAvailableWithSpace
(
t
*
testing
.
T
)
{
assert
,
policy
,
mockCadvisor
:=
setUp
(
t
)
policy
.
RootFreeDiskMB
=
10
...
...
@@ -152,10 +128,9 @@ func TestIsRootDiskSpaceAvailableWithSpace(t *testing.T) {
// 999MB available
mockCadvisor
.
On
(
"RootFsInfo"
)
.
Return
(
cadvisorapi
.
FsInfo
{
Usage
:
1
*
mb
,
Capacity
:
1000
*
mb
,
Available
:
999
*
mb
,
InodesFree
:
10
,
Usage
:
1
*
mb
,
Capacity
:
1000
*
mb
,
Available
:
999
*
mb
,
},
nil
)
ok
,
err
:=
dm
.
IsRootDiskSpaceAvailable
()
...
...
@@ -173,31 +148,9 @@ func TestIsRootDiskSpaceAvailableWithoutSpace(t *testing.T) {
// 9MB available
mockCadvisor
.
On
(
"RootFsInfo"
)
.
Return
(
cadvisorapi
.
FsInfo
{
Usage
:
990
*
mb
,
Capacity
:
1000
*
mb
,
Available
:
9
*
mb
,
InodesFree
:
10
,
},
nil
)
ok
,
err
:=
dm
.
IsRootDiskSpaceAvailable
()
assert
.
NoError
(
err
)
assert
.
False
(
ok
)
}
// TestIsRootDiskSpaceAvailableWithoutInode verifies IsRootDiskSpaceAvailable results when
// inode is not available.
func
TestIsRootDiskSpaceAvailableWithoutInode
(
t
*
testing
.
T
)
{
assert
,
policy
,
mockCadvisor
:=
setUp
(
t
)
policy
.
RootFreeDiskMB
=
10
dm
,
err
:=
newDiskSpaceManager
(
mockCadvisor
,
policy
)
assert
.
NoError
(
err
)
// 9MB available
mockCadvisor
.
On
(
"RootFsInfo"
)
.
Return
(
cadvisorapi
.
FsInfo
{
Usage
:
990
*
mb
,
Capacity
:
1000
*
mb
,
Available
:
500
*
mb
,
InodesFree
:
0
,
Usage
:
990
*
mb
,
Capacity
:
1000
*
mb
,
Available
:
9
*
mb
,
},
nil
)
ok
,
err
:=
dm
.
IsRootDiskSpaceAvailable
()
...
...
@@ -212,16 +165,14 @@ func TestCache(t *testing.T) {
assert
.
NoError
(
err
)
mockCadvisor
.
On
(
"ImagesFsInfo"
)
.
Return
(
cadvisorapi
.
FsInfo
{
Usage
:
400
*
mb
,
Capacity
:
1000
*
mb
,
Available
:
300
*
mb
,
InodesFree
:
10
,
Usage
:
400
*
mb
,
Capacity
:
1000
*
mb
,
Available
:
300
*
mb
,
},
nil
)
.
Once
()
mockCadvisor
.
On
(
"RootFsInfo"
)
.
Return
(
cadvisorapi
.
FsInfo
{
Usage
:
500
*
mb
,
Capacity
:
1000
*
mb
,
Available
:
500
*
mb
,
InodesFree
:
5
,
Usage
:
500
*
mb
,
Capacity
:
1000
*
mb
,
Available
:
500
*
mb
,
},
nil
)
.
Once
()
// Initial calls which should be recorded in mockCadvisor
...
...
@@ -273,10 +224,9 @@ func Test_getFsInfo(t *testing.T) {
// Sunny day case
mockCadvisor
.
On
(
"RootFsInfo"
)
.
Return
(
cadvisorapi
.
FsInfo
{
Usage
:
10
*
mb
,
Capacity
:
100
*
mb
,
Available
:
90
*
mb
,
InodesFree
:
5
,
Usage
:
10
*
mb
,
Capacity
:
100
*
mb
,
Available
:
90
*
mb
,
},
nil
)
.
Once
()
dm
:=
&
realDiskSpaceManager
{
...
...
@@ -292,10 +242,9 @@ func Test_getFsInfo(t *testing.T) {
// Threshold case
mockCadvisor
=
new
(
cadvisortest
.
Mock
)
mockCadvisor
.
On
(
"RootFsInfo"
)
.
Return
(
cadvisorapi
.
FsInfo
{
Usage
:
9
*
mb
,
Capacity
:
100
*
mb
,
Available
:
9
*
mb
,
InodesFree
:
5
,
Usage
:
9
*
mb
,
Capacity
:
100
*
mb
,
Available
:
9
*
mb
,
},
nil
)
.
Once
()
dm
=
&
realDiskSpaceManager
{
...
...
@@ -309,10 +258,9 @@ func Test_getFsInfo(t *testing.T) {
// Frozen case
mockCadvisor
.
On
(
"RootFsInfo"
)
.
Return
(
cadvisorapi
.
FsInfo
{
Usage
:
9
*
mb
,
Capacity
:
10
*
mb
,
Available
:
500
*
mb
,
InodesFree
:
5
,
Usage
:
9
*
mb
,
Capacity
:
10
*
mb
,
Available
:
500
*
mb
,
},
nil
)
.
Once
()
dm
=
&
realDiskSpaceManager
{
...
...
@@ -327,10 +275,9 @@ func Test_getFsInfo(t *testing.T) {
// Capacity error case
mockCadvisor
=
new
(
cadvisortest
.
Mock
)
mockCadvisor
.
On
(
"RootFsInfo"
)
.
Return
(
cadvisorapi
.
FsInfo
{
Usage
:
9
*
mb
,
Capacity
:
0
,
Available
:
500
*
mb
,
InodesFree
:
5
,
Usage
:
9
*
mb
,
Capacity
:
0
,
Available
:
500
*
mb
,
},
nil
)
.
Once
()
dm
=
&
realDiskSpaceManager
{
...
...
pkg/kubelet/kubelet_test.go
View file @
5d05fbad
...
...
@@ -2695,8 +2695,8 @@ func TestValidateContainerLogStatus(t *testing.T) {
// sufficient disk space or it is out of disk, depending on the capacity, availability and
// threshold values.
func
updateDiskSpacePolicy
(
kubelet
*
Kubelet
,
mockCadvisor
*
cadvisortest
.
Mock
,
rootCap
,
dockerCap
,
rootAvail
,
dockerAvail
uint64
,
rootThreshold
,
dockerThreshold
int
)
error
{
dockerimagesFsInfo
:=
cadvisorapiv2
.
FsInfo
{
Capacity
:
rootCap
*
mb
,
Available
:
rootAvail
*
mb
,
InodesFree
:
5
}
rootFsInfo
:=
cadvisorapiv2
.
FsInfo
{
Capacity
:
dockerCap
*
mb
,
Available
:
dockerAvail
*
mb
,
InodesFree
:
5
}
dockerimagesFsInfo
:=
cadvisorapiv2
.
FsInfo
{
Capacity
:
rootCap
*
mb
,
Available
:
rootAvail
*
mb
}
rootFsInfo
:=
cadvisorapiv2
.
FsInfo
{
Capacity
:
dockerCap
*
mb
,
Available
:
dockerAvail
*
mb
}
mockCadvisor
.
On
(
"ImagesFsInfo"
)
.
Return
(
dockerimagesFsInfo
,
nil
)
mockCadvisor
.
On
(
"RootFsInfo"
)
.
Return
(
rootFsInfo
,
nil
)
...
...
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