1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677 |
- package priorities
- import (
- "fmt"
- v1 "k8s.io/api/core/v1"
- v1helper "k8s.io/kubernetes/pkg/apis/core/v1/helper"
- schedulerapi "k8s.io/kubernetes/pkg/scheduler/api"
- schedulernodeinfo "k8s.io/kubernetes/pkg/scheduler/nodeinfo"
- )
- func countIntolerableTaintsPreferNoSchedule(taints []v1.Taint, tolerations []v1.Toleration) (intolerableTaints int) {
- for _, taint := range taints {
-
- if taint.Effect != v1.TaintEffectPreferNoSchedule {
- continue
- }
- if !v1helper.TolerationsTolerateTaint(tolerations, &taint) {
- intolerableTaints++
- }
- }
- return
- }
- func getAllTolerationPreferNoSchedule(tolerations []v1.Toleration) (tolerationList []v1.Toleration) {
- for _, toleration := range tolerations {
-
- if len(toleration.Effect) == 0 || toleration.Effect == v1.TaintEffectPreferNoSchedule {
- tolerationList = append(tolerationList, toleration)
- }
- }
- return
- }
- func ComputeTaintTolerationPriorityMap(pod *v1.Pod, meta interface{}, nodeInfo *schedulernodeinfo.NodeInfo) (schedulerapi.HostPriority, error) {
- node := nodeInfo.Node()
- if node == nil {
- return schedulerapi.HostPriority{}, fmt.Errorf("node not found")
- }
-
- var tolerationsPreferNoSchedule []v1.Toleration
- if priorityMeta, ok := meta.(*priorityMetadata); ok {
- tolerationsPreferNoSchedule = priorityMeta.podTolerations
- } else {
- tolerationsPreferNoSchedule = getAllTolerationPreferNoSchedule(pod.Spec.Tolerations)
- }
- return schedulerapi.HostPriority{
- Host: node.Name,
- Score: float64(countIntolerableTaintsPreferNoSchedule(node.Spec.Taints, tolerationsPreferNoSchedule)),
- }, nil
- }
- var ComputeTaintTolerationPriorityReduce = NormalizeReduce(schedulerapi.MaxPriority, true)
|