improve yaml context for storage/storage-classes.md
Signed-off-by: xin.li <xin.li@daocloud.io>
This commit is contained in:
parent
8a89acca5b
commit
9ecafa5678
|
|
@ -204,28 +204,7 @@ If `nodeName` is used in this case, the scheduler will be bypassed and PVC will
|
|||
Instead, you can use node selector for `kubernetes.io/hostname`:
|
||||
{{< /note >}}
|
||||
|
||||
```yaml
|
||||
apiVersion: v1
|
||||
kind: Pod
|
||||
metadata:
|
||||
name: task-pv-pod
|
||||
spec:
|
||||
nodeSelector:
|
||||
kubernetes.io/hostname: kube-01
|
||||
volumes:
|
||||
- name: task-pv-storage
|
||||
persistentVolumeClaim:
|
||||
claimName: task-pv-claim
|
||||
containers:
|
||||
- name: task-pv-container
|
||||
image: nginx
|
||||
ports:
|
||||
- containerPort: 80
|
||||
name: "http-server"
|
||||
volumeMounts:
|
||||
- mountPath: "/usr/share/nginx/html"
|
||||
name: task-pv-storage
|
||||
```
|
||||
{{% code_sample language="yaml" file="storage/storageclass/pod-volume-binding.yaml" %}}
|
||||
|
||||
## Allowed topologies
|
||||
|
||||
|
|
@ -237,22 +216,7 @@ This example demonstrates how to restrict the topology of provisioned volumes to
|
|||
zones and should be used as a replacement for the `zone` and `zones` parameters for the
|
||||
supported plugins.
|
||||
|
||||
```yaml
|
||||
apiVersion: storage.k8s.io/v1
|
||||
kind: StorageClass
|
||||
metadata:
|
||||
name: standard
|
||||
provisioner: kubernetes.io/example
|
||||
parameters:
|
||||
type: pd-standard
|
||||
volumeBindingMode: WaitForFirstConsumer
|
||||
allowedTopologies:
|
||||
- matchLabelExpressions:
|
||||
- key: topology.kubernetes.io/zone
|
||||
values:
|
||||
- us-central-1a
|
||||
- us-central-1b
|
||||
```
|
||||
{{% code_sample language="yaml" file="storage/storageclass/storageclass-topology.yaml" %}}
|
||||
|
||||
## Parameters
|
||||
|
||||
|
|
@ -278,44 +242,14 @@ The Kubernetes project suggests that you use the [AWS EBS](https://github.com/ku
|
|||
out-of-tree storage driver instead.
|
||||
|
||||
Here is an example StorageClass for the AWS EBS CSI driver:
|
||||
```yaml
|
||||
apiVersion: storage.k8s.io/v1
|
||||
kind: StorageClass
|
||||
metadata:
|
||||
name: ebs-sc
|
||||
provisioner: ebs.csi.aws.com
|
||||
volumeBindingMode: WaitForFirstConsumer
|
||||
parameters:
|
||||
csi.storage.k8s.io/fstype: xfs
|
||||
type: io1
|
||||
iopsPerGB: "50"
|
||||
encrypted: "true"
|
||||
tagSpecification_1: "key1=value1"
|
||||
tagSpecification_2: "key2=value2"
|
||||
allowedTopologies:
|
||||
- matchLabelExpressions:
|
||||
- key: topology.ebs.csi.aws.com/zone
|
||||
values:
|
||||
- us-east-2c
|
||||
|
||||
`tagSpecification`: Tags with this prefix are applied to dynamically provisioned EBS volumes.
|
||||
{{% code_sample language="yaml" file="storage/storageclass/storageclass-aws-ebs.yaml" %}}
|
||||
|
||||
```
|
||||
### AWS EFS
|
||||
|
||||
To configure AWS EFS storage, you can use the out-of-tree [AWS_EFS_CSI_DRIVER](https://github.com/kubernetes-sigs/aws-efs-csi-driver).
|
||||
|
||||
```yaml
|
||||
kind: StorageClass
|
||||
apiVersion: storage.k8s.io/v1
|
||||
metadata:
|
||||
name: efs-sc
|
||||
provisioner: efs.csi.aws.com
|
||||
parameters:
|
||||
provisioningMode: efs-ap
|
||||
fileSystemId: fs-92107410
|
||||
directoryPerms: "700"
|
||||
```
|
||||
{{% code_sample language="yaml" file="storage/storageclass/storageclass-aws-efs.yaml" %}}
|
||||
|
||||
- `provisioningMode`: The type of volume to be provisioned by Amazon EFS. Currently, only access point based provisioning is supported (`efs-ap`).
|
||||
- `fileSystemId`: The file system under which the access point is created.
|
||||
|
|
@ -330,17 +264,7 @@ To configure NFS storage, you can use the in-tree driver or the
|
|||
[NFS CSI driver for Kubernetes](https://github.com/kubernetes-csi/csi-driver-nfs#readme)
|
||||
(recommended).
|
||||
|
||||
```yaml
|
||||
apiVersion: storage.k8s.io/v1
|
||||
kind: StorageClass
|
||||
metadata:
|
||||
name: example-nfs
|
||||
provisioner: example.com/external-nfs
|
||||
parameters:
|
||||
server: nfs-server.example.com
|
||||
path: /share
|
||||
readOnly: "false"
|
||||
```
|
||||
{{% code_sample language="yaml" file="storage/storageclass/storageclass-nfs.yaml" %}}
|
||||
|
||||
- `server`: Server is the hostname or IP address of the NFS server.
|
||||
- `path`: Path that is exported by the NFS server.
|
||||
|
|
@ -450,25 +374,7 @@ This internal provisioner of Ceph RBD is deprecated. Please use
|
|||
[CephFS RBD CSI driver](https://github.com/ceph/ceph-csi).
|
||||
{{< /note >}}
|
||||
|
||||
```yaml
|
||||
apiVersion: storage.k8s.io/v1
|
||||
kind: StorageClass
|
||||
metadata:
|
||||
name: fast
|
||||
provisioner: kubernetes.io/rbd
|
||||
parameters:
|
||||
monitors: 10.16.153.105:6789
|
||||
adminId: kube
|
||||
adminSecretName: ceph-secret
|
||||
adminSecretNamespace: kube-system
|
||||
pool: kube
|
||||
userId: kube
|
||||
userSecretName: ceph-secret-user
|
||||
userSecretNamespace: default
|
||||
fsType: ext4
|
||||
imageFormat: "2"
|
||||
imageFeatures: "layering"
|
||||
```
|
||||
{{% code_sample language="yaml" file="storage/storageclass/storageclass-ceph-rbd.yaml" %}}
|
||||
|
||||
- `monitors`: Ceph monitors, comma delimited. This parameter is required.
|
||||
- `adminId`: Ceph client ID that is capable of creating images in the pool.
|
||||
|
|
@ -512,17 +418,7 @@ storage driver instead.
|
|||
|
||||
### Azure File (deprecated) {#azure-file}
|
||||
|
||||
```yaml
|
||||
apiVersion: storage.k8s.io/v1
|
||||
kind: StorageClass
|
||||
metadata:
|
||||
name: azurefile
|
||||
provisioner: kubernetes.io/azure-file
|
||||
parameters:
|
||||
skuName: Standard_LRS
|
||||
location: eastus
|
||||
storageAccount: azure_storage_account_name
|
||||
```
|
||||
{{% code_sample language="yaml" file="storage/storageclass/storageclass-azure-file.yaml" %}}
|
||||
|
||||
- `skuName`: Azure storage account SKU tier. Default is empty.
|
||||
- `location`: Azure storage account location. Default is empty.
|
||||
|
|
@ -552,17 +448,7 @@ be read by other users.
|
|||
|
||||
### Portworx volume (deprecated) {#portworx-volume}
|
||||
|
||||
```yaml
|
||||
apiVersion: storage.k8s.io/v1
|
||||
kind: StorageClass
|
||||
metadata:
|
||||
name: portworx-io-priority-high
|
||||
provisioner: kubernetes.io/portworx-volume
|
||||
parameters:
|
||||
repl: "1"
|
||||
snap_interval: "70"
|
||||
priority_io: "high"
|
||||
```
|
||||
{{% code_sample language="yaml" file="storage/storageclass/storageclass-portworx-volume.yaml" %}}
|
||||
|
||||
- `fs`: filesystem to be laid out: `none/xfs/ext4` (default: `ext4`).
|
||||
- `block_size`: block size in Kbytes (default: `32`).
|
||||
|
|
@ -586,14 +472,7 @@ parameters:
|
|||
|
||||
### Local
|
||||
|
||||
```yaml
|
||||
apiVersion: storage.k8s.io/v1
|
||||
kind: StorageClass
|
||||
metadata:
|
||||
name: local-storage
|
||||
provisioner: kubernetes.io/no-provisioner
|
||||
volumeBindingMode: WaitForFirstConsumer
|
||||
```
|
||||
{{% code_sample language="yaml" file="storage/storageclass/storageclass-local.yaml" %}}
|
||||
|
||||
Local volumes do not support dynamic provisioning in Kubernetes {{< skew currentVersion >}};
|
||||
however a StorageClass should still be created to delay volume binding until a Pod is actually
|
||||
|
|
|
|||
|
|
@ -0,0 +1,20 @@
|
|||
apiVersion: v1
|
||||
kind: Pod
|
||||
metadata:
|
||||
name: task-pv-pod
|
||||
spec:
|
||||
nodeSelector:
|
||||
kubernetes.io/hostname: kube-01
|
||||
volumes:
|
||||
- name: task-pv-storage
|
||||
persistentVolumeClaim:
|
||||
claimName: task-pv-claim
|
||||
containers:
|
||||
- name: task-pv-container
|
||||
image: nginx
|
||||
ports:
|
||||
- containerPort: 80
|
||||
name: "http-server"
|
||||
volumeMounts:
|
||||
- mountPath: "/usr/share/nginx/html"
|
||||
name: task-pv-storage
|
||||
|
|
@ -0,0 +1,20 @@
|
|||
apiVersion: storage.k8s.io/v1
|
||||
kind: StorageClass
|
||||
metadata:
|
||||
name: ebs-sc
|
||||
provisioner: ebs.csi.aws.com
|
||||
volumeBindingMode: WaitForFirstConsumer
|
||||
parameters:
|
||||
csi.storage.k8s.io/fstype: xfs
|
||||
type: io1
|
||||
iopsPerGB: "50"
|
||||
encrypted: "true"
|
||||
tagSpecification_1: "key1=value1"
|
||||
tagSpecification_2: "key2=value2"
|
||||
allowedTopologies:
|
||||
- matchLabelExpressions:
|
||||
- key: topology.ebs.csi.aws.com/zone
|
||||
values:
|
||||
- us-east-2c
|
||||
|
||||
# `tagSpecification`: Tags with this prefix are applied to dynamically provisioned EBS volumes.
|
||||
|
|
@ -0,0 +1,9 @@
|
|||
kind: StorageClass
|
||||
apiVersion: storage.k8s.io/v1
|
||||
metadata:
|
||||
name: efs-sc
|
||||
provisioner: efs.csi.aws.com
|
||||
parameters:
|
||||
provisioningMode: efs-ap
|
||||
fileSystemId: fs-92107410
|
||||
directoryPerms: "700"
|
||||
|
|
@ -0,0 +1,9 @@
|
|||
apiVersion: storage.k8s.io/v1
|
||||
kind: StorageClass
|
||||
metadata:
|
||||
name: azurefile
|
||||
provisioner: kubernetes.io/azure-file
|
||||
parameters:
|
||||
skuName: Standard_LRS
|
||||
location: eastus
|
||||
storageAccount: azure_storage_account_name # example value
|
||||
|
|
@ -0,0 +1,17 @@
|
|||
apiVersion: storage.k8s.io/v1
|
||||
kind: StorageClass
|
||||
metadata:
|
||||
name: fast
|
||||
provisioner: kubernetes.io/rbd # This provisioner is deprecated
|
||||
parameters:
|
||||
monitors: 198.19.254.105:6789
|
||||
adminId: kube
|
||||
adminSecretName: ceph-secret
|
||||
adminSecretNamespace: kube-system
|
||||
pool: kube
|
||||
userId: kube
|
||||
userSecretName: ceph-secret-user
|
||||
userSecretNamespace: default
|
||||
fsType: ext4
|
||||
imageFormat: "2"
|
||||
imageFeatures: "layering"
|
||||
|
|
@ -0,0 +1,6 @@
|
|||
apiVersion: storage.k8s.io/v1
|
||||
kind: StorageClass
|
||||
metadata:
|
||||
name: local-storage
|
||||
provisioner: kubernetes.io/no-provisioner # indicates that this StorageClass does not support automatic provisioning
|
||||
volumeBindingMode: WaitForFirstConsumer
|
||||
|
|
@ -0,0 +1,9 @@
|
|||
apiVersion: storage.k8s.io/v1
|
||||
kind: StorageClass
|
||||
metadata:
|
||||
name: example-nfs
|
||||
provisioner: example.com/external-nfs
|
||||
parameters:
|
||||
server: nfs-server.example.com
|
||||
path: /share
|
||||
readOnly: "false"
|
||||
|
|
@ -0,0 +1,9 @@
|
|||
apiVersion: storage.k8s.io/v1
|
||||
kind: StorageClass
|
||||
metadata:
|
||||
name: portworx-io-priority-high
|
||||
provisioner: kubernetes.io/portworx-volume # This provisioner is deprecated
|
||||
parameters:
|
||||
repl: "1"
|
||||
snap_interval: "70"
|
||||
priority_io: "high"
|
||||
|
|
@ -0,0 +1,14 @@
|
|||
apiVersion: storage.k8s.io/v1
|
||||
kind: StorageClass
|
||||
metadata:
|
||||
name: standard
|
||||
provisioner: example.com/example
|
||||
parameters:
|
||||
type: pd-standard
|
||||
volumeBindingMode: WaitForFirstConsumer
|
||||
allowedTopologies:
|
||||
- matchLabelExpressions:
|
||||
- key: topology.kubernetes.io/zone
|
||||
values:
|
||||
- us-central-1a
|
||||
- us-central-1b
|
||||
Loading…
Reference in New Issue