mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-31 15:25:57 +00:00
Merge pull request #48451 from sakeven/fix/ForgetPod_first_after_bind_failed
Automatic merge from submit-queue forget pod first after binding failed Signed-off-by: sakeven <jc5930@sina.cn> **What this PR does / why we need it**: In the implementation of scheduler cache, `FinishBinding` marks Pod expired, and then pod would be cleaned in ttl seconds. While `ForgetPod` checks Pod whether assumed, if not, it reports an error. So if binding failed and ttl(now 30s) is too short, the error will occur when `ForgetPod`, thus we won't record `BindingRejected` event. Although it's rare, we shouldn't depend on the value of ttl. **Which issue this PR fixes** *(optional, in `fixes #<issue number>(, fixes #<issue_number>, ...)` format, will close that issue when PR gets merged)*: fixes # **Special notes for your reviewer**: **Release note**: ``` NONE ```
This commit is contained in:
commit
4f6af5faa4
@ -219,9 +219,6 @@ func (sched *Scheduler) bind(assumed *v1.Pod, b *v1.Binding) error {
|
|||||||
// If binding succeeded then PodScheduled condition will be updated in apiserver so that
|
// If binding succeeded then PodScheduled condition will be updated in apiserver so that
|
||||||
// it's atomic with setting host.
|
// it's atomic with setting host.
|
||||||
err := sched.config.Binder.Bind(b)
|
err := sched.config.Binder.Bind(b)
|
||||||
if err := sched.config.SchedulerCache.FinishBinding(assumed); err != nil {
|
|
||||||
return fmt.Errorf("scheduler cache FinishBinding failed: %v", err)
|
|
||||||
}
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
glog.V(1).Infof("Failed to bind pod: %v/%v", assumed.Namespace, assumed.Name)
|
glog.V(1).Infof("Failed to bind pod: %v/%v", assumed.Namespace, assumed.Name)
|
||||||
if err := sched.config.SchedulerCache.ForgetPod(assumed); err != nil {
|
if err := sched.config.SchedulerCache.ForgetPod(assumed); err != nil {
|
||||||
@ -236,6 +233,11 @@ func (sched *Scheduler) bind(assumed *v1.Pod, b *v1.Binding) error {
|
|||||||
})
|
})
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if err := sched.config.SchedulerCache.FinishBinding(assumed); err != nil {
|
||||||
|
return fmt.Errorf("scheduler cache FinishBinding failed: %v", err)
|
||||||
|
}
|
||||||
|
|
||||||
metrics.BindingLatency.Observe(metrics.SinceInMicroseconds(bindingStart))
|
metrics.BindingLatency.Observe(metrics.SinceInMicroseconds(bindingStart))
|
||||||
sched.config.Recorder.Eventf(assumed, v1.EventTypeNormal, "Scheduled", "Successfully assigned %v to %v", assumed.Name, b.Target.Name)
|
sched.config.Recorder.Eventf(assumed, v1.EventTypeNormal, "Scheduled", "Successfully assigned %v to %v", assumed.Name, b.Target.Name)
|
||||||
return nil
|
return nil
|
||||||
|
Loading…
Reference in New Issue
Block a user