diff --git a/pkg/scheduler/core/spreadconstraint/group_clusters.go b/pkg/scheduler/core/spreadconstraint/group_clusters.go index b835bea3f..5ce692580 100644 --- a/pkg/scheduler/core/spreadconstraint/group_clusters.go +++ b/pkg/scheduler/core/spreadconstraint/group_clusters.go @@ -136,22 +136,23 @@ func (info *GroupClustersInfo) generateZoneInfo(spreadConstraints []policyv1alph } for _, clusterInfo := range info.Clusters { - zone := clusterInfo.Cluster.Spec.Zone - if zone == "" { + zones := clusterInfo.Cluster.Spec.Zones + if len(zones) == 0 { continue } - zoneInfo, ok := info.Zones[zone] - if !ok { - zoneInfo = ZoneInfo{ - Name: zone, - Clusters: make([]ClusterDetailInfo, 0), + for _, zone := range zones { + zoneInfo, ok := info.Zones[zone] + if !ok { + zoneInfo = ZoneInfo{ + Name: zone, + Clusters: make([]ClusterDetailInfo, 0), + } } + zoneInfo.Clusters = append(zoneInfo.Clusters, clusterInfo) + zoneInfo.AvailableReplicas += clusterInfo.AvailableReplicas + info.Zones[zone] = zoneInfo } - - zoneInfo.Clusters = append(zoneInfo.Clusters, clusterInfo) - zoneInfo.AvailableReplicas += clusterInfo.AvailableReplicas - info.Zones[zone] = zoneInfo } for zone, zoneInfo := range info.Zones { diff --git a/pkg/scheduler/core/spreadconstraint/select_clusters_test.go b/pkg/scheduler/core/spreadconstraint/select_clusters_test.go index c59b86e35..0ea935b4a 100644 --- a/pkg/scheduler/core/spreadconstraint/select_clusters_test.go +++ b/pkg/scheduler/core/spreadconstraint/select_clusters_test.go @@ -18,7 +18,7 @@ func NewClusterWithTopology(name, provider, region, zone string) *clusterv1alpha Spec: clusterv1alpha1.ClusterSpec{ Provider: provider, Region: region, - Zone: zone, + Zones: []string{zone}, }, } }