kubernetes/kops · error

error parsing cluster spec.kubernetesVersion %q

Error message

error parsing cluster spec.kubernetesVersion %q

What it means

Panicked from Cluster.IsKubernetesGTE (via util.ParseKubernetesVersion) when the cluster's spec.kubernetesVersion cannot be parsed into a valid semver. The check is documented to panic on an invalid stored version: a malformed or empty version string in the cluster spec makes version-gating impossible, so the invalid value is surfaced in the panic message for immediate correction.

Source

Thrown at pkg/apis/kops/cluster.go:889

	if c.ObjectMeta.Name == "" {
		return fmt.Errorf("cluster Name not set in FillDefaults")
	}

	return nil
}

// SharedVPC is a simple helper function which makes the templates for a shared VPC clearer
func (c *Cluster) SharedVPC() bool {
	return c.Spec.Networking.NetworkID != ""
}

// IsKubernetesGTE checks if the version is >= the specified version.
// It panics if the kubernetes version in the cluster is invalid, or if the version is invalid.
func (c *Cluster) IsKubernetesGTE(version string) bool {
	clusterVersion, err := util.ParseKubernetesVersion(c.Spec.KubernetesVersion)
	if err != nil || clusterVersion == nil {
		panic(fmt.Sprintf("error parsing cluster spec.kubernetesVersion %q", c.Spec.KubernetesVersion))
	}

	parsedVersion, err := util.ParseKubernetesVersion(version)
	if err != nil {
		panic(fmt.Sprintf("Error parsing version %s: %v", version, err))
	}

	// Ignore Pre & Build fields
	clusterVersion.Pre = nil
	clusterVersion.Build = nil

	return clusterVersion.GTE(*parsedVersion)
}

// IsKubernetesLT checks if the version is < the specified version.
// It panics if the kubernetes version in the cluster is invalid, or if the version is invalid.
func (c *Cluster) IsKubernetesLT(version string) bool {
	return !c.IsKubernetesGTE(version)

View on GitHub (pinned to 4c8573c808)

Solutions

  1. Fix spec.kubernetesVersion in the cluster spec (e.g. via kops edit cluster) to a valid release like 1.30.0
  2. Validate the version after any manual spec edits or version upgrades before running kops operations that gate on version
Defensive patterns

Strategy: validation

When it happens

Trigger: Thrown at pkg/apis/kops/cluster.go:889 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of kubernetes/kops@4c8573c808 (2026-09-05). Data as JSON: /api/errors/aa17541d8fe10993. Report an issue: GitHub.