diff options
| author | Jan Safranek <jsafrane@redhat.com> | 2017-01-24 13:50:36 +0100 |
|---|---|---|
| committer | Jan Safranek <jsafrane@redhat.com> | 2017-01-24 13:50:36 +0100 |
| commit | 7db0fb1b80f0ce521ab22bb1d80f5aaca4900085 (patch) | |
| tree | 41ace2ef945c6a37038f29712edfa2a6a2c6dd11 | |
| parent | 307ed0ea3dfc636fb8b44ff8fcda407138aeedae (diff) | |
Proposal for deployment of default StorageClass
| -rw-r--r-- | contributors/design-proposals/default-storage-class.md | 69 |
1 files changed, 69 insertions, 0 deletions
diff --git a/contributors/design-proposals/default-storage-class.md b/contributors/design-proposals/default-storage-class.md new file mode 100644 index 00000000..c454ce62 --- /dev/null +++ b/contributors/design-proposals/default-storage-class.md @@ -0,0 +1,69 @@ +# Deploying a default StorageClass during installation + +## Goal + +Usual Kubernetes installation tools should deploy a default StorageClass +where it makes sense. + +"*Usual installation tools*" are: + +* cluster/kube-up.sh +* kops +* kubeadm + +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: + +* AWS +* Azure +* GCE +* Photon +* OpenStack +* vSphere + +Explicitly, there is no default storage class on bare metal. + +## Motivation + +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. + +## Design + +1. Kubernetes will ship yaml files for default StorageClasses for each platform + as `cluster/addons/storage-class/<platform>/default.yaml` and all these + default classes will distributed together with all other addons in + `kubernetes.tar.gz`. + +2. An installation tool will discover on which platform it runs and installs + appropriate yaml file into usual directory for addon manager (typically + `/etc/kubernetes/addons/storage-class/default.yaml`). + +3. 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! + +## Implementation + +* 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/addons/storage-class/<platform>` + +* cluster/kube-up.sh scripts need to be updated to install the storage class on appropriate platforms + * Already done on GCE, AWS and OpenStack. + +* kops needs to be updated to install the storage class on appropriate platforms + * already done for kops on AWS and kops does not support other platforms yet. + +* 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 |
