kubernetes/kops · error
error parsing Kubernetes version %q: %v
Error message
error parsing Kubernetes version %q: %v
What it means
ForceKubernetesVersion on the instance group model parses the given Kubernetes version string via ParseKubernetesVersion and stores it on the model. If parsing fails, the error is wrapped with the input string and the underlying reason. It surfaces malformed version inputs reaching the model layer (e.g. from cluster spec or tests).
Source
Thrown at pkg/apis/kops/model/instance_group.go:84
return m.kubernetesVersion
}
func (m *instanceGroupModel) GetCloudProvider() kops.CloudProviderID {
return m.cluster.GetCloudProvider()
}
func (m *instanceGroupModel) InstallCNIAssets() bool {
return m.cluster.InstallCNIAssets()
}
func (m *instanceGroupModel) RawClusterSpec() *kops.ClusterSpec {
return &m.cluster.Spec
}
func (m *instanceGroupModel) ForceKubernetesVersion(kubernetesVersionString string) error {
kubernetesVersion, err := ParseKubernetesVersion(kubernetesVersionString)
if err != nil {
return fmt.Errorf("error parsing Kubernetes version %q: %v", kubernetesVersionString, err)
}
m.kubernetesVersion = kubernetesVersion
return nil
}
View on GitHub (pinned to 4c8573c808)
Solutions
- Set the cluster's spec.kubernetesVersion to a full, valid version string (e.g. 1.28.2, with or without a leading v)
- Check for empty or placeholder values leaking from templating/config into kubernetesVersion
- Pin to a kOps-supported Kubernetes release version
Example fix
# before (cluster.yaml) spec: kubernetesVersion: stable # after spec: kubernetesVersion: 1.28.2
Defensive patterns
Strategy: try-catch
Validate before calling
if kubernetesVersion == "" || !regexp.MustCompile(`^v?\d+\.\d+\.\d+`).MatchString(kubernetesVersion) {
return errors.New("kubernetesVersion must be a full version like 1.28.2")
} Try / catch
kubernetesVersion, err := m.ForceKubernetesVersion(versionString)
if err != nil {
return fmt.Errorf("refusing to build model: %w", err)
} Prevention
- Pin full semver kubernetesVersion in cluster specs
- Guard templating so empty values cannot reach the version field
- Check kops support matrix for the pinned version
When it happens
Trigger: Calling ForceKubernetesVersion (from ForInstanceGroup during model building) with a string that util.ParseKubernetesVersion rejects — e.g. empty string, "1.28", "v1.28.0-beta" with unexpected format, or arbitrary text from a misconfigured kubernetesVersion field.
Common situations: Cluster spec has kubernetesVersion set to a non-standard value; user pinned a version like "stable" or omitted the patch number; a template/variable substitution produced an empty version string.
Related errors
- error parsing version %q: %v
- error parsing RecommendedVersion %q from channel
- error parsing RequiredVersion %q from channel
- parsing kops version %q: %w
- error parsing version %q for package %q
AI-assisted analysis of kubernetes/kops@4c8573c808 (2026-09-05).
Data as JSON: /api/errors/e6c4762a95759e85.
Report an issue: GitHub.