mirror of https://github.com/k3s-io/k3s
Alleviate race between scheduler and kubelet
If the scheduler learns of a node change and schedules based on it before the kubelet learns of the node change, the pod will fail.pull/58/head
parent
e21974c417
commit
bee78c9ba0
|
@ -18,6 +18,7 @@ package lifecycle
|
|||
|
||||
import (
|
||||
"fmt"
|
||||
"time"
|
||||
|
||||
"k8s.io/klog"
|
||||
|
||||
|
@ -56,6 +57,19 @@ func NewPredicateAdmitHandler(getNodeAnyWayFunc getNodeAnyWayFuncType, admission
|
|||
}
|
||||
|
||||
func (w *predicateAdmitHandler) Admit(attrs *PodAdmitAttributes) PodAdmitResult {
|
||||
result := w.admit(attrs)
|
||||
for i := 0; i < 10; i++ {
|
||||
if result.Admit {
|
||||
break
|
||||
}
|
||||
time.Sleep(time.Second)
|
||||
result = w.admit(attrs)
|
||||
}
|
||||
|
||||
return result
|
||||
}
|
||||
|
||||
func (w *predicateAdmitHandler) admit(attrs *PodAdmitAttributes) PodAdmitResult {
|
||||
node, err := w.getNodeAnyWayFunc()
|
||||
if err != nil {
|
||||
klog.Errorf("Cannot get Node info: %v", err)
|
||||
|
|
Loading…
Reference in New Issue