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.k3s-v1.14.6
parent
202115d9f7
commit
36bccb5d80
|
@ -18,6 +18,7 @@ package lifecycle
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
|
"time"
|
||||||
|
|
||||||
"k8s.io/klog"
|
"k8s.io/klog"
|
||||||
|
|
||||||
|
@ -55,6 +56,19 @@ func NewPredicateAdmitHandler(getNodeAnyWayFunc getNodeAnyWayFuncType, admission
|
||||||
}
|
}
|
||||||
|
|
||||||
func (w *predicateAdmitHandler) Admit(attrs *PodAdmitAttributes) PodAdmitResult {
|
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()
|
node, err := w.getNodeAnyWayFunc()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
klog.Errorf("Cannot get Node info: %v", err)
|
klog.Errorf("Cannot get Node info: %v", err)
|
||||||
|
|
Loading…
Reference in New Issue