kubernetes/kubernetes · error
concurrent-statefulset-syncs must be greater than 0, but got
Error message
concurrent-statefulset-syncs must be greater than 0, but got %d
What it means
Thrown by StatefulSetControllerOptions.Validate() when --concurrent-statefulset-syncs (Int32) is <1. The StatefulSet controller reconciles StatefulSets with strict ordinal ordering per worker; zero workers means StatefulSets never advance. Part of the aggregated validation error slice.
Source
Thrown at cmd/kube-controller-manager/app/options/statefulsetcontroller.go:60
func (o *StatefulSetControllerOptions) ApplyTo(cfg *statefulsetconfig.StatefulSetControllerConfiguration) error {
if o == nil {
return nil
}
cfg.ConcurrentStatefulSetSyncs = o.ConcurrentStatefulSetSyncs
return nil
}
// Validate checks validation of StatefulSetControllerOptions.
func (o *StatefulSetControllerOptions) Validate() []error {
if o == nil {
return nil
}
errs := []error{}
if o.ConcurrentStatefulSetSyncs < 1 {
errs = append(errs, fmt.Errorf("concurrent-statefulset-syncs must be greater than 0, but got %d", o.ConcurrentStatefulSetSyncs))
}
return errs
}
View on GitHub (pinned to b882c60b40)
Solutions
- Set --concurrent-statefulset-syncs to >=1 (default is 5) or remove the flag.
- Disable the controller with --controllers=-statefulset if stateful workloads are not used.
- Clamp computed concurrency values to a minimum of 1.
Example fix
# before --concurrent-statefulset-syncs=0 # after --concurrent-statefulset-syncs=5
Defensive patterns
Strategy: validation
Validate before calling
if opts.StatefulSetController.ConcurrentStatefulSetSyncs < 1 {
return fmt.Errorf("concurrent-statefulset-syncs must be >= 1")
} Prevention
- Disable statefulsets via --controllers=-statefulset rather than zeroing workers.
- Clamp derived worker counts to >=1.
- Review Helm/kustomize patches that null out sync fields.
When it happens
Trigger: Launching KCM with --concurrent-statefulset-syncs=0 or negative, or a StatefulSetControllerConfiguration component-config with concurrentStatefulSetSyncs: 0.
Common situations: Operators scaling down KCM on small clusters and crossing zero; misconfigured kustomize/Helm patches that null out the field; attempting to disable statefulsets via sync count instead of --controllers.
Related errors
- concurrent-ephemeralvolume-syncs must be greater than 0, but
- concurrent-horizontal-pod-autoscaler-syncs must be greater t
- concurrent-job-syncs must be greater than 0, but got %d
- --service-cluster-ip-range can not contain more than two ent
- built-in cloud providers are disabled. The ipam %s is not av
AI-assisted analysis of kubernetes/kubernetes@b882c60b40 (2026-08-07).
Data as JSON: /api/errors/2048f13e1f38060b.
Report an issue: GitHub.