kubernetes/kops · error

error building kubelet config: %v

Error message

error building kubelet config: %v

What it means

KubeletBuilder.Build wraps failures from buildKubeletConfigSpec, which derives the effective kubelet configuration (InstanceGroup/cluster spec merged with feature gates, flags, etc.). Any error computing that spec aborts building the kubelet model.

Source

Thrown at nodeup/pkg/model/kubelet.go:112

// KubeletBuilder installs kubelet
type KubeletBuilder struct {
	*NodeupModelContext
}

var _ fi.NodeupModelBuilder = &KubeletBuilder{}

// Build is responsible for building the kubelet configuration
func (b *KubeletBuilder) Build(c *fi.NodeupModelBuilderContext) error {
	err := b.buildKubeletServingCertificate(c)
	if err != nil {
		return fmt.Errorf("error building kubelet server cert: %v", err)
	}

	ctx := c.Context()
	kubeletConfig, err := b.buildKubeletConfigSpec(ctx)
	if err != nil {
		return fmt.Errorf("error building kubelet config: %v", err)
	}

	{
		// Set the provider ID to help speed node registration on large clusters
		var providerID string
		if b.CloudProvider() == kops.CloudProviderAWS {
			config, err := awsconfig.LoadDefaultConfig(ctx)
			if err != nil {
				return fmt.Errorf("error loading AWS config: %v", err)
			}
			metadata := imds.NewFromConfig(config)
			instanceIdentity, err := metadata.GetInstanceIdentityDocument(ctx, &imds.GetInstanceIdentityDocumentInput{})
			if err != nil {
				return err
			}
			providerID = fmt.Sprintf("aws:///%s/%s", instanceIdentity.AvailabilityZone, instanceIdentity.InstanceID)
		} else if b.CloudProvider() == kops.CloudProviderAzure {
			metadata, err := azuremetadata.QueryComputeInstanceMetadata(ctx)

View on GitHub (pinned to 4c8573c808)

Solutions

  1. Inspect the wrapped inner error to find which kubelet config field failed.
  2. Validate the cluster spec with `kops replace --dry-run` / `kops get cluster -o yaml` review for invalid kubelet settings.
  3. Fix or remove invalid kubelet config values in the cluster or InstanceGroup spec.
  4. Re-run kops update cluster to regenerate the manifest, then retry nodeup.

Example fix

// before (invalid kubelet spec)
kubelet:
  maxPods: not-a-number
// after
kubelet:
  maxPods: 110
Defensive patterns

Strategy: validation

Validate before calling

// validate kubelet spec fields before apply
if c.Spec.Kubelet != nil && c.Spec.Kubelet.MaxPods != nil && *c.Spec.Kubelet.MaxPods <= 0 {
    return errors.New("kubelet.maxPods must be positive")
}
// kubectl dry-run
// kops replace -f cluster.yaml --dry-run

Prevention

When it happens

Trigger: buildKubeletConfigSpec returns an error while merging cluster/instancegroup kubelet config — e.g. invalid kubelet config values in the cluster spec, unsupported fields, or missing context/cluster data.

Common situations: Malformed kops cluster spec (bad kubelet config block, invalid feature gates or eviction settings), instance groups referencing a kubelet config that cannot be resolved.

Understand the failure class

Background: "Invalid value" and "allowed values are" config errors: what your library rejected and how to fix it — this error's family across 41 libraries.

Related errors


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