Merge pull request #89380 from alculquicondor/perf-spreading

Add perf test case for Topology Spreading
This commit is contained in:
Kubernetes Prow Robot 2020-03-28 02:43:52 -07:00 committed by GitHub
commit d73907fc25
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 92 additions and 9 deletions

View File

@ -110,9 +110,9 @@
desc: SchedulingPodAffinity
nodes:
nodeTemplatePath: config/node-default.yaml
labelNodeStrategy:
labelNodePrepareStrategy:
labelKey: "failure-domain.beta.kubernetes.io/zone"
labelValue: "zone1"
labelValues: ["zone1"]
initPods:
- podTemplatePath: config/pod-with-pod-affinity.yaml
podsToSchedule:
@ -162,7 +162,7 @@
nodeTemplatePath: config/node-default.yaml
labelNodePrepareStrategy:
labelKey: "failure-domain.beta.kubernetes.io/zone"
labelValue: "zone1"
labelValues: ["zone1"]
initPods:
- podTemplatePath: config/pod-with-node-affinity.yaml
podsToSchedule:
@ -174,6 +174,42 @@
- numNodes: 5000
numInitPods: [5000]
numPodsToSchedule: 1000
- template:
desc: TopologySpreading
nodes:
nodeTemplatePath: config/node-default.yaml
labelNodePrepareStrategy:
labelKey: "topology.kubernetes.io/zone"
labelValues: ["moon-1", "moon-2", "moon-3"]
initPods:
- podTemplatePath: config/pod-default.yaml
podsToSchedule:
podTemplatePath: config/pod-with-topology-spreading.yaml
params:
- numNodes: 500
numInitPods: [1000]
numPodsToSchedule: 1000
- numNodes: 5000
numInitPods: [5000]
numPodsToSchedule: 2000
- template:
desc: PreferredTopologySpreading
nodes:
nodeTemplatePath: config/node-default.yaml
labelNodePrepareStrategy:
labelKey: "topology.kubernetes.io/zone"
labelValues: ["moon-1", "moon-2", "moon-3"]
initPods:
- podTemplatePath: config/pod-default.yaml
podsToSchedule:
podTemplatePath: config/pod-with-preferred-topology-spreading.yaml
params:
- numNodes: 500
numInitPods: [1000]
numPodsToSchedule: 1000
- numNodes: 5000
numInitPods: [5000]
numPodsToSchedule: 2000
- template:
desc: MixedSchedulingBasePod
initPods:

View File

@ -0,0 +1,21 @@
apiVersion: v1
kind: Pod
metadata:
generateName: spreading-pod-
spec:
topologySpreadConstraints:
- maxSkew: 5
topologyKey: topology.kubernetes.io/zone
whenUnsatisfiable: ScheduleAnyway
containers:
- image: k8s.gcr.io/pause:3.2
name: pause
ports:
- containerPort: 80
resources:
limits:
cpu: 100m
memory: 500Mi
requests:
cpu: 100m
memory: 500Mi

View File

@ -0,0 +1,21 @@
apiVersion: v1
kind: Pod
metadata:
generateName: spreading-pod-
spec:
topologySpreadConstraints:
- maxSkew: 5
topologyKey: topology.kubernetes.io/zone
whenUnsatisfiable: DoNotSchedule
containers:
- image: k8s.gcr.io/pause:3.2
name: pause
ports:
- containerPort: 80
resources:
limits:
cpu: 100m
memory: 500Mi
requests:
cpu: 100m
memory: 500Mi

View File

@ -980,22 +980,27 @@ func (*TrivialNodePrepareStrategy) CleanupDependentObjects(nodeName string, clie
}
type LabelNodePrepareStrategy struct {
LabelKey string
LabelValue string
LabelKey string
LabelValues []string
roundRobinIdx int
}
var _ PrepareNodeStrategy = &LabelNodePrepareStrategy{}
func NewLabelNodePrepareStrategy(labelKey string, labelValue string) *LabelNodePrepareStrategy {
func NewLabelNodePrepareStrategy(labelKey string, labelValues ...string) *LabelNodePrepareStrategy {
return &LabelNodePrepareStrategy{
LabelKey: labelKey,
LabelValue: labelValue,
LabelKey: labelKey,
LabelValues: labelValues,
}
}
func (s *LabelNodePrepareStrategy) PreparePatch(*v1.Node) []byte {
labelString := fmt.Sprintf("{\"%v\":\"%v\"}", s.LabelKey, s.LabelValue)
labelString := fmt.Sprintf("{\"%v\":\"%v\"}", s.LabelKey, s.LabelValues[s.roundRobinIdx])
patch := fmt.Sprintf(`{"metadata":{"labels":%v}}`, labelString)
s.roundRobinIdx++
if s.roundRobinIdx == len(s.LabelValues) {
s.roundRobinIdx = 0
}
return []byte(patch)
}