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
7ce3245c
Commit
7ce3245c
authored
Oct 31, 2018
by
Bobby (Babak) Salamat
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Add a scheduler cache dumper
parent
c8e52339
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
134 additions
and
20 deletions
+134
-20
factory.go
pkg/scheduler/factory/factory.go
+4
-3
BUILD
pkg/scheduler/internal/cache/debugger/BUILD
+0
-0
comparer.go
pkg/scheduler/internal/cache/debugger/comparer.go
+1
-16
comparer_test.go
pkg/scheduler/internal/cache/debugger/comparer_test.go
+1
-1
debugger.go
pkg/scheduler/internal/cache/debugger/debugger.go
+50
-0
dumper.go
pkg/scheduler/internal/cache/debugger/dumper.go
+78
-0
No files found.
pkg/scheduler/factory/factory.go
View file @
7ce3245c
...
...
@@ -60,7 +60,7 @@ import (
"k8s.io/kubernetes/pkg/scheduler/core"
"k8s.io/kubernetes/pkg/scheduler/core/equivalence"
schedulerinternalcache
"k8s.io/kubernetes/pkg/scheduler/internal/cache"
cache
comparer
"k8s.io/kubernetes/pkg/scheduler/internal/cache/compar
er"
cache
debugger
"k8s.io/kubernetes/pkg/scheduler/internal/cache/debugg
er"
internalqueue
"k8s.io/kubernetes/pkg/scheduler/internal/queue"
"k8s.io/kubernetes/pkg/scheduler/util"
"k8s.io/kubernetes/pkg/scheduler/volumebinder"
...
...
@@ -398,7 +398,7 @@ func NewConfigFactory(args *ConfigFactoryArgs) Configurator {
}
// Setup cache comparer
comparer
:=
cachecompar
er
.
New
(
debugger
:=
cachedebugg
er
.
New
(
args
.
NodeInformer
.
Lister
(),
args
.
PodInformer
.
Lister
(),
c
.
schedulerCache
,
...
...
@@ -415,7 +415,8 @@ func NewConfigFactory(args *ConfigFactoryArgs) Configurator {
c
.
podQueue
.
Close
()
return
case
<-
ch
:
comparer
.
Compare
()
debugger
.
Comparer
.
Compare
()
debugger
.
Dumper
.
DumpAll
()
}
}
}()
...
...
pkg/scheduler/internal/cache/
compar
er/BUILD
→
pkg/scheduler/internal/cache/
debugg
er/BUILD
View file @
7ce3245c
File moved
pkg/scheduler/internal/cache/
compar
er/comparer.go
→
pkg/scheduler/internal/cache/
debugg
er/comparer.go
View file @
7ce3245c
...
...
@@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
limitations under the License.
*/
package
compar
er
package
debugg
er
import
(
"sort"
...
...
@@ -37,21 +37,6 @@ type CacheComparer struct {
PodQueue
internalqueue
.
SchedulingQueue
}
// New creates a CacheComparer.
func
New
(
nodeLister
corelisters
.
NodeLister
,
podLister
corelisters
.
PodLister
,
cache
schedulerinternalcache
.
Cache
,
podQueue
internalqueue
.
SchedulingQueue
,
)
*
CacheComparer
{
return
&
CacheComparer
{
NodeLister
:
nodeLister
,
PodLister
:
podLister
,
Cache
:
cache
,
PodQueue
:
podQueue
,
}
}
// Compare compares the nodes and pods of NodeLister with Cache.Snapshot.
func
(
c
*
CacheComparer
)
Compare
()
error
{
glog
.
V
(
3
)
.
Info
(
"cache comparer started"
)
...
...
pkg/scheduler/internal/cache/
compar
er/comparer_test.go
→
pkg/scheduler/internal/cache/
debugg
er/comparer_test.go
View file @
7ce3245c
...
...
@@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
limitations under the License.
*/
package
compar
er
package
debugg
er
import
(
"reflect"
...
...
pkg/scheduler/internal/cache/debugger/debugger.go
0 → 100644
View file @
7ce3245c
/*
Copyright 2018 The Kubernetes Authors.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
package
debugger
import
(
corelisters
"k8s.io/client-go/listers/core/v1"
internalcache
"k8s.io/kubernetes/pkg/scheduler/internal/cache"
internalqueue
"k8s.io/kubernetes/pkg/scheduler/internal/queue"
)
// CacheDebugger provides ways to check and write cache information for debugging.
type
CacheDebugger
struct
{
Comparer
CacheComparer
Dumper
CacheDumper
}
// New creates a CacheDebugger.
func
New
(
nodeLister
corelisters
.
NodeLister
,
podLister
corelisters
.
PodLister
,
cache
internalcache
.
Cache
,
podQueue
internalqueue
.
SchedulingQueue
,
)
*
CacheDebugger
{
return
&
CacheDebugger
{
Comparer
:
CacheComparer
{
NodeLister
:
nodeLister
,
PodLister
:
podLister
,
Cache
:
cache
,
PodQueue
:
podQueue
,
},
Dumper
:
CacheDumper
{
cache
:
cache
,
podQueue
:
podQueue
,
},
}
}
pkg/scheduler/internal/cache/debugger/dumper.go
0 → 100644
View file @
7ce3245c
/*
Copyright 2018 The Kubernetes Authors.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
package
debugger
import
(
"fmt"
"strings"
"github.com/golang/glog"
"k8s.io/api/core/v1"
"k8s.io/kubernetes/pkg/scheduler/cache"
internalcache
"k8s.io/kubernetes/pkg/scheduler/internal/cache"
"k8s.io/kubernetes/pkg/scheduler/internal/queue"
)
// CacheDumper writes some information from the scheduler cache and the scheduling queue to the
// scheduler logs for debugging purposes.
type
CacheDumper
struct
{
cache
internalcache
.
Cache
podQueue
queue
.
SchedulingQueue
}
// DumpAll writes cached nodes and scheduling queue information to the scheduler logs.
func
(
d
*
CacheDumper
)
DumpAll
()
{
d
.
DumpNodes
()
d
.
DumpSchedulingQueue
()
}
// DumpNodes writes NodeInfo to the scheduler logs.
func
(
d
*
CacheDumper
)
DumpNodes
()
{
snapshot
:=
d
.
cache
.
Snapshot
()
glog
.
Info
(
"Dump of cached NodeInfo"
)
for
_
,
info
:=
range
snapshot
.
Nodes
{
glog
.
Info
(
printNodeInfo
(
info
))
}
}
// DumpSchedulingQueue writes pods in the scheduling queue to the scheduler logs.
func
(
d
*
CacheDumper
)
DumpSchedulingQueue
()
{
waitingPods
:=
d
.
podQueue
.
WaitingPods
()
var
podData
strings
.
Builder
for
_
,
p
:=
range
waitingPods
{
podData
.
WriteString
(
printPod
(
p
))
}
glog
.
Infof
(
"Dump of scheduling queue:
\n
%s"
,
podData
.
String
())
}
// printNodeInfo writes parts of NodeInfo to a string.
func
printNodeInfo
(
n
*
cache
.
NodeInfo
)
string
{
var
nodeData
strings
.
Builder
nodeData
.
WriteString
(
fmt
.
Sprintf
(
"
\n
Node name: %+v
\n
Requested Resources: %+v
\n
Allocatable Resources:%+v
\n
Number of Pods: %v
\n
Pods:
\n
"
,
n
.
Node
()
.
Name
,
n
.
RequestedResource
(),
n
.
AllocatableResource
(),
len
(
n
.
Pods
())))
// Dumping Pod Info
for
_
,
p
:=
range
n
.
Pods
()
{
nodeData
.
WriteString
(
printPod
(
p
))
}
return
nodeData
.
String
()
}
// printPod writes parts of a Pod object to a string.
func
printPod
(
p
*
v1
.
Pod
)
string
{
return
fmt
.
Sprintf
(
"name: %v, namespace: %v, uid: %v, phase: %v, nominated node: %v
\n
"
,
p
.
Name
,
p
.
Namespace
,
p
.
UID
,
p
.
Status
.
Phase
,
p
.
Status
.
NominatedNodeName
)
}
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