Usual Kubernetes installation tools should deploy a default StorageClass where it makes sense.
“Usual installation tools” are:
Other “installation tools” can (and should) deploy default StorageClass following easy steps described in this document, however we won’t touch them during implementation of this proposal.
“Where it makes sense” are:
Explicitly, there is no default storage class on bare metal.
In Kubernetes 1.5, we had “alpha” dynamic provisioning on aforementioned cloud platforms. In 1.6 we want to deprecate this alpha provisioning. In order to keep the same user experience, we need a default StorageClass instance that would provision volumes for PVCs that do not request any special class. As consequence, this default StorageClass would provision volumes for PVCs with “alpha” provisioning annotation - this annotation would be ignored in 1.6 and default storage class would be assumed.
Kubernetes will ship yaml files for default StorageClasses for each platform
cluster/addons/storage-class/<platform>/default.yaml and all these
default classes will distributed together with all other addons in
An installation tool will discover on which platform it runs and installs
appropriate yaml file into usual directory for addon manager (typically
Addon manager will deploy the storage class into installed cluster in usual way. We need to update addon manager not to overwrite any existing object in case cluster admin has manually disabled this default storage class!
AWS, GCE and OpenStack has a default StorageClass in
cluster/addons/storage-class/<platform>/ - already done in 1.5
We need a default StorageClass for vSphere, Azure and Photon in
cluster/kube-up.sh scripts need to be updated to install the storage class on appropriate platforms
kops needs to be updated to install the storage class on appropriate platforms
kubeadm needs to be updated to install the storage class on appropriate platforms (if it is cloud-provider aware)
addon manager fix: https://github.com/kubernetes/kubernetes/issues/39561