• 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
..
admin Loading commit data...
api-reference Loading commit data...
design Loading commit data...
devel Loading commit data...
getting-started-guides Loading commit data...
images Loading commit data...
man/man1 Loading commit data...
proposals Loading commit data...
user-guide Loading commit data...
yaml/kubectl Loading commit data...
OWNERS Loading commit data...
README.md Loading commit data...
api.md Loading commit data...
reporting-security-issues.md Loading commit data...
roadmap.md Loading commit data...
troubleshooting.md Loading commit data...
warning.png Loading commit data...
whatisk8s.md Loading commit data...