123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778 |
- package priorities
- import (
- "fmt"
- v1 "k8s.io/api/core/v1"
- "k8s.io/apimachinery/pkg/labels"
- v1helper "k8s.io/kubernetes/pkg/apis/core/v1/helper"
- schedulerapi "k8s.io/kubernetes/pkg/scheduler/api"
- schedulernodeinfo "k8s.io/kubernetes/pkg/scheduler/nodeinfo"
- )
- func CalculateNodeAffinityPriorityMap(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")
- }
-
- affinity := pod.Spec.Affinity
- if priorityMeta, ok := meta.(*priorityMetadata); ok {
-
- affinity = priorityMeta.affinity
- }
- var count int32
-
-
-
- if affinity != nil && affinity.NodeAffinity != nil && affinity.NodeAffinity.PreferredDuringSchedulingIgnoredDuringExecution != nil {
-
- for i := range affinity.NodeAffinity.PreferredDuringSchedulingIgnoredDuringExecution {
- preferredSchedulingTerm := &affinity.NodeAffinity.PreferredDuringSchedulingIgnoredDuringExecution[i]
- if preferredSchedulingTerm.Weight == 0 {
- continue
- }
-
- nodeSelector, err := v1helper.NodeSelectorRequirementsAsSelector(preferredSchedulingTerm.Preference.MatchExpressions)
- if err != nil {
- return schedulerapi.HostPriority{}, err
- }
- if nodeSelector.Matches(labels.Set(node.Labels)) {
- count += preferredSchedulingTerm.Weight
- }
- }
- }
- return schedulerapi.HostPriority{
- Host: node.Name,
- Score: float64(count),
- }, nil
- }
- var CalculateNodeAffinityPriorityReduce = NormalizeReduce(schedulerapi.MaxPriority, false)
|