Skip to content

Commit 8efd51f

Browse files
authored
Merge pull request kubernetes#81825 from zouyee/e2e
fix ci-kubernetes-node-kubelet-serial which set PodPriority
2 parents 1855901 + 70b93ef commit 8efd51f

File tree

1 file changed

+17
-7
lines changed

1 file changed

+17
-7
lines changed

test/e2e_node/critical_pod_test.go

Lines changed: 17 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,8 @@ import (
2020
"fmt"
2121

2222
v1 "k8s.io/api/core/v1"
23+
schedulingv1 "k8s.io/api/scheduling/v1"
24+
"k8s.io/apimachinery/pkg/api/errors"
2325
"k8s.io/apimachinery/pkg/api/resource"
2426
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
2527
kubeapi "k8s.io/kubernetes/pkg/apis/core"
@@ -34,15 +36,15 @@ import (
3436
)
3537

3638
const (
37-
criticalPodName = "critical-pod"
38-
guaranteedPodName = "guaranteed"
39-
burstablePodName = "burstable"
40-
bestEffortPodName = "best-effort"
39+
criticalPodName = "critical-pod"
40+
guaranteedPodName = "guaranteed"
41+
burstablePodName = "burstable"
42+
bestEffortPodName = "best-effort"
43+
systemCriticalPriorityName = "critical-pod-test-high-priority"
4144
)
4245

4346
var _ = framework.KubeDescribe("CriticalPod [Serial] [Disruptive] [NodeFeature:CriticalPod]", func() {
4447
f := framework.NewDefaultFramework("critical-pod-test")
45-
4648
ginkgo.Context("when we need to admit a critical pod", func() {
4749
tempSetCurrentKubeletConfig(f, func(initialConfig *kubeletconfig.KubeletConfiguration) {
4850
if initialConfig.FeatureGates == nil {
@@ -56,6 +58,8 @@ var _ = framework.KubeDescribe("CriticalPod [Serial] [Disruptive] [NodeFeature:C
5658
if !configEnabled {
5759
framework.Skipf("unable to run test without dynamic kubelet config enabled.")
5860
}
61+
// because adminssion Priority enable, If the priority class is not found, the Pod is rejected.
62+
systemCriticalPriority := &schedulingv1.PriorityClass{ObjectMeta: metav1.ObjectMeta{Name: systemCriticalPriorityName}, Value: scheduling.SystemCriticalPriority}
5963

6064
// Define test pods
6165
nonCriticalGuaranteed := getTestPod(false, guaranteedPodName, v1.ResourceRequirements{
@@ -81,6 +85,9 @@ var _ = framework.KubeDescribe("CriticalPod [Serial] [Disruptive] [NodeFeature:C
8185
Requests: getNodeCPUAndMemoryCapacity(f),
8286
})
8387

88+
_, err = f.ClientSet.SchedulingV1().PriorityClasses().Create(systemCriticalPriority)
89+
gomega.Expect(err == nil || errors.IsAlreadyExists(err)).To(gomega.BeTrue(), "failed to create PriorityClasses with an error: %v", err)
90+
8491
// Create pods, starting with non-critical so that the critical preempts the other pods.
8592
f.PodClient().CreateBatch([]*v1.Pod{nonCriticalBestEffort, nonCriticalBurstable, nonCriticalGuaranteed})
8693
f.PodClientNS(kubeapi.NamespaceSystem).CreateSyncInNamespace(criticalPod, kubeapi.NamespaceSystem)
@@ -102,6 +109,8 @@ var _ = framework.KubeDescribe("CriticalPod [Serial] [Disruptive] [NodeFeature:C
102109
f.PodClient().DeleteSync(burstablePodName, &metav1.DeleteOptions{}, framework.DefaultPodDeletionTimeout)
103110
f.PodClient().DeleteSync(bestEffortPodName, &metav1.DeleteOptions{}, framework.DefaultPodDeletionTimeout)
104111
f.PodClientNS(kubeapi.NamespaceSystem).DeleteSyncInNamespace(criticalPodName, kubeapi.NamespaceSystem, &metav1.DeleteOptions{}, framework.DefaultPodDeletionTimeout)
112+
err := f.ClientSet.SchedulingV1().PriorityClasses().Delete(systemCriticalPriorityName, &metav1.DeleteOptions{})
113+
framework.ExpectNoError(err)
105114
// Log Events
106115
logPodEvents(f)
107116
logNodeEvents(f)
@@ -123,6 +132,7 @@ func getNodeCPUAndMemoryCapacity(f *framework.Framework) v1.ResourceList {
123132
}
124133

125134
func getTestPod(critical bool, name string, resources v1.ResourceRequirements) *v1.Pod {
135+
value := scheduling.SystemCriticalPriority
126136
pod := &v1.Pod{
127137
TypeMeta: metav1.TypeMeta{
128138
Kind: "Pod",
@@ -144,8 +154,8 @@ func getTestPod(critical bool, name string, resources v1.ResourceRequirements) *
144154
pod.ObjectMeta.Annotations = map[string]string{
145155
kubelettypes.ConfigSourceAnnotationKey: kubelettypes.FileSource,
146156
}
147-
podPriority := scheduling.SystemCriticalPriority
148-
pod.Spec.Priority = &podPriority
157+
pod.Spec.PriorityClassName = systemCriticalPriorityName
158+
pod.Spec.Priority = &value
149159

150160
gomega.Expect(kubelettypes.IsCriticalPod(pod)).To(gomega.BeTrue(), "pod should be a critical pod")
151161
} else {

0 commit comments

Comments
 (0)