diff --git a/pkg/constants/constants.go b/pkg/constants/constants.go index a107ff2b..40c23803 100644 --- a/pkg/constants/constants.go +++ b/pkg/constants/constants.go @@ -48,6 +48,10 @@ const ( // The event uses the error(s) as the reason. JobCreationFailedReason = "JobCreationFailed" + // Event reason used when a Headless Service creation fails. + // The event uses the error(s) as the reason. + HeadlessServiceCreationFailedReason = "HeadlessServiceCreationFailed" + // Event reason and message for when the pod controller detects a violation // of the JobSet exclusive placment policy (i.e., follower pods not colocated in // the same topology domain as the leader pod for that Job). diff --git a/pkg/controllers/jobset_controller.go b/pkg/controllers/jobset_controller.go index 387ec5f3..2b099b6c 100644 --- a/pkg/controllers/jobset_controller.go +++ b/pkg/controllers/jobset_controller.go @@ -576,6 +576,7 @@ func (r *JobSetReconciler) createHeadlessSvcIfNecessary(ctx context.Context, js // Create headless service. if err := r.Create(ctx, &headlessSvc); err != nil { + r.Record.Eventf(js, corev1.EventTypeWarning, constants.HeadlessServiceCreationFailedReason, err.Error()) return err } log.V(2).Info("successfully created headless service", "service", klog.KObj(&headlessSvc))