|
|
|
@@ -191,6 +191,94 @@ parameters:
|
|
|
|
|
* `userId`: Ceph client ID that is used to map the RBD image. Default is the same as `adminId`.
|
|
|
|
|
* `userSecretName`: The name of Ceph Secret for `userId` to map RBD image. It must exist in the same namespace as PVCs. It is required.
|
|
|
|
|
|
|
|
|
|
#### Quobyte
|
|
|
|
|
|
|
|
|
|
<!-- BEGIN MUNGE: EXAMPLE quobyte/quobyte-storage-class.yaml -->
|
|
|
|
|
|
|
|
|
|
```yaml
|
|
|
|
|
apiVersion: storage.k8s.io/v1beta1
|
|
|
|
|
kind: StorageClass
|
|
|
|
|
metadata:
|
|
|
|
|
name: slow
|
|
|
|
|
provisioner: kubernetes.io/quobyte
|
|
|
|
|
parameters:
|
|
|
|
|
quobyteAPIServer: "http://138.68.74.142:7860"
|
|
|
|
|
registry: "138.68.74.142:7861"
|
|
|
|
|
adminSecretName: "quobyte-admin-secret"
|
|
|
|
|
adminSecretNamespace: "kube-system"
|
|
|
|
|
user: "root"
|
|
|
|
|
group: "root"
|
|
|
|
|
quobyteConfig: "BASE"
|
|
|
|
|
quobyteTenant: "DEFAULT"
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
[Download example](quobyte/quobyte-storage-class.yaml?raw=true)
|
|
|
|
|
<!-- END MUNGE: EXAMPLE quobyte/quobyte-storage-class.yaml -->
|
|
|
|
|
|
|
|
|
|
* **quobyteAPIServer** API Server of Quobyte in the format http(s)://api-server:7860
|
|
|
|
|
* **registry** Quobyte registry to use to mount the volume. You can specifiy the registry as <host>:<port> pair or if you want to specify multiple registries you just have to put a comma between them e.q. <host1>:<port>,<host2>:<port>,<host3>:<port>. The host can be an IP address or if you have a working DNS you can also provide the DNS names.
|
|
|
|
|
* **adminSecretName** secret that holds information about the Quobyte user and the password to authenticate agains the API server.
|
|
|
|
|
* **adminSecretNamespace** The namespace for **adminSecretName**. Default is `default`.
|
|
|
|
|
* **user** maps all access to this user. Default is `root`.
|
|
|
|
|
* **group** maps all access to this group. Default is `nfsnobody`.
|
|
|
|
|
* **quobyteConfig** use the specified configuration to create the volume. You can create a new configuration or modify an existing one with the Web console or the quobyte CLI. Default is `BASE`
|
|
|
|
|
* **quobyteTenant** use the specified tenant ID to create/delete the volume. This Quobyte tenant has to be already present in Quobyte. Default is `DEFAULT`
|
|
|
|
|
|
|
|
|
|
First create Quobyte admin's Secret in the system namespace. Here the Secret is created in `kube-system`:
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
$ kubectl create -f examples/experimental/persistent-volume-provisioning/quobyte/quobyte-admin-secret.yaml --namespace=kube-system
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
Then create the Quobyte storage class:
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
$ kubectl create -f examples/experimental/persistent-volume-provisioning/quobyte/quobyte-storage-class.yaml
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
Now create a PVC
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
$ kubectl create -f examples/experimental/persistent-volume-provisioning/claim1.json
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
Check the created PVC:
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
$ kubectl describe pvc
|
|
|
|
|
Name: claim1
|
|
|
|
|
Namespace: default
|
|
|
|
|
Status: Bound
|
|
|
|
|
Volume: pvc-bdb82652-694a-11e6-b811-080027242396
|
|
|
|
|
Labels: <none>
|
|
|
|
|
Capacity: 3Gi
|
|
|
|
|
Access Modes: RWO
|
|
|
|
|
No events.
|
|
|
|
|
|
|
|
|
|
$ kubectl describe pv
|
|
|
|
|
Name: pvc-bdb82652-694a-11e6-b811-080027242396
|
|
|
|
|
Labels: <none>
|
|
|
|
|
Status: Bound
|
|
|
|
|
Claim: default/claim1
|
|
|
|
|
Reclaim Policy: Delete
|
|
|
|
|
Access Modes: RWO
|
|
|
|
|
Capacity: 3Gi
|
|
|
|
|
Message:
|
|
|
|
|
Source:
|
|
|
|
|
Type: Quobyte (a Quobyte mount on the host that shares a pod's lifetime)
|
|
|
|
|
Registry: 138.68.79.14:7861
|
|
|
|
|
Volume: kubernetes-dynamic-pvc-bdb97c58-694a-11e6-91b6-080027242396
|
|
|
|
|
ReadOnly: false
|
|
|
|
|
No events.
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
Create a Pod to use the PVC:
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
$ kubectl create -f examples/experimental/persistent-volume-provisioning/quobyte/example-pod.yaml
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
### User provisioning requests
|
|
|
|
|
|
|
|
|
|
Users request dynamically provisioned storage by including a storage class in their `PersistentVolumeClaim`.
|
|
|
|
|