kubernetes/kops · error

scaleway cloud provider currently supports only one availabi

Error message

scaleway cloud provider currently supports only one availability zone

What it means

setupZones enforces the same single-zone constraint for Scaleway that Hetzner has: kOps can only provision a Scaleway cluster into one availability zone. When opt.Zones contains more than one entry for CloudProviderScaleway, cluster creation is aborted with this error.

Source

Thrown at upup/pkg/fi/cloudup/new_cluster.go:856

	case api.CloudProviderAWS:
		if len(opt.Zones) > 0 && len(opt.SubnetIDs) > 0 {
			zoneToSubnetProviderID, err = getAWSZoneToSubnetProviderID(cluster.Spec.Networking.NetworkID, opt.Zones[0][:len(opt.Zones[0])-1], opt.SubnetIDs)
			if err != nil {
				return nil, err
			}
		}

	case api.CloudProviderOpenstack:
		if len(opt.Zones) > 0 && len(opt.SubnetIDs) > 0 {
			zoneToSubnetProviderID, err = getOpenstackZoneToSubnetProviderID(cluster, allZones.List(), opt.SubnetIDs)
			if err != nil {
				return nil, err
			}
		}

	case api.CloudProviderScaleway:
		if len(opt.Zones) > 1 {
			return nil, fmt.Errorf("scaleway cloud provider currently supports only one availability zone")
		}
	}

	for _, zoneName := range allZones.List() {
		// We create default subnets named the same as the zones
		subnetName := zoneName

		subnet := model.FindSubnet(cluster, subnetName)
		if subnet == nil {
			subnet = &api.ClusterSubnetSpec{
				Name:   subnetName,
				Zone:   subnetName,
				Egress: opt.Egress,
			}
			if subnetID, ok := zoneToSubnetProviderID[zoneName]; ok {
				subnet.ID = subnetID
			}
			cluster.Spec.Networking.Subnets = append(cluster.Spec.Networking.Subnets, *subnet)

View on GitHub (pinned to 4c8573c808)

Solutions

  1. Pass exactly one Scaleway availability zone, e.g. --zones fr-par-1.
  2. Check the --zones flag (and any generated cluster spec) for stray commas or extra entries.
  3. Move to a multi-zone-capable provider if multiple AZs are a hard requirement.

Example fix

// before
kops create cluster --cloud scaleway --zones fr-par-1,nl-ams-1 mycluster.k8s.local
// after
kops create cluster --cloud scaleway --zones fr-par-1 mycluster.k8s.local
Defensive patterns

Strategy: validation

Validate before calling

zones := strings.Split(*zonesFlag, ",")
if cloud == "scaleway" && len(zones) > 1 {
    return fmt.Errorf("scaleway supports exactly one AZ; got %q", zones)
}

Prevention

When it happens

Trigger: Running `kops create cluster --cloud scaleway --zones fr-par-1,fr-par-2 ...` (any --zones list with more than one Scaleway AZ) triggers this during NewCluster.

Common situations: Attempting multi-AZ HA setups on Scaleway; scripts templated for AWS that expand multiple zones; typos where a comma accidentally splits one AZ into two entries.

Related errors


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