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,6 +304,7 @@ 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.
if len(labels) > 0 {
requirements := make([]v1.NodeSelectorRequirement, 0) requirements := make([]v1.NodeSelectorRequirement, 0)
for k, v := range labels { for k, v := range labels {
requirements = append(requirements, v1.NodeSelectorRequirement{Key: k, Operator: v1.NodeSelectorOpIn, Values: []string{v}}) requirements = append(requirements, v1.NodeSelectorRequirement{Key: k, Operator: v1.NodeSelectorOpIn, Values: []string{v}})
@ -312,6 +313,7 @@ func (p *azureDiskProvisioner) Provision(selectedNode *v1.Node, allowedTopologie
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,12 +338,14 @@ func (p *azureDiskProvisioner) Provision(selectedNode *v1.Node, allowedTopologie
} }
} }
if len(nodeSelectorTerms) > 0 {
pv.Spec.NodeAffinity = &v1.VolumeNodeAffinity{ pv.Spec.NodeAffinity = &v1.VolumeNodeAffinity{
Required: &v1.NodeSelector{ Required: &v1.NodeSelector{
NodeSelectorTerms: nodeSelectorTerms, NodeSelectorTerms: nodeSelectorTerms,
}, },
} }
} }
}
return pv, nil return pv, nil
} }