kubernetes/kops · error

error marshalling %s/%s: %w

Error message

error marshalling %s/%s: %w

What it means

After generating the MachineDeployment and related objects, the command serializes each unstructured object to YAML with `yaml.Marshal`. If sigs.k8s.io/yaml cannot marshal an object's underlying map (e.g. values that cannot be converted to JSON-compatible types), it wraps and returns this error naming the kind and name of the offending object.

Source

Thrown at pkg/commands/toolbox/clusterapi/generate_machinedeployment.go:234

		Name:              options.Name,
		Replicas:          options.Replicas,
		Zones:             zones,
		MachineType:       instanceType,
		Subnet:            subnet,
		Image:             image,
		KubernetesVersion: kubernetesVersion,
		Role:              role,
	}

	objects, err := b.BuildObjects(ctx)
	if err != nil {
		return err
	}

	for i, obj := range objects {
		b, err := yaml.Marshal(obj.Object)
		if err != nil {
			return fmt.Errorf("error marshalling %s/%s: %w", obj.GetKind(), obj.GetName(), err)
		}
		if i != 0 {
			fmt.Fprintf(out, "---\n")
		}
		out.Write(b)
	}

	return nil
}

View on GitHub (pinned to 4c8573c808)

Solutions

  1. Check the wrapped inner error for the exact field/type that failed marshalling
  2. Upgrade kops to a version matching your cluster/k8s API versions so generated objects match expected schemas
  3. Re-run with a different --output path/permissions excluded; if persistent, regenerate objects with a smaller scope (single instance group) to isolate the bad object
Defensive patterns

Strategy: try-catch

Try / catch

if err := RunGenerateMachineDeployment(ctx, f, out, opts); err != nil {
    if strings.Contains(err.Error(), "error marshalling") {
        log.Printf("generated object could not be serialized: %v", err)
        // inspect kind/name embedded in message, regenerate or upgrade kops
    }
    return err
}

Prevention

When it happens

Trigger: An object in the generated `objects` slice contains data that cannot round-trip through JSON (e.g. non-string map keys of unsupported types, invalid nested values) when `RunGenerateMachineDeployment` writes output.

Common situations: Rare in practice since objects are built from typed kOps/k8s APIs; can surface with schema drift after a kOps/k8s API version upgrade where generated fields hold unexpected types.

Related errors


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