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
5d3522dc
Commit
5d3522dc
authored
Aug 12, 2015
by
jiangyaoguo
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Keep event reason consistant in scheduler and controller
parent
a6148e79
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
23 additions
and
22 deletions
+23
-22
plugin.go
contrib/mesos/pkg/scheduler/plugin.go
+3
-3
event.go
pkg/client/record/event.go
+4
-3
controller_utils.go
pkg/controller/controller_utils.go
+2
-2
nodecontroller.go
pkg/controller/node/nodecontroller.go
+6
-6
scheduler.go
plugin/pkg/scheduler/scheduler.go
+3
-3
scheduler_test.go
plugin/pkg/scheduler/scheduler_test.go
+5
-5
No files found.
contrib/mesos/pkg/scheduler/plugin.go
View file @
5d3522dc
...
...
@@ -758,7 +758,7 @@ func (s *schedulingPlugin) scheduleOne() {
dest
,
err
:=
s
.
config
.
Algorithm
.
Schedule
(
pod
,
s
.
config
.
MinionLister
)
// call kubeScheduler.Schedule
if
err
!=
nil
{
log
.
V
(
1
)
.
Infof
(
"Failed to schedule: %v"
,
pod
)
s
.
config
.
Recorder
.
Eventf
(
pod
,
"
f
ailedScheduling"
,
"Error scheduling: %v"
,
err
)
s
.
config
.
Recorder
.
Eventf
(
pod
,
"
F
ailedScheduling"
,
"Error scheduling: %v"
,
err
)
s
.
config
.
Error
(
pod
,
err
)
return
}
...
...
@@ -771,11 +771,11 @@ func (s *schedulingPlugin) scheduleOne() {
}
if
err
:=
s
.
config
.
Binder
.
Bind
(
b
);
err
!=
nil
{
log
.
V
(
1
)
.
Infof
(
"Failed to bind pod: %v"
,
err
)
s
.
config
.
Recorder
.
Eventf
(
pod
,
"
f
ailedScheduling"
,
"Binding rejected: %v"
,
err
)
s
.
config
.
Recorder
.
Eventf
(
pod
,
"
F
ailedScheduling"
,
"Binding rejected: %v"
,
err
)
s
.
config
.
Error
(
pod
,
err
)
return
}
s
.
config
.
Recorder
.
Eventf
(
pod
,
"
s
cheduled"
,
"Successfully assigned %v to %v"
,
pod
.
Name
,
dest
)
s
.
config
.
Recorder
.
Eventf
(
pod
,
"
S
cheduled"
,
"Successfully assigned %v to %v"
,
pod
.
Name
,
dest
)
}
// this pod may be out of sync with respect to the API server registry:
...
...
pkg/client/record/event.go
View file @
5d3522dc
...
...
@@ -51,9 +51,10 @@ type EventRecorder interface {
// Event constructs an event from the given information and puts it in the queue for sending.
// 'object' is the object this event is about. Event will make a reference-- or you may also
// pass a reference to the object directly.
// 'reason' is the reason this event is generated. 'reason' should be short and unique; it will
// be used to automate handling of events, so imagine people writing switch statements to
// handle them. You want to make that easy.
// 'reason' is the reason this event is generated. 'reason' should be short and unique; it
// should be in UpperCamelCase format (starting with a capital letter). "reason" will be used
// to automate handling of events, so imagine people writing switch statements to handle them.
// You want to make that easy.
// 'message' is intended to be human readable.
//
// The resulting event will be created in the same namespace as the reference object.
...
...
pkg/controller/controller_utils.go
View file @
5d3522dc
...
...
@@ -281,11 +281,11 @@ func (r RealPodControl) CreateReplica(namespace string, controller *api.Replicat
return
fmt
.
Errorf
(
"unable to create pod replica, no labels"
)
}
if
newPod
,
err
:=
r
.
KubeClient
.
Pods
(
namespace
)
.
Create
(
pod
);
err
!=
nil
{
r
.
Recorder
.
Eventf
(
controller
,
"
f
ailedCreate"
,
"Error creating: %v"
,
err
)
r
.
Recorder
.
Eventf
(
controller
,
"
F
ailedCreate"
,
"Error creating: %v"
,
err
)
return
fmt
.
Errorf
(
"unable to create pod replica: %v"
,
err
)
}
else
{
glog
.
V
(
4
)
.
Infof
(
"Controller %v created pod %v"
,
controller
.
Name
,
newPod
.
Name
)
r
.
Recorder
.
Eventf
(
controller
,
"
s
uccessfulCreate"
,
"Created pod: %v"
,
newPod
.
Name
)
r
.
Recorder
.
Eventf
(
controller
,
"
S
uccessfulCreate"
,
"Created pod: %v"
,
newPod
.
Name
)
}
return
nil
}
...
...
pkg/controller/node/nodecontroller.go
View file @
5d3522dc
...
...
@@ -163,7 +163,7 @@ func (nc *NodeController) deletePods(nodeID string) error {
if
err
!=
nil
{
return
err
}
nc
.
recordNodeEvent
(
nodeID
,
fmt
.
Sprintf
(
"Deleting all Pods from Node %v."
,
nodeID
))
nc
.
recordNodeEvent
(
nodeID
,
"DeletingAllPods"
,
fmt
.
Sprintf
(
"Deleting all Pods from Node %v."
,
nodeID
))
for
_
,
pod
:=
range
pods
.
Items
{
// Defensive check, also needed for tests.
if
pod
.
Spec
.
NodeName
!=
nodeID
{
...
...
@@ -214,7 +214,7 @@ func (nc *NodeController) monitorNodeStatus() error {
for
_
,
node
:=
range
nodes
.
Items
{
if
!
nc
.
knownNodeSet
.
Has
(
node
.
Name
)
{
glog
.
V
(
1
)
.
Infof
(
"NodeController observed a new Node: %#v"
,
node
)
nc
.
recordNodeEvent
(
node
.
Name
,
fmt
.
Sprintf
(
"Registered Node %v in NodeController"
,
node
.
Name
))
nc
.
recordNodeEvent
(
node
.
Name
,
"RegisteredNode"
,
fmt
.
Sprintf
(
"Registered Node %v in NodeController"
,
node
.
Name
))
nc
.
knownNodeSet
.
Insert
(
node
.
Name
)
}
}
...
...
@@ -228,7 +228,7 @@ func (nc *NodeController) monitorNodeStatus() error {
deleted
:=
nc
.
knownNodeSet
.
Difference
(
observedSet
)
for
node
:=
range
deleted
{
glog
.
V
(
1
)
.
Infof
(
"NodeController observed a Node deletion: %v"
,
node
)
nc
.
recordNodeEvent
(
node
,
fmt
.
Sprintf
(
"Removing Node %v from NodeController"
,
node
))
nc
.
recordNodeEvent
(
node
,
"RemovingNode"
,
fmt
.
Sprintf
(
"Removing Node %v from NodeController"
,
node
))
nc
.
deleteNode
(
node
)
nc
.
knownNodeSet
.
Delete
(
node
)
}
...
...
@@ -302,7 +302,7 @@ func (nc *NodeController) monitorNodeStatus() error {
}
if
_
,
err
:=
instances
.
ExternalID
(
node
.
Name
);
err
!=
nil
&&
err
==
cloudprovider
.
InstanceNotFound
{
glog
.
Infof
(
"Deleting node (no longer present in cloud provider): %s"
,
node
.
Name
)
nc
.
recordNodeEvent
(
node
.
Name
,
fmt
.
Sprintf
(
"Deleting Node %v because it's not present according to cloud provider"
,
node
.
Name
))
nc
.
recordNodeEvent
(
node
.
Name
,
"DeleteingNode"
,
fmt
.
Sprintf
(
"Deleting Node %v because it's not present according to cloud provider"
,
node
.
Name
))
if
err
:=
nc
.
deletePods
(
node
.
Name
);
err
!=
nil
{
glog
.
Errorf
(
"Unable to delete pods from node %s: %v"
,
node
.
Name
,
err
)
continue
...
...
@@ -347,7 +347,7 @@ func (nc *NodeController) reconcileNodeCIDRs(nodes *api.NodeList) {
}
}
func
(
nc
*
NodeController
)
recordNodeEvent
(
nodeName
string
,
event
string
)
{
func
(
nc
*
NodeController
)
recordNodeEvent
(
nodeName
string
,
reason
string
,
event
string
)
{
ref
:=
&
api
.
ObjectReference
{
Kind
:
"Node"
,
Name
:
nodeName
,
...
...
@@ -355,7 +355,7 @@ func (nc *NodeController) recordNodeEvent(nodeName string, event string) {
Namespace
:
""
,
}
glog
.
V
(
2
)
.
Infof
(
"Recording %s event message for node %s"
,
event
,
nodeName
)
nc
.
recorder
.
Eventf
(
ref
,
event
,
"Node %s event: %s"
,
nodeName
,
event
)
nc
.
recorder
.
Eventf
(
ref
,
reason
,
"Node %s event: %s"
,
nodeName
,
event
)
}
func
(
nc
*
NodeController
)
recordNodeStatusChange
(
node
*
api
.
Node
,
new_status
string
)
{
...
...
plugin/pkg/scheduler/scheduler.go
View file @
5d3522dc
...
...
@@ -125,7 +125,7 @@ func (s *Scheduler) scheduleOne() {
metrics
.
SchedulingAlgorithmLatency
.
Observe
(
metrics
.
SinceInMicroseconds
(
start
))
if
err
!=
nil
{
glog
.
V
(
1
)
.
Infof
(
"Failed to schedule: %v"
,
pod
)
s
.
config
.
Recorder
.
Eventf
(
pod
,
"
f
ailedScheduling"
,
"%v"
,
err
)
s
.
config
.
Recorder
.
Eventf
(
pod
,
"
F
ailedScheduling"
,
"%v"
,
err
)
s
.
config
.
Error
(
pod
,
err
)
return
}
...
...
@@ -145,11 +145,11 @@ func (s *Scheduler) scheduleOne() {
metrics
.
BindingLatency
.
Observe
(
metrics
.
SinceInMicroseconds
(
bindingStart
))
if
err
!=
nil
{
glog
.
V
(
1
)
.
Infof
(
"Failed to bind pod: %v"
,
err
)
s
.
config
.
Recorder
.
Eventf
(
pod
,
"
f
ailedScheduling"
,
"Binding rejected: %v"
,
err
)
s
.
config
.
Recorder
.
Eventf
(
pod
,
"
F
ailedScheduling"
,
"Binding rejected: %v"
,
err
)
s
.
config
.
Error
(
pod
,
err
)
return
}
s
.
config
.
Recorder
.
Eventf
(
pod
,
"
s
cheduled"
,
"Successfully assigned %v to %v"
,
pod
.
Name
,
dest
)
s
.
config
.
Recorder
.
Eventf
(
pod
,
"
S
cheduled"
,
"Successfully assigned %v to %v"
,
pod
.
Name
,
dest
)
// tell the model to assume that this binding took effect.
assumed
:=
*
pod
assumed
.
Spec
.
NodeName
=
dest
...
...
plugin/pkg/scheduler/scheduler_test.go
View file @
5d3522dc
...
...
@@ -85,13 +85,13 @@ func TestScheduler(t *testing.T) {
algo
:
mockScheduler
{
"machine1"
,
nil
},
expectBind
:
&
api
.
Binding
{
ObjectMeta
:
api
.
ObjectMeta
{
Name
:
"foo"
},
Target
:
api
.
ObjectReference
{
Kind
:
"Node"
,
Name
:
"machine1"
}},
expectAssumedPod
:
podWithID
(
"foo"
,
"machine1"
),
eventReason
:
"
s
cheduled"
,
eventReason
:
"
S
cheduled"
,
},
{
sendPod
:
podWithID
(
"foo"
,
""
),
algo
:
mockScheduler
{
"machine1"
,
errS
},
expectError
:
errS
,
expectErrorPod
:
podWithID
(
"foo"
,
""
),
eventReason
:
"
f
ailedScheduling"
,
eventReason
:
"
F
ailedScheduling"
,
},
{
sendPod
:
podWithID
(
"foo"
,
""
),
algo
:
mockScheduler
{
"machine1"
,
nil
},
...
...
@@ -99,7 +99,7 @@ func TestScheduler(t *testing.T) {
injectBindError
:
errB
,
expectError
:
errB
,
expectErrorPod
:
podWithID
(
"foo"
,
""
),
eventReason
:
"
f
ailedScheduling"
,
eventReason
:
"
F
ailedScheduling"
,
},
}
...
...
@@ -218,7 +218,7 @@ func TestSchedulerForgetAssumedPodAfterDelete(t *testing.T) {
s
:=
New
(
c
)
called
:=
make
(
chan
struct
{})
events
:=
eventBroadcaster
.
StartEventWatcher
(
func
(
e
*
api
.
Event
)
{
if
e
,
a
:=
"
s
cheduled"
,
e
.
Reason
;
e
!=
a
{
if
e
,
a
:=
"
S
cheduled"
,
e
.
Reason
;
e
!=
a
{
t
.
Errorf
(
"expected %v, got %v"
,
e
,
a
)
}
close
(
called
)
...
...
@@ -277,7 +277,7 @@ func TestSchedulerForgetAssumedPodAfterDelete(t *testing.T) {
called
=
make
(
chan
struct
{})
events
=
eventBroadcaster
.
StartEventWatcher
(
func
(
e
*
api
.
Event
)
{
if
e
,
a
:=
"
s
cheduled"
,
e
.
Reason
;
e
!=
a
{
if
e
,
a
:=
"
S
cheduled"
,
e
.
Reason
;
e
!=
a
{
t
.
Errorf
(
"expected %v, got %v"
,
e
,
a
)
}
close
(
called
)
...
...
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