kubernetes/kops · error
could not create startup script for instance group %s: %v
Error message
could not create startup script for instance group %s: %v
What it means
Wrapped failure generating the nodeup bootstrap script (startup script) for an OpenStack instance group. The script builder (configuration/rendering of nodeup) errored; this message only identifies which instance group failed — the root cause is in the %v detail.
Source
Thrown at pkg/model/openstackmodel/servergroup.go:129
return err
}
igMeta[openstack.TagKopsNetwork] = netName
igMeta[openstack.TagKopsInstanceGroup] = ig.Name
igMeta[openstack.TagKopsRole] = string(ig.Spec.Role)
igMeta[openstack.INSTANCE_GROUP_GENERATION] = fmt.Sprintf("%d", ig.GetGeneration())
igMeta[openstack.CLUSTER_GENERATION] = fmt.Sprintf("%d", b.Cluster.GetGeneration())
if e, ok := ig.ObjectMeta.Annotations[openstack.OS_ANNOTATION+openstack.BOOT_FROM_VOLUME]; ok {
igMeta[openstack.BOOT_FROM_VOLUME] = e
}
if v, ok := ig.ObjectMeta.Annotations[openstack.OS_ANNOTATION+openstack.BOOT_VOLUME_SIZE]; ok {
igMeta[openstack.BOOT_VOLUME_SIZE] = v
}
startupScript, err := b.BootstrapScriptBuilder.ResourceNodeUp(c, ig)
if err != nil {
return fmt.Errorf("could not create startup script for instance group %s: %v", ig.Name, err)
}
var securityGroups []*openstacktasks.SecurityGroup
securityGroupName := b.SecurityGroupName(ig.Spec.Role)
securityGroups = append(securityGroups, b.LinkToSecurityGroup(securityGroupName))
if b.Cluster.Spec.CloudProvider.Openstack.Loadbalancer == nil && ig.Spec.Role.HasControlPlane() {
securityGroups = append(securityGroups, b.LinkToSecurityGroup(b.APIResourceName()))
}
r := strings.NewReplacer("_", "-", ".", "-")
groupName := r.Replace(strings.ToLower(ig.Name))
// In the future, OpenStack will use Machine API to manage groups,
// for now create d.InstanceGroups.Spec.MinSize amount of servers
for i := int32(0); i < *ig.Spec.MinSize; i++ {
// FIXME: Must ensure 63 or less characters
// replace all dots and _ with -, this is needed to get external cloudprovider working
iName := strings.ReplaceAll(strings.ToLower(fmt.Sprintf("%s-%d.%s", ig.Name, i+1, b.ClusterName())), "_", "-")View on GitHub (pinned to 4c8573c808)
Solutions
- Inspect the wrapped error for the underlying script-generation failure
- Verify the cluster spec's kubelet/nodeup config fields render correctly
- Fix the reported field and re-run `kops update cluster`
Defensive patterns
Strategy: try-catch
When it happens
Trigger: Thrown at pkg/model/openstackmodel/servergroup.go:129 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/e0232dc100bf10d2.
Report an issue: GitHub.