k3s/pkg/volume
Kubernetes Submit Queue 9d2a5fe5e8 Merge pull request #29006 from jsafrane/dynprov2
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
2016-08-18 09:56:16 -07:00
..
aws_ebs AWS changes for new provisioning model 2016-08-18 10:36:49 +02:00
azure_file This change supports robust kubelet volume cleanup 2016-08-15 11:29:15 -07:00
cephfs This change supports robust kubelet volume cleanup 2016-08-15 11:29:15 -07:00
cinder Prevent device unmount from deleting dir on err 2016-08-15 16:58:31 -07:00
configmap Add mode permission bits to configmap, secrets and downwardAPI 2016-08-17 14:44:41 -04:00
downwardapi Check return value from volume.SetVolumeOwnership() in downwardAPI 2016-08-17 14:44:42 -04:00
empty_dir This change supports robust kubelet volume cleanup 2016-08-15 11:29:15 -07:00
fc This change supports robust kubelet volume cleanup 2016-08-15 11:29:15 -07:00
flexvolume This change supports robust kubelet volume cleanup 2016-08-15 11:29:15 -07:00
flocker This change supports robust kubelet volume cleanup 2016-08-15 11:29:15 -07:00
gce_pd GCE changes for the new provisioning model 2016-08-18 10:36:50 +02:00
git_repo This change supports robust kubelet volume cleanup 2016-08-15 11:29:15 -07:00
glusterfs Merge pull request #27970 from jingxu97/restartKubelet-6-22 2016-08-15 13:48:43 -07:00
host_path Dynamic provisioning V2 controller, provisioners, docs and tests. 2016-08-18 10:36:49 +02:00
iscsi Merge pull request #27970 from jingxu97/restartKubelet-6-22 2016-08-15 13:48:43 -07:00
nfs This change supports robust kubelet volume cleanup 2016-08-15 11:29:15 -07:00
rbd This change supports robust kubelet volume cleanup 2016-08-15 11:29:15 -07:00
secret Add mode permission bits to configmap, secrets and downwardAPI 2016-08-17 14:44:41 -04:00
testing Fix default resource limits (node capacities) for downward api volumes 2016-08-16 14:41:17 -04:00
util Merge pull request #28936 from rata/secret-configmap-file-mode 2016-08-18 05:59:48 -07:00
vsphere_volume This change supports robust kubelet volume cleanup 2016-08-15 11:29:15 -07:00
OWNERS Move blunderbuss assignees into tree 2016-03-02 20:46:32 -05:00
doc.go Use Go canonical import paths 2016-07-16 13:48:21 -04:00
metrics_cached.go Remove "All rights reserved" from all the headers. 2016-06-29 17:47:36 -07:00
metrics_du.go Remove "All rights reserved" from all the headers. 2016-06-29 17:47:36 -07:00
metrics_du_test.go Remove "All rights reserved" from all the headers. 2016-06-29 17:47:36 -07:00
metrics_nil.go Remove "All rights reserved" from all the headers. 2016-06-29 17:47:36 -07:00
metrics_nil_test.go Remove "All rights reserved" from all the headers. 2016-06-29 17:47:36 -07:00
metrics_statfs.go Remove "All rights reserved" from all the headers. 2016-06-29 17:47:36 -07:00
plugins.go Dynamic provisioning V2 controller, provisioners, docs and tests. 2016-08-18 10:36:49 +02:00
plugins_test.go Print/log pointers of structs with %#v instead of %+v 2016-08-01 22:27:56 +02:00
util.go Merge pull request #29619 from dims/fix-issue-23163 2016-08-06 01:44:15 -07:00
util_test.go Remove "All rights reserved" from all the headers. 2016-06-29 17:47:36 -07:00
volume.go Fix typos in volume.go 2016-07-11 12:32:32 +02:00
volume_linux.go Remove "All rights reserved" from all the headers. 2016-06-29 17:47:36 -07:00
volume_unsupported.go Remove "All rights reserved" from all the headers. 2016-06-29 17:47:36 -07:00