fix kube-scheduler cannot send event because the Note field is too large
This commit is contained in:
		@@ -11,6 +11,7 @@ go_library(
 | 
				
			|||||||
    visibility = ["//visibility:public"],
 | 
					    visibility = ["//visibility:public"],
 | 
				
			||||||
    deps = [
 | 
					    deps = [
 | 
				
			||||||
        "//pkg/api/v1/pod:go_default_library",
 | 
					        "//pkg/api/v1/pod:go_default_library",
 | 
				
			||||||
 | 
					        "//pkg/apis/core/validation:go_default_library",
 | 
				
			||||||
        "//pkg/scheduler/algorithmprovider:go_default_library",
 | 
					        "//pkg/scheduler/algorithmprovider:go_default_library",
 | 
				
			||||||
        "//pkg/scheduler/apis/config:go_default_library",
 | 
					        "//pkg/scheduler/apis/config:go_default_library",
 | 
				
			||||||
        "//pkg/scheduler/apis/config/scheme:go_default_library",
 | 
					        "//pkg/scheduler/apis/config/scheme:go_default_library",
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -35,6 +35,7 @@ import (
 | 
				
			|||||||
	"k8s.io/client-go/tools/cache"
 | 
						"k8s.io/client-go/tools/cache"
 | 
				
			||||||
	"k8s.io/klog/v2"
 | 
						"k8s.io/klog/v2"
 | 
				
			||||||
	podutil "k8s.io/kubernetes/pkg/api/v1/pod"
 | 
						podutil "k8s.io/kubernetes/pkg/api/v1/pod"
 | 
				
			||||||
 | 
						"k8s.io/kubernetes/pkg/apis/core/validation"
 | 
				
			||||||
	schedulerapi "k8s.io/kubernetes/pkg/scheduler/apis/config"
 | 
						schedulerapi "k8s.io/kubernetes/pkg/scheduler/apis/config"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/scheduler/apis/config/scheme"
 | 
						"k8s.io/kubernetes/pkg/scheduler/apis/config/scheme"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/scheduler/core"
 | 
						"k8s.io/kubernetes/pkg/scheduler/core"
 | 
				
			||||||
@@ -328,7 +329,8 @@ func (sched *Scheduler) recordSchedulingFailure(fwk framework.Framework, podInfo
 | 
				
			|||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	pod := podInfo.Pod
 | 
						pod := podInfo.Pod
 | 
				
			||||||
	fwk.EventRecorder().Eventf(pod, nil, v1.EventTypeWarning, "FailedScheduling", "Scheduling", err.Error())
 | 
						msg := truncateMessage(err.Error())
 | 
				
			||||||
 | 
						fwk.EventRecorder().Eventf(pod, nil, v1.EventTypeWarning, "FailedScheduling", "Scheduling", msg)
 | 
				
			||||||
	if err := updatePod(sched.client, pod, &v1.PodCondition{
 | 
						if err := updatePod(sched.client, pod, &v1.PodCondition{
 | 
				
			||||||
		Type:    v1.PodScheduled,
 | 
							Type:    v1.PodScheduled,
 | 
				
			||||||
		Status:  v1.ConditionFalse,
 | 
							Status:  v1.ConditionFalse,
 | 
				
			||||||
@@ -339,6 +341,16 @@ func (sched *Scheduler) recordSchedulingFailure(fwk framework.Framework, podInfo
 | 
				
			|||||||
	}
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// truncateMessage truncates a message if it hits the NoteLengthLimit.
 | 
				
			||||||
 | 
					func truncateMessage(message string) string {
 | 
				
			||||||
 | 
						max := validation.NoteLengthLimit
 | 
				
			||||||
 | 
						if len(message) <= max {
 | 
				
			||||||
 | 
							return message
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						suffix := " ..."
 | 
				
			||||||
 | 
						return message[:max-len(suffix)] + suffix
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func updatePod(client clientset.Interface, pod *v1.Pod, condition *v1.PodCondition, nominatedNode string) error {
 | 
					func updatePod(client clientset.Interface, pod *v1.Pod, condition *v1.PodCondition, nominatedNode string) error {
 | 
				
			||||||
	klog.V(3).InfoS("Updating pod condition", "pod", klog.KObj(pod), "conditionType", condition.Type, "conditionStatus", condition.Status, "conditionReason", condition.Reason)
 | 
						klog.V(3).InfoS("Updating pod condition", "pod", klog.KObj(pod), "conditionType", condition.Type, "conditionStatus", condition.Status, "conditionReason", condition.Reason)
 | 
				
			||||||
	podCopy := pod.DeepCopy()
 | 
						podCopy := pod.DeepCopy()
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user