mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-20 18:31:15 +00:00
Merge pull request #89511 from andyzhangx/sharedisk
feat: add azure shared disk support
This commit is contained in:
commit
a329e67922
@ -93,26 +93,11 @@ func parseZoned(zonedString string, kind v1.AzureDataDiskKind) (bool, error) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (p *azureDiskProvisioner) Provision(selectedNode *v1.Node, allowedTopologies []v1.TopologySelectorTerm) (*v1.PersistentVolume, error) {
|
func (p *azureDiskProvisioner) Provision(selectedNode *v1.Node, allowedTopologies []v1.TopologySelectorTerm) (*v1.PersistentVolume, error) {
|
||||||
if !util.AccessModesContainedInAll(p.plugin.GetAccessModes(), p.options.PVC.Spec.AccessModes) {
|
|
||||||
return nil, fmt.Errorf("invalid AccessModes %v: only AccessModes %v are supported", p.options.PVC.Spec.AccessModes, p.plugin.GetAccessModes())
|
|
||||||
}
|
|
||||||
supportedModes := p.plugin.GetAccessModes()
|
|
||||||
|
|
||||||
// perform static validation first
|
// perform static validation first
|
||||||
if p.options.PVC.Spec.Selector != nil {
|
if p.options.PVC.Spec.Selector != nil {
|
||||||
return nil, fmt.Errorf("azureDisk - claim.Spec.Selector is not supported for dynamic provisioning on Azure disk")
|
return nil, fmt.Errorf("azureDisk - claim.Spec.Selector is not supported for dynamic provisioning on Azure disk")
|
||||||
}
|
}
|
||||||
|
|
||||||
if len(p.options.PVC.Spec.AccessModes) > 1 {
|
|
||||||
return nil, fmt.Errorf("AzureDisk - multiple access modes are not supported on AzureDisk plugin")
|
|
||||||
}
|
|
||||||
|
|
||||||
if len(p.options.PVC.Spec.AccessModes) == 1 {
|
|
||||||
if p.options.PVC.Spec.AccessModes[0] != supportedModes[0] {
|
|
||||||
return nil, fmt.Errorf("AzureDisk - mode %s is not supported by AzureDisk plugin (supported mode is %s)", p.options.PVC.Spec.AccessModes[0], supportedModes)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
var (
|
var (
|
||||||
location, account string
|
location, account string
|
||||||
storageAccountType, fsType string
|
storageAccountType, fsType string
|
||||||
@ -194,6 +179,30 @@ func (p *azureDiskProvisioner) Provision(selectedNode *v1.Node, allowedTopologie
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
supportedModes := p.plugin.GetAccessModes()
|
||||||
|
if maxShares < 2 {
|
||||||
|
// only do AccessModes validation when maxShares < 2
|
||||||
|
if !util.AccessModesContainedInAll(p.plugin.GetAccessModes(), p.options.PVC.Spec.AccessModes) {
|
||||||
|
return nil, fmt.Errorf("invalid AccessModes %v: only AccessModes %v are supported with maxShares(%d) < 2", p.options.PVC.Spec.AccessModes, p.plugin.GetAccessModes(), maxShares)
|
||||||
|
}
|
||||||
|
|
||||||
|
if len(p.options.PVC.Spec.AccessModes) > 1 {
|
||||||
|
return nil, fmt.Errorf("AzureDisk - multiple access modes are not supported on AzureDisk plugin with maxShares(%d) < 2", maxShares)
|
||||||
|
}
|
||||||
|
|
||||||
|
if len(p.options.PVC.Spec.AccessModes) == 1 {
|
||||||
|
if p.options.PVC.Spec.AccessModes[0] != supportedModes[0] {
|
||||||
|
return nil, fmt.Errorf("AzureDisk - mode %s is not supported by AzureDisk plugin (supported mode is %s) with maxShares(%d) < 2", p.options.PVC.Spec.AccessModes[0], supportedModes, maxShares)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
supportedModes = []v1.PersistentVolumeAccessMode{
|
||||||
|
v1.ReadWriteOnce,
|
||||||
|
v1.ReadOnlyMany,
|
||||||
|
v1.ReadWriteMany,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// normalize values
|
// normalize values
|
||||||
skuName, err := normalizeStorageAccountType(storageAccountType)
|
skuName, err := normalizeStorageAccountType(storageAccountType)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
Loading…
Reference in New Issue
Block a user