kubernetes/kops · error

error creating resource dumper: %w

Error message

error creating resource dumper: %w

What it means

When --k8s-resources is enabled, toolbox dump creates a dump.ResourceDumper from the gathered kubeconfig to export Kubernetes API resources. This error wraps construction failure — usually the kubeconfig/context is unusable (missing server, bad credentials, unreachable API). The dump continues for other resources but k8s resource dumping is skipped.

Source

Thrown at cmd/kops/toolbox_dump.go:280

			sshUser := options.SSHUser
			dumper.SetSSHAccessGranter(func(ctx context.Context, instanceID string) error {
				_, err := eicClient.SendSSHPublicKey(ctx, &ec2instanceconnect.SendSSHPublicKeyInput{
					InstanceId:     aws.String(instanceID),
					InstanceOSUser: aws.String(sshUser),
					SSHPublicKey:   aws.String(publicKey),
				})
				return err
			})
		}

		if err := dumper.DumpAllNodes(ctx, nodes, options.MaxNodes, cloudResources); err != nil {
			klog.Warningf("error dumping nodes: %v", err)
		}

		if kubeConfig != nil && options.K8sResources {
			dumper, err := dump.NewResourceDumper(kubeConfig, options.Output, options.Dir)
			if err != nil {
				return fmt.Errorf("error creating resource dumper: %w", err)
			}
			if err := dumper.DumpResources(ctx); err != nil {
				klog.Warningf("error dumping resources: %v", err)
			}

			logDumper, err := dump.NewPodLogDumper(kubeConfig, options.Dir)
			if err != nil {
				return fmt.Errorf("error creating pod log dumper: %w", err)
			}
			if err := logDumper.DumpLogs(ctx); err != nil {
				klog.Warningf("error dumping pod logs: %v", err)
			}
		}
	}

	if cloudResources != nil {
		switch options.Output {
		case OutputYaml:

View on GitHub (pinned to 4c8573c808)

Solutions

  1. Check cluster is running: kubectl --kubeconfig <dumped kubeconfig> get nodes.
  2. Regenerate admin credentials: kops export kubeconfig --admin <cluster>.
  3. Ensure --dir output path exists and is writable.
  4. If the cluster was deleted, drop --k8s-resources and dump only cloud state.

Example fix

// before
kops toolbox dump --name c.k8s.local --k8s-resources  # expired admin creds
// after
kops export kubeconfig --admin c.k8s.local
kops toolbox dump --name c.k8s.local --k8s-resources
Defensive patterns

Strategy: try-catch

Validate before calling

kops export kubeconfig "$CLUSTER_NAME" && kubectl cluster-info --kubeconfig ~/.kube/config >/dev/null || { echo "k8s API unreachable; skipping --k8s-resources"; }

Try / catch

dumper, err := dump.NewResourceDumper(kubeConfig, options.Output, options.Dir)
if err != nil {
    klog.Warningf("skipping k8s resource dump (kubeconfig or client init failed): %v", err)
    // fall back to cloud-only dump
}

Prevention

When it happens

Trigger: dump.NewResourceDumper(kubeConfig, options.Output, options.Dir) returns an error while building the Kubernetes clientset or validating output/dir options during `kops toolbox dump` with k8s resources enabled.

Common situations: Cluster's API server unreachable or deleted but kubeconfig present; stale/invalid admin kubeconfig credentials (expired certificate); output directory not writable; kops toolbox dump run before the cluster is actually up.

Related errors


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