• Kubernetes Submit Queue's avatar
    Merge pull request #29006 from jsafrane/dynprov2 · 9d2a5fe5
    Kubernetes Submit Queue authored
    Automatic merge from submit-queue
    
    Implement dynamic provisioning (beta) of PersistentVolumes via StorageClass
    
    Implemented according to PR #26908. There are several patches in this PR with one huge code regen inside.
    
    * Please review the API changes (the first patch) carefully, sometimes I don't know what the code is doing...
    
    * `PV.Spec.Class` and `PVC.Spec.Class` is not implemented, use annotation `volume.alpha.kubernetes.io/storage-class`
    
    * See e2e test and integration test changes - Kubernetes won't provision a thing without explicit configuration of at least one `StorageClass` instance!
    
    * Multiple provisioning volume plugins can coexist together, e.g. HostPath and AWS EBS. This is important for Gluster and RBD provisioners in #25026
    
    * Contradicting the proposal, `claim.Selector` and `volume.alpha.kubernetes.io/storage-class` annotation are **not** mutually exclusive. They're both used for matching existing PVs. However, only `volume.alpha.kubernetes.io/storage-class` is used for provisioning, configuration of provisioning with `Selector` is left for (near) future.
    
    * Documentation is missing. Can please someone write some while I am out?
    
    For now, AWS volume plugin accepts classes with these parameters:
    
    ```
    kind: StorageClass
    metadata:
      name: slow
    provisionerType: kubernetes.io/aws-ebs
    provisionerParameters:
      type: io1
      zone: us-east-1d
      iopsPerGB: 10
    ```
    
    * parameters are case-insensitive
    * `type`: `io1`, `gp2`, `sc1`, `st1`. See AWS docs for details
    * `iopsPerGB`: only for `io1` volumes. I/O operations per second per GiB. AWS volume plugin multiplies this with size of requested volume to compute IOPS of the volume and caps it at 20 000 IOPS (maximum supported by AWS, see AWS docs).
    * of course, the plugin will use some defaults when a parameter is omitted in a `StorageClass` instance (`gp2` in the same zone as in 1.3).
    
    GCE:
    
    ```
    apiVersion: extensions/v1beta1
    kind: StorageClass
    metadata:
      name: slow
    provisionerType: kubernetes.io/gce-pd
    provisionerParameters:
      type: pd-standard
      zone: us-central1-a
    ```
    
    * `type`: `pd-standard` or `pd-ssd`
    * `zone`: GCE zone
    * of course, the plugin will use some defaults when a parameter is omitted in a `StorageClass` instance (SSD in the same zone as in 1.3 ?).
    
    
    No OpenStack/Cinder yet
    
    @kubernetes/sig-storage
    9d2a5fe5
Name
Last commit
Last update
.github Loading commit data...
Godeps Loading commit data...
api/swagger-spec Loading commit data...
build Loading commit data...
cluster Loading commit data...
cmd Loading commit data...
contrib Loading commit data...
docs Loading commit data...
examples Loading commit data...
federation Loading commit data...
hack Loading commit data...
hooks Loading commit data...
logo Loading commit data...
pkg Loading commit data...
plugin Loading commit data...
release Loading commit data...
staging/src/k8s.io/client-go Loading commit data...
test Loading commit data...
third_party Loading commit data...
vendor Loading commit data...
www Loading commit data...
.generated_docs Loading commit data...
.gitignore Loading commit data...
CHANGELOG.md Loading commit data...
CONTRIB.md Loading commit data...
CONTRIBUTING.md Loading commit data...
DESIGN.md Loading commit data...
LICENSE Loading commit data...
Makefile Loading commit data...
Makefile.generated_files Loading commit data...
OWNERS Loading commit data...
README.md Loading commit data...
Vagrantfile Loading commit data...
code-of-conduct.md Loading commit data...
labels.yaml Loading commit data...