// 1. Run a pod to get an available node, then delete the pod // 2. Taint the node with a random taint // 3. Try to relaunch the pod with tolerations tolerate the taints on node, // and the pod's nodeName specified to the name of node found in step 1 It("validates that taints-tolerations is respected if matching", func() { nodeName := getNodeThatCanRunPodWithoutToleration(f) By("Trying to apply a random taint on the found node.") testTaint := api.Taint{ Key: fmt.Sprintf("kubernetes.io/e2e-taint-key-%s", string(uuid.NewUUID())), Value: "testing-taint-value", Effect: api.TaintEffectNoSchedule, } framework.AddOrUpdateTaintOnNode(c, nodeName, testTaint) framework.ExpectNodeHasTaint(c, nodeName, testTaint) defer framework.RemoveTaintOffNode(c, nodeName, testTaint) By("Trying to apply a random label on the found node.") labelKey := fmt.Sprintf("kubernetes.io/e2e-label-key-%s", string(uuid.NewUUID())) labelValue := "testing-label-value" framework.AddOrUpdateLabelOnNode(cs, nodeName, labelKey, labelValue) framework.ExpectNodeHasLabel(cs, nodeName, labelKey, labelValue) defer framework.RemoveLabelOffNode(cs, nodeName, labelKey) By("Trying to relaunch the pod, now with tolerations.") tolerationPodName := "with-tolerations" pod := createPausePod(f, pausePodConfig{ Name: tolerationPodName, Annotations: map[string]string{ "scheduler.alpha.kubernetes.io/tolerations": `
framework.ExpectNoError(framework.WaitForPodRunningInNamespace(c, pod)) pod, err = c.Pods(ns).Get(podName) framework.ExpectNoError(err) nodeName := pod.Spec.NodeName By("Explicitly delete pod here to free the resource it takes.") err = c.Pods(ns).Delete(podName, api.NewDeleteOptions(0)) framework.ExpectNoError(err) By("Trying to apply a random taint on the found node.") taintName := fmt.Sprintf("kubernetes.io/e2e-taint-key-%s", string(uuid.NewUUID())) taintValue := "testing-taint-value" taintEffect := api.TaintEffectNoSchedule framework.AddOrUpdateTaintOnNode(c, nodeName, api.Taint{Key: taintName, Value: taintValue, Effect: taintEffect}) framework.ExpectNodeHasTaint(c, nodeName, taintName) defer framework.RemoveTaintOffNode(c, nodeName, taintName) By("Trying to apply a random label on the found node.") labelKey := fmt.Sprintf("kubernetes.io/e2e-label-key-%s", string(uuid.NewUUID())) labelValue := "testing-label-value" framework.AddOrUpdateLabelOnNode(c, nodeName, labelKey, labelValue) framework.ExpectNodeHasLabel(c, nodeName, labelKey, labelValue) defer framework.RemoveLabelOffNode(c, nodeName, labelKey) By("Trying to relaunch the pod, now with tolerations.") tolerationPodName := "with-tolerations" pod, err = c.Pods(ns).Create(&api.Pod{ TypeMeta: unversioned.TypeMeta{ Kind: "Pod", },