Only set nodeSelectorTerms when there are zoned nodes

This commit is contained in:
Pengfei Ni 2018-08-23 10:37:57 +08:00
parent 8aaeafa166
commit 5fdc7154f2

View File

@ -304,14 +304,16 @@ func (p *azureDiskProvisioner) Provision(selectedNode *v1.Node, allowedTopologie
if zoned { if zoned {
// Set node affinity labels based on availability zone labels. // Set node affinity labels based on availability zone labels.
requirements := make([]v1.NodeSelectorRequirement, 0) if len(labels) > 0 {
for k, v := range labels { requirements := make([]v1.NodeSelectorRequirement, 0)
requirements = append(requirements, v1.NodeSelectorRequirement{Key: k, Operator: v1.NodeSelectorOpIn, Values: []string{v}}) for k, v := range labels {
} requirements = append(requirements, v1.NodeSelectorRequirement{Key: k, Operator: v1.NodeSelectorOpIn, Values: []string{v}})
}
nodeSelectorTerms = append(nodeSelectorTerms, v1.NodeSelectorTerm{ nodeSelectorTerms = append(nodeSelectorTerms, v1.NodeSelectorTerm{
MatchExpressions: requirements, MatchExpressions: requirements,
}) })
}
} else { } else {
// Set node affinity labels based on fault domains. // Set node affinity labels based on fault domains.
// This is required because unzoned AzureDisk can't be attached to zoned nodes. // This is required because unzoned AzureDisk can't be attached to zoned nodes.
@ -336,10 +338,12 @@ func (p *azureDiskProvisioner) Provision(selectedNode *v1.Node, allowedTopologie
} }
} }
pv.Spec.NodeAffinity = &v1.VolumeNodeAffinity{ if len(nodeSelectorTerms) > 0 {
Required: &v1.NodeSelector{ pv.Spec.NodeAffinity = &v1.VolumeNodeAffinity{
NodeSelectorTerms: nodeSelectorTerms, Required: &v1.NodeSelector{
}, NodeSelectorTerms: nodeSelectorTerms,
},
}
} }
} }