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
1ef7fd36
Commit
1ef7fd36
authored
Nov 21, 2016
by
yarntime@163.com
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
rescale immediately if the basic constraints are not satisfied
parent
0042ce56
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
40 additions
and
1 deletion
+40
-1
horizontal.go
pkg/controller/podautoscaler/horizontal.go
+5
-1
horizontal_test.go
pkg/controller/podautoscaler/horizontal_test.go
+35
-0
No files found.
pkg/controller/podautoscaler/horizontal.go
View file @
1ef7fd36
...
@@ -292,9 +292,12 @@ func (a *HorizontalController) reconcileAutoscaler(hpa *autoscaling.HorizontalPo
...
@@ -292,9 +292,12 @@ func (a *HorizontalController) reconcileAutoscaler(hpa *autoscaling.HorizontalPo
rescaleReason
:=
""
rescaleReason
:=
""
timestamp
:=
time
.
Now
()
timestamp
:=
time
.
Now
()
rescale
:=
true
if
scale
.
Spec
.
Replicas
==
0
{
if
scale
.
Spec
.
Replicas
==
0
{
// Autoscaling is disabled for this resource
// Autoscaling is disabled for this resource
desiredReplicas
=
0
desiredReplicas
=
0
rescale
=
false
}
else
if
currentReplicas
>
hpa
.
Spec
.
MaxReplicas
{
}
else
if
currentReplicas
>
hpa
.
Spec
.
MaxReplicas
{
rescaleReason
=
"Current number of replicas above Spec.MaxReplicas"
rescaleReason
=
"Current number of replicas above Spec.MaxReplicas"
desiredReplicas
=
hpa
.
Spec
.
MaxReplicas
desiredReplicas
=
hpa
.
Spec
.
MaxReplicas
...
@@ -360,9 +363,10 @@ func (a *HorizontalController) reconcileAutoscaler(hpa *autoscaling.HorizontalPo
...
@@ -360,9 +363,10 @@ func (a *HorizontalController) reconcileAutoscaler(hpa *autoscaling.HorizontalPo
if
desiredReplicas
>
calculateScaleUpLimit
(
currentReplicas
)
{
if
desiredReplicas
>
calculateScaleUpLimit
(
currentReplicas
)
{
desiredReplicas
=
calculateScaleUpLimit
(
currentReplicas
)
desiredReplicas
=
calculateScaleUpLimit
(
currentReplicas
)
}
}
rescale
=
shouldScale
(
hpa
,
currentReplicas
,
desiredReplicas
,
timestamp
)
}
}
rescale
:=
shouldScale
(
hpa
,
currentReplicas
,
desiredReplicas
,
timestamp
)
if
rescale
{
if
rescale
{
scale
.
Spec
.
Replicas
=
desiredReplicas
scale
.
Spec
.
Replicas
=
desiredReplicas
_
,
err
=
a
.
scaleNamespacer
.
Scales
(
hpa
.
Namespace
)
.
Update
(
hpa
.
Spec
.
ScaleTargetRef
.
Kind
,
scale
)
_
,
err
=
a
.
scaleNamespacer
.
Scales
(
hpa
.
Namespace
)
.
Update
(
hpa
.
Spec
.
ScaleTargetRef
.
Kind
,
scale
)
...
...
pkg/controller/podautoscaler/horizontal_test.go
View file @
1ef7fd36
...
@@ -96,6 +96,9 @@ type testCase struct {
...
@@ -96,6 +96,9 @@ type testCase struct {
// Target resource information.
// Target resource information.
resource
*
fakeResource
resource
*
fakeResource
// Last scale time
lastScaleTime
*
unversioned
.
Time
}
}
// Needs to be called under a lock.
// Needs to be called under a lock.
...
@@ -1043,4 +1046,36 @@ func TestComputedToleranceAlgImplementation(t *testing.T) {
...
@@ -1043,4 +1046,36 @@ func TestComputedToleranceAlgImplementation(t *testing.T) {
tc
.
runTest
(
t
)
tc
.
runTest
(
t
)
}
}
func
TestScaleUpRCImmediately
(
t
*
testing
.
T
)
{
time
:=
unversioned
.
Time
{
Time
:
time
.
Now
()}
tc
:=
testCase
{
minReplicas
:
2
,
maxReplicas
:
6
,
initialReplicas
:
1
,
desiredReplicas
:
2
,
verifyCPUCurrent
:
true
,
reportedLevels
:
[]
uint64
{
0
,
0
,
0
,
0
},
reportedCPURequests
:
[]
resource
.
Quantity
{
resource
.
MustParse
(
"1.0"
),
resource
.
MustParse
(
"1.0"
),
resource
.
MustParse
(
"1.0"
),
resource
.
MustParse
(
"1.0"
)},
useMetricsApi
:
true
,
lastScaleTime
:
&
time
,
}
tc
.
runTest
(
t
)
}
func
TestScaleDownRCImmediately
(
t
*
testing
.
T
)
{
time
:=
unversioned
.
Time
{
Time
:
time
.
Now
()}
tc
:=
testCase
{
minReplicas
:
2
,
maxReplicas
:
5
,
initialReplicas
:
6
,
desiredReplicas
:
5
,
CPUTarget
:
50
,
reportedLevels
:
[]
uint64
{
8000
,
9500
,
1000
},
reportedCPURequests
:
[]
resource
.
Quantity
{
resource
.
MustParse
(
"0.9"
),
resource
.
MustParse
(
"1.0"
),
resource
.
MustParse
(
"1.1"
)},
useMetricsApi
:
true
,
lastScaleTime
:
&
time
,
}
tc
.
runTest
(
t
)
}
// TODO: add more tests
// TODO: add more tests
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