From 1db5097249e4a5c939b7f789dc95281a63a85585 Mon Sep 17 00:00:00 2001 From: Nick Tran <10810510+njtran@users.noreply.github.com> Date: Fri, 20 Dec 2024 11:40:11 -0800 Subject: [PATCH] feat: add event for prefiltered instance types (#1891) --- pkg/controllers/provisioning/scheduling/events.go | 11 +++++++++++ pkg/controllers/provisioning/scheduling/scheduler.go | 1 + pkg/controllers/state/suite_test.go | 2 +- 3 files changed, 13 insertions(+), 1 deletion(-) diff --git a/pkg/controllers/provisioning/scheduling/events.go b/pkg/controllers/provisioning/scheduling/events.go index de25d4532e..aa092475bc 100644 --- a/pkg/controllers/provisioning/scheduling/events.go +++ b/pkg/controllers/provisioning/scheduling/events.go @@ -49,6 +49,17 @@ func NominatePodEvent(pod *corev1.Pod, node *corev1.Node, nodeClaim *v1.NodeClai } } +func NoCompatibleInstanceTypes(np *v1.NodePool) events.Event { + return events.Event{ + InvolvedObject: np, + Type: corev1.EventTypeWarning, + Reason: "NoCompatibleInstanceTypes", + Message: "NodePool requirements filtered out all compatible available instance types", + DedupeValues: []string{string(np.UID)}, + DedupeTimeout: 1 * time.Minute, + } +} + func PodFailedToScheduleEvent(pod *corev1.Pod, err error) events.Event { return events.Event{ InvolvedObject: pod, diff --git a/pkg/controllers/provisioning/scheduling/scheduler.go b/pkg/controllers/provisioning/scheduling/scheduler.go index 018f4dcd3d..96acea71d7 100644 --- a/pkg/controllers/provisioning/scheduling/scheduler.go +++ b/pkg/controllers/provisioning/scheduling/scheduler.go @@ -64,6 +64,7 @@ func NewScheduler(ctx context.Context, kubeClient client.Client, nodePools []*v1 nct := NewNodeClaimTemplate(np) nct.InstanceTypeOptions = filterInstanceTypesByRequirements(instanceTypes[np.Name], nct.Requirements, corev1.ResourceList{}).remaining if len(nct.InstanceTypeOptions) == 0 { + recorder.Publish(NoCompatibleInstanceTypes(np)) log.FromContext(ctx).WithValues("NodePool", klog.KRef("", np.Name)).Info("skipping, nodepool requirements filtered out all instance types") return nil, false } diff --git a/pkg/controllers/state/suite_test.go b/pkg/controllers/state/suite_test.go index bc310a1a24..ec047339c8 100644 --- a/pkg/controllers/state/suite_test.go +++ b/pkg/controllers/state/suite_test.go @@ -1480,7 +1480,7 @@ var _ = Describe("Consolidated State", func() { fakeClock.Step(time.Minute) Expect(cluster.ConsolidationState()).To(Equal(state)) - fakeClock.Step(time.Minute * 3) + fakeClock.Step(time.Minute * 2) Expect(cluster.ConsolidationState()).To(Equal(state)) fakeClock.Step(time.Minute * 2)