diff --git a/pkg/operator/ceph/cluster/osd/topology.go b/pkg/operator/ceph/cluster/osd/topology.go index 81f7735cf..548dd272b 100644 --- a/pkg/operator/ceph/cluster/osd/topology.go +++ b/pkg/operator/ceph/cluster/osd/topology.go @@ -93,6 +93,11 @@ func extractTopologyFromLabels(labels map[string]string) (map[string]string, str topologyAffinity = formatTopologyAffinity(corev1.LabelZoneFailureDomainStable, zone) } + // ignore the region k8s topology label when it has the same value as the k8s zone label + if topology[regionLabel] == topology[zoneLabel] { + delete(topology, regionLabel) + } + // get host host, ok := labels[corev1.LabelHostname] if ok { diff --git a/pkg/operator/ceph/cluster/osd/topology_test.go b/pkg/operator/ceph/cluster/osd/topology_test.go index 30b73db9c..e0327d501 100644 --- a/pkg/operator/ceph/cluster/osd/topology_test.go +++ b/pkg/operator/ceph/cluster/osd/topology_test.go @@ -134,4 +134,14 @@ func TestTopologyLabels(t *testing.T) { topology, affinity = extractTopologyFromLabels(nodeLabels) assert.Equal(t, 0, len(topology)) assert.Equal(t, "", affinity) + + // ignore the region k8s topology label when it has the same value as the k8s zone label + nodeLabels = map[string]string{ + corev1.LabelZoneRegionStable: "zone", + corev1.LabelZoneFailureDomainStable: "zone", + } + topology, affinity = extractTopologyFromLabels(nodeLabels) + assert.Equal(t, 1, len(topology)) + assert.Equal(t, "zone", topology["zone"]) + assert.Equal(t, "topology.kubernetes.io/zone=zone", affinity) }