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
20b7810a
Commit
20b7810a
authored
Dec 20, 2015
by
k8s-merge-robot
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #16667 from DirectXMan12/refactor/hpa-use-namespacers
Auto commit by PR queue bot
parents
ff228e94
15fc230a
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
15 additions
and
12 deletions
+15
-12
controllermanager.go
cmd/kube-controller-manager/app/controllermanager.go
+1
-1
horizontal.go
pkg/controller/podautoscaler/horizontal.go
+13
-10
horizontal_test.go
pkg/controller/podautoscaler/horizontal_test.go
+1
-1
No files found.
cmd/kube-controller-manager/app/controllermanager.go
View file @
20b7810a
...
...
@@ -368,7 +368,7 @@ func (s *CMServer) Run(_ []string) error {
metrics
.
DefaultHeapsterService
,
metrics
.
DefaultHeapsterPort
,
)
podautoscaler
.
NewHorizontalController
(
hpaClient
,
metricsClient
)
.
podautoscaler
.
NewHorizontalController
(
hpaClient
,
hpaClient
,
hpaClient
,
metricsClient
)
.
Run
(
s
.
HorizontalPodAutoscalerSyncPeriod
)
}
...
...
pkg/controller/podautoscaler/horizontal.go
View file @
20b7810a
...
...
@@ -38,7 +38,9 @@ const (
)
type
HorizontalController
struct
{
client
client
.
Interface
scaleNamespacer
client
.
ScaleNamespacer
hpaNamespacer
client
.
HorizontalPodAutoscalersNamespacer
metricsClient
metrics
.
MetricsClient
eventRecorder
record
.
EventRecorder
}
...
...
@@ -46,15 +48,16 @@ type HorizontalController struct {
var
downscaleForbiddenWindow
=
5
*
time
.
Minute
var
upscaleForbiddenWindow
=
3
*
time
.
Minute
func
NewHorizontalController
(
client
client
.
Interface
,
metricsClient
metrics
.
MetricsClient
)
*
HorizontalController
{
func
NewHorizontalController
(
evtNamespacer
client
.
EventNamespacer
,
scaleNamespacer
client
.
ScaleNamespacer
,
hpaNamespacer
client
.
HorizontalPodAutoscalersNamespacer
,
metricsClient
metrics
.
MetricsClient
)
*
HorizontalController
{
broadcaster
:=
record
.
NewBroadcaster
()
broadcaster
.
StartRecordingToSink
(
client
.
Events
(
""
))
broadcaster
.
StartRecordingToSink
(
evtNamespacer
.
Events
(
""
))
recorder
:=
broadcaster
.
NewRecorder
(
api
.
EventSource
{
Component
:
"horizontal-pod-autoscaler"
})
return
&
HorizontalController
{
client
:
client
,
metricsClient
:
metricsClient
,
eventRecorder
:
recorder
,
metricsClient
:
metricsClient
,
eventRecorder
:
recorder
,
scaleNamespacer
:
scaleNamespacer
,
hpaNamespacer
:
hpaNamespacer
,
}
}
...
...
@@ -93,7 +96,7 @@ func (a *HorizontalController) computeReplicasForCPUUtilization(hpa extensions.H
func
(
a
*
HorizontalController
)
reconcileAutoscaler
(
hpa
extensions
.
HorizontalPodAutoscaler
)
error
{
reference
:=
fmt
.
Sprintf
(
"%s/%s/%s"
,
hpa
.
Spec
.
ScaleRef
.
Kind
,
hpa
.
Namespace
,
hpa
.
Spec
.
ScaleRef
.
Name
)
scale
,
err
:=
a
.
client
.
Extensions
()
.
Scales
(
hpa
.
Namespace
)
.
Get
(
hpa
.
Spec
.
ScaleRef
.
Kind
,
hpa
.
Spec
.
ScaleRef
.
Name
)
scale
,
err
:=
a
.
scaleNamespacer
.
Scales
(
hpa
.
Namespace
)
.
Get
(
hpa
.
Spec
.
ScaleRef
.
Kind
,
hpa
.
Spec
.
ScaleRef
.
Name
)
if
err
!=
nil
{
a
.
eventRecorder
.
Event
(
&
hpa
,
api
.
EventTypeWarning
,
"FailedGetScale"
,
err
.
Error
())
return
fmt
.
Errorf
(
"failed to query scale subresource for %s: %v"
,
reference
,
err
)
...
...
@@ -140,7 +143,7 @@ func (a *HorizontalController) reconcileAutoscaler(hpa extensions.HorizontalPodA
if
rescale
{
scale
.
Spec
.
Replicas
=
desiredReplicas
_
,
err
=
a
.
client
.
Extensions
()
.
Scales
(
hpa
.
Namespace
)
.
Update
(
hpa
.
Spec
.
ScaleRef
.
Kind
,
scale
)
_
,
err
=
a
.
scaleNamespacer
.
Scales
(
hpa
.
Namespace
)
.
Update
(
hpa
.
Spec
.
ScaleRef
.
Kind
,
scale
)
if
err
!=
nil
{
a
.
eventRecorder
.
Eventf
(
&
hpa
,
api
.
EventTypeWarning
,
"FailedRescale"
,
"New size: %d; error: %v"
,
desiredReplicas
,
err
.
Error
())
return
fmt
.
Errorf
(
"failed to rescale %s: %v"
,
reference
,
err
)
...
...
@@ -163,7 +166,7 @@ func (a *HorizontalController) reconcileAutoscaler(hpa extensions.HorizontalPodA
hpa
.
Status
.
LastScaleTime
=
&
now
}
_
,
err
=
a
.
client
.
Extensions
()
.
HorizontalPodAutoscalers
(
hpa
.
Namespace
)
.
UpdateStatus
(
&
hpa
)
_
,
err
=
a
.
hpaNamespacer
.
HorizontalPodAutoscalers
(
hpa
.
Namespace
)
.
UpdateStatus
(
&
hpa
)
if
err
!=
nil
{
a
.
eventRecorder
.
Event
(
&
hpa
,
api
.
EventTypeWarning
,
"FailedUpdateStatus"
,
err
.
Error
())
return
fmt
.
Errorf
(
"failed to update status for %s: %v"
,
hpa
.
Name
,
err
)
...
...
@@ -173,7 +176,7 @@ func (a *HorizontalController) reconcileAutoscaler(hpa extensions.HorizontalPodA
func
(
a
*
HorizontalController
)
reconcileAutoscalers
()
error
{
ns
:=
api
.
NamespaceAll
list
,
err
:=
a
.
client
.
Extensions
()
.
HorizontalPodAutoscalers
(
ns
)
.
List
(
api
.
ListOptions
{})
list
,
err
:=
a
.
hpaNamespacer
.
HorizontalPodAutoscalers
(
ns
)
.
List
(
api
.
ListOptions
{})
if
err
!=
nil
{
return
fmt
.
Errorf
(
"error listing nodes: %v"
,
err
)
}
...
...
pkg/controller/podautoscaler/horizontal_test.go
View file @
20b7810a
...
...
@@ -206,7 +206,7 @@ func (tc *testCase) verifyResults(t *testing.T) {
func
(
tc
*
testCase
)
runTest
(
t
*
testing
.
T
)
{
testClient
:=
tc
.
prepareTestClient
(
t
)
metricsClient
:=
metrics
.
NewHeapsterMetricsClient
(
testClient
,
metrics
.
DefaultHeapsterNamespace
,
metrics
.
DefaultHeapsterScheme
,
metrics
.
DefaultHeapsterService
,
metrics
.
DefaultHeapsterPort
)
hpaController
:=
NewHorizontalController
(
testClient
,
metricsClient
)
hpaController
:=
NewHorizontalController
(
testClient
,
testClient
.
Extensions
(),
testClient
.
Extensions
(),
metricsClient
)
err
:=
hpaController
.
reconcileAutoscalers
()
assert
.
Equal
(
t
,
nil
,
err
)
if
tc
.
verifyEvents
{
...
...
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