Consider initContainer images in pod scheduling
Co-authored-by: xiaomudk <xiaomudk@gmail.com> Co-authored-by: kerthcet <kerthcet@gmail.com> Signed-off-by: kerthcet <kerthcet@gmail.com>
This commit is contained in:
@@ -63,7 +63,8 @@ func (pl *ImageLocality) Score(ctx context.Context, state *framework.CycleState,
|
||||
}
|
||||
totalNumNodes := len(nodeInfos)
|
||||
|
||||
score := calculatePriority(sumImageScores(nodeInfo, pod.Spec.Containers, totalNumNodes), len(pod.Spec.Containers))
|
||||
imageScores := sumImageScores(nodeInfo, pod, totalNumNodes)
|
||||
score := calculatePriority(imageScores, len(pod.Spec.InitContainers)+len(pod.Spec.Containers))
|
||||
|
||||
return score, nil
|
||||
}
|
||||
@@ -88,15 +89,20 @@ func calculatePriority(sumScores int64, numContainers int) int64 {
|
||||
sumScores = maxThreshold
|
||||
}
|
||||
|
||||
return int64(framework.MaxNodeScore) * (sumScores - minThreshold) / (maxThreshold - minThreshold)
|
||||
return framework.MaxNodeScore * (sumScores - minThreshold) / (maxThreshold - minThreshold)
|
||||
}
|
||||
|
||||
// sumImageScores returns the sum of image scores of all the containers that are already on the node.
|
||||
// Each image receives a raw score of its size, scaled by scaledImageScore. The raw scores are later used to calculate
|
||||
// the final score. Note that the init containers are not considered for it's rare for users to deploy huge init containers.
|
||||
func sumImageScores(nodeInfo *framework.NodeInfo, containers []v1.Container, totalNumNodes int) int64 {
|
||||
// the final score.
|
||||
func sumImageScores(nodeInfo *framework.NodeInfo, pod *v1.Pod, totalNumNodes int) int64 {
|
||||
var sum int64
|
||||
for _, container := range containers {
|
||||
for _, container := range pod.Spec.InitContainers {
|
||||
if state, ok := nodeInfo.ImageStates[normalizedImageName(container.Image)]; ok {
|
||||
sum += scaledImageScore(state, totalNumNodes)
|
||||
}
|
||||
}
|
||||
for _, container := range pod.Spec.Containers {
|
||||
if state, ok := nodeInfo.ImageStates[normalizedImageName(container.Image)]; ok {
|
||||
sum += scaledImageScore(state, totalNumNodes)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user