MetaKube clusters come with a default StorageClass:
Using SysEleven Stack Block Storage:
$ kubectl get storageclasses
NAME PROVISIONER AGE
sys11-quobyte-external-provisioner (default) cinder.csi.openstack.org 8d
Using Elastic Block Store
$ kubectl get storageclasses
NAME PROVISIONER AGE
sys11-aws (default) kubernetes.io/aws-ebs 8d
Azure Disks on Azure:
$ kubectl get storageclasses
NAME PROVISIONER AGE
sys11-azure (default) kubernetes.io/azure-disk 8d
The default StorageClass can currently not be changed.
If you add the annotation to another StorageClass, creating PVCs that don't reference a spec.storageClassName
will fail.
MetaKube Core currently does not support RWX volumes.
Usually, volumes of cloud network storage may only be attached to one node at the time.
This limitation stems from the fact that otherwise writes from different hosts would have to be serialized and synchronized.
Even if the cloud storage type supports attaching a disk on multiple nodes at once (e.g. SysEleven Stack "quobyte-multiattach"),
it does not mean that write operations are synchronized by the filesystem driver.
If multiple hosts actually write to the disk, the filesystem (if it doesn't support it, e.g. ext4
) will inevitably get corrupted.
You may still create a StorageClass using SysEleven Stack's multi attach volume type, if you install a suitable filesystem driver:
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: sys11-quobyte-multi
provisioner: cinder.csi.openstack.org
allowVolumeExpansion: true
parameters:
type: d578ba45-0e46-4dcb-b886-ba882c74a8e5
fsType: ext4
The volume type IDs differ for each OpenStack region respectively:
b9a45f96-37cc-4e0b-888d-c1fee05547b5
1ff7f857-fb02-425c-9d11-42e6ff7cfd50
d578ba45-0e46-4dcb-b886-ba882c74a8e5
Kubernetes differentiates three options for spec.storageClassName
in a PVC (or indirectly in a StatefulSets' spec.persistentVolumeClaimTemplates
):
null
or equivalent: not specifying the field at all
Kube-apiserver will automatically populate the field with the name of the default StorageClass.
We recommend this option if possible, because it allows switching the default StorageClass without recreating a StatefulSet.
Name of a specific StorageClass
Kubernetes will use the CSI driver of the StorageClass to provision a PV according to the PVC.
""
(the empty string)
This option is reserved for "manual" PV provisioning.
Kubernetes will not dynamically create a PV and the PVC will be left in status Pending
until a matching PV is created.