kubernetes/kubernetes · error

concurrent-job-syncs must be greater than 0, but got %d

Error message

concurrent-job-syncs must be greater than 0, but got %d

What it means

Thrown by JobControllerOptions.Validate() when --concurrent-job-syncs (Int32) is less than 1. The job controller reconciles Job objects (and their tracked Pods) across N workers; zero means batch Jobs never get processed for completion/failure handling. Returned in the validation error slice aggregated by KubeControllerManagerOptions.Validate().

Source

Thrown at cmd/kube-controller-manager/app/options/jobcontroller.go:60

func (o *JobControllerOptions) ApplyTo(cfg *jobconfig.JobControllerConfiguration) error {
	if o == nil {
		return nil
	}

	cfg.ConcurrentJobSyncs = o.ConcurrentJobSyncs

	return nil
}

// Validate checks validation of JobControllerOptions.
func (o *JobControllerOptions) Validate() []error {
	if o == nil {
		return nil
	}

	errs := []error{}
	if o.ConcurrentJobSyncs < 1 {
		errs = append(errs, fmt.Errorf("concurrent-job-syncs must be greater than 0, but got %d", o.ConcurrentJobSyncs))
	}
	return errs
}

View on GitHub (pinned to b882c60b40)

Solutions

  1. Set --concurrent-job-syncs to >=1 (default is 5) or remove the flag.
  2. Disable the controller properly with --controllers=-job if batch processing is unwanted.
  3. Clamp any programmatically computed value to a minimum of 1.

Example fix

// before
--concurrent-job-syncs=0
// after
--concurrent-job-syncs=5
Defensive patterns

Strategy: validation

Validate before calling

if opts.JobController.ConcurrentJobSyncs < 1 {
    return fmt.Errorf("concurrent-job-syncs must be >= 1")
}

Prevention

When it happens

Trigger: Starting KCM with --concurrent-job-syncs=0 or negative. Equivalently a JobControllerConfiguration component-config with concurrentJobSyncs: 0.

Common situations: Clusters derived from autoscaled node counts where a concurrency formula yields 0; disabling the job controller by zeroing syncs instead of using --controllers=-job; stale config maps left over from a cluster restore.

Related errors


AI-assisted analysis of kubernetes/kubernetes@b882c60b40 (2026-08-07). Data as JSON: /api/errors/f0f27bb0cafbe46d. Report an issue: GitHub.