Merge pull request #39081 from ChenLingPeng/no-schedule-deleting-pod

Automatic merge from submit-queue

Skip schedule deleting pod

Since binding a deleting pod will always return fail, we should skip that kind of pod early
This commit is contained in:
Kubernetes Submit Queue 2017-01-25 06:06:47 -08:00 committed by GitHub
commit 6873d2a5d2
2 changed files with 19 additions and 0 deletions

View File

@ -123,6 +123,11 @@ func (s *Scheduler) Run() {
func (s *Scheduler) scheduleOne() {
pod := s.config.NextPod()
if pod.DeletionTimestamp != nil {
s.config.Recorder.Eventf(pod, v1.EventTypeWarning, "FailedScheduling", "skip schedule deleting pod: %v/%v", pod.Namespace, pod.Name)
glog.V(3).Infof("Skip schedule deleting pod: %v/%v", pod.Namespace, pod.Name)
return
}
glog.V(3).Infof("Attempting to schedule pod: %v/%v", pod.Namespace, pod.Name)
start := time.Now()

View File

@ -59,6 +59,16 @@ func podWithID(id, desiredHost string) *v1.Pod {
}
}
func deletingPod(id string) *v1.Pod {
deletionTimestamp := metav1.Now()
return &v1.Pod{
ObjectMeta: metav1.ObjectMeta{Name: id, SelfLink: testapi.Default.SelfLink("pods", id), DeletionTimestamp: &deletionTimestamp},
Spec: v1.PodSpec{
NodeName: "",
},
}
}
func podWithPort(id, desiredHost string, port int) *v1.Pod {
pod := podWithID(id, desiredHost)
pod.Spec.Containers = []v1.Container{
@ -122,6 +132,10 @@ func TestScheduler(t *testing.T) {
expectError: errB,
expectErrorPod: podWithID("foo", ""),
eventReason: "FailedScheduling",
}, {
sendPod: deletingPod("foo"),
algo: mockScheduler{"", nil},
eventReason: "FailedScheduling",
},
}