Raw block volume GA (#19338)

* Raw block volume GA

Feature BlockVolume reaches GA in 1.17

* Add volumeMode overview
This commit is contained in:
Jan Šafránek
2020-03-16 12:10:35 +01:00
committed by GitHub
parent 25a084a6e4
commit 94fbc12a6b
3 changed files with 32 additions and 27 deletions
@@ -319,12 +319,24 @@ Currently, storage size is the only resource that can be set or requested. Futu
### Volume Mode ### Volume Mode
{{< feature-state for_k8s_version="v1.13" state="beta" >}} {{< feature-state for_k8s_version="v1.18" state="stable" >}}
Prior to Kubernetes 1.9, all volume plugins created a filesystem on the persistent volume. Kubernetes supports two `volumeModes` of PersistentVolumes: `Filesystem` and `Block`.
Now, you can set the value of `volumeMode` to `block` to use a raw block device, or `filesystem`
to use a filesystem. `filesystem` is the default if the value is omitted. This is an optional API `volumeMode` is an optional API parameter.
parameter. `Filesystem` is the default mode used when `volumeMode` parameter is omitted.
A volume with `volumeMode: Filesystem` is *mounted* into Pods into a directory. If the volume
is backed by a block device and the device is empty, Kuberneretes creates a filesystem
on the device before mounting it for the first time.
You can set the value of `volumeMode` to `Block` to use a volume as a raw block device.
Such volume is presented into a Pod as a block device, without any filesystem on it.
This mode is useful to provide a Pod the fastest possible way to access a volume, without
any filesystem layer between the Pod and the volume. On the other hand, the application
running in the Pod must know how to handle a raw block device.
See [Raw Block Volume Support](docs/concepts/storage/persistent-volumes/#raw-block-volume-support)
for an example on how to use a volume with `volumeMode: Block` in a Pod.
### Access Modes ### Access Modes
@@ -559,24 +571,21 @@ spec:
## Raw Block Volume Support ## Raw Block Volume Support
{{< feature-state for_k8s_version="v1.13" state="beta" >}} {{< feature-state for_k8s_version="v1.18" state="stable" >}}
The following volume plugins support raw block volumes, including dynamic provisioning where The following volume plugins support raw block volumes, including dynamic provisioning where
applicable: applicable:
* AWSElasticBlockStore * AWSElasticBlockStore
* AzureDisk * AzureDisk
* CSI
* FC (Fibre Channel) * FC (Fibre Channel)
* GCEPersistentDisk * GCEPersistentDisk
* iSCSI * iSCSI
* Local volume * Local volume
* OpenStack Cinder
* RBD (Ceph Block Device) * RBD (Ceph Block Device)
* VsphereVolume (alpha) * VsphereVolume
{{< note >}}
Only FC and iSCSI volumes supported raw block volumes in Kubernetes 1.9.
Support for the additional plugins was added in 1.10.
{{< /note >}}
### Persistent Volumes using a Raw Block Volume ### Persistent Volumes using a Raw Block Volume
+5 -11
View File
@@ -1302,19 +1302,13 @@ persistent volume:
#### CSI raw block volume support #### CSI raw block volume support
{{< feature-state for_k8s_version="v1.14" state="beta" >}} {{< feature-state for_k8s_version="v1.18" state="stable" >}}
Starting with version 1.11, CSI introduced support for raw block volumes, which Vendors with external CSI drivers can implement raw block volumes support
relies on the raw block volume feature that was introduced in a previous version of in Kubernetes workloads.
Kubernetes. This feature will make it possible for vendors with external CSI drivers to
implement raw block volumes support in Kubernetes workloads.
CSI block volume support is feature-gated, but enabled by default. The two You can [setup your PV/PVC with raw block volume support](/docs/concepts/storage/persistent-volumes/#raw-block-volume-support)
feature gates which must be enabled for this feature are `BlockVolume` and as usual, without any CSI specific changes.
`CSIBlockVolume`.
Learn how to
[setup your PV/PVC with raw block volume support](/docs/concepts/storage/persistent-volumes/#raw-block-volume-support).
#### CSI ephemeral volumes #### CSI ephemeral volumes
@@ -54,15 +54,11 @@ different Kubernetes components.
| `APIResponseCompression` | `false` | Alpha | 1.7 | | | `APIResponseCompression` | `false` | Alpha | 1.7 | |
| `AppArmor` | `true` | Beta | 1.4 | | | `AppArmor` | `true` | Beta | 1.4 | |
| `BalanceAttachedNodeVolumes` | `false` | Alpha | 1.11 | | | `BalanceAttachedNodeVolumes` | `false` | Alpha | 1.11 | |
| `BlockVolume` | `false` | Alpha | 1.9 | 1.12 |
| `BlockVolume` | `true` | Beta | 1.13 | - |
| `BoundServiceAccountTokenVolume` | `false` | Alpha | 1.13 | | | `BoundServiceAccountTokenVolume` | `false` | Alpha | 1.13 | |
| `CPUManager` | `false` | Alpha | 1.8 | 1.9 | | `CPUManager` | `false` | Alpha | 1.8 | 1.9 |
| `CPUManager` | `true` | Beta | 1.10 | | | `CPUManager` | `true` | Beta | 1.10 | |
| `CRIContainerLogRotation` | `false` | Alpha | 1.10 | 1.10 | | `CRIContainerLogRotation` | `false` | Alpha | 1.10 | 1.10 |
| `CRIContainerLogRotation` | `true` | Beta| 1.11 | | | `CRIContainerLogRotation` | `true` | Beta| 1.11 | |
| `CSIBlockVolume` | `false` | Alpha | 1.11 | 1.13 |
| `CSIBlockVolume` | `true` | Beta | 1.14 | |
| `CSIInlineVolume` | `false` | Alpha | 1.15 | 1.15 | | `CSIInlineVolume` | `false` | Alpha | 1.15 | 1.15 |
| `CSIInlineVolume` | `true` | Beta | 1.16 | - | | `CSIInlineVolume` | `true` | Beta | 1.16 | - |
| `CSIMigration` | `false` | Alpha | 1.14 | 1.16 | | `CSIMigration` | `false` | Alpha | 1.14 | 1.16 |
@@ -174,6 +170,12 @@ different Kubernetes components.
| `AffinityInAnnotations` | - | Deprecated | 1.8 | - | | `AffinityInAnnotations` | - | Deprecated | 1.8 | - |
| `AllowExtTrafficLocalEndpoints` | `false` | Beta | 1.4 | 1.6 | | `AllowExtTrafficLocalEndpoints` | `false` | Beta | 1.4 | 1.6 |
| `AllowExtTrafficLocalEndpoints` | `true` | GA | 1.7 | - | | `AllowExtTrafficLocalEndpoints` | `true` | GA | 1.7 | - |
| `BlockVolume` | `false` | Alpha | 1.9 | 1.12 |
| `BlockVolume` | `true` | Beta | 1.13 | 1.17 |
| `BlockVolume` | `true` | GA | 1.18 | - |
| `CSIBlockVolume` | `false` | Alpha | 1.11 | 1.13 |
| `CSIBlockVolume` | `true` | Beta | 1.14 | 1.17 |
| `CSIBlockVolume` | `true` | GA | 1.18 | - |
| `CSIDriverRegistry` | `false` | Alpha | 1.12 | 1.13 | | `CSIDriverRegistry` | `false` | Alpha | 1.12 | 1.13 |
| `CSIDriverRegistry` | `true` | Beta | 1.14 | 1.17 | | `CSIDriverRegistry` | `true` | Beta | 1.14 | 1.17 |
| `CSIDriverRegistry` | `true` | GA | 1.18 | | | `CSIDriverRegistry` | `true` | GA | 1.18 | |