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
- Pass exactly one Scaleway availability zone, e.g. --zones fr-par-1.
- Check the --zones flag (and any generated cluster spec) for stray commas or extra entries.
- 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
- Use exactly one Scaleway AZ (e.g. fr-par-1) per cluster command.
- Trim/parse --zones to catch stray commas producing empty or duplicate entries.
- Keep provider-specific zone rules in your provisioning wrapper, not ad-hoc CLI calls.
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
- hetzner cloud provider currently supports only one zone (loc
- invalid Azure zone: %q
- must specify at least one zone for the cluster (use --zones)
- subnet %s and %s have the same zone
- cannot determine control-plane zones
AI-assisted analysis of kubernetes/kops@4c8573c808 (2026-09-05).
Data as JSON: /api/errors/fbe43d4a9ba190cf.
Report an issue: GitHub.