-
Notifications
You must be signed in to change notification settings - Fork 14.6k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
updates for block volumes #6554
Conversation
Deploy preview ready! Built with commit cbe2ba4 https://deploy-preview-6554--kubernetes-io-master-staging.netlify.com |
59164b3
to
cbe2ba4
Compare
@zacharysarah New PR (I closed the last one) please let me know if you need me to update anything for 1.9 specifically |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Please propose to release-1.9 branch
@@ -417,6 +429,86 @@ spec: | |||
|
|||
`PersistentVolumes` binds are exclusive, and since `PersistentVolumeClaims` are namespaced objects, mounting claims with "Many" modes (`ROX`, `RWX`) is only possible within one namespace. | |||
|
|||
## Raw Block Volume Support | |||
|
|||
Static provisioning support for Raw Block Volumes is included as an alpha feature for v1.9. With this change are some new API labels that need to be used to facilitate this functionality. Currently, Fibre Channel is the only supported plugin for this feature. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Please don't refer to the new resource field(s) as label(s). It is confusing because ”label“ in Kubernetes is a special term.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Ah, yes. I can see how that can be confusing. I'll update. Thanks, @tengqm
@erinboyd 👋 Base branch changed to |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Good start! ✨ Some minor edits for clarity and format.
@@ -203,6 +206,10 @@ Generally, a PV will have a specific storage capacity. This is set using the PV | |||
|
|||
Currently, storage size is the only resource that can be set or requested. Future attributes may include IOPS, throughput, etc. | |||
|
|||
### Volume Mode | |||
|
|||
Prior to v1.9, the default behavior for all volume plugins was to create a filesystem on the persistent volume. With v1.9, the user can specify a volumeMode which will now support raw block devices in addition to fileystems. This feature is alpha in v1.9 and may change in the future. Valid values for volumeMode are "Filesystem" or "Block". If left unspecified it will default to "Filesystem" internally. This is an optional API parameter. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Prior to v1.9, the default behavior for all volume plugins was to create a filesystem on the persistent volume. With v1.9, the user can specify a volumeMode which will now support raw block devices in addition to file systems. Valid values for volumeMode are "Filesystem" or "Block". If left unspecified, volumeMode defaults to "Filesystem" internally. This is an optional API parameter.
**Note:** This feature is alpha in v1.9 and may change in the future.
{: .note}
So:
Prior to v1.9, the default behavior for all volume plugins was to create a filesystem on the persistent volume. With v1.9, the user can specify a volumeMode which will now support raw block devices in addition to file systems. Valid values for volumeMode are "Filesystem" or "Block". If left unspecified, volumeMode defaults to "Filesystem" internally. This is an optional API parameter.
Note: This feature is alpha in v1.9 and may change in the future.
{: .note}
``` | ||
#### Volume Devices | ||
|
||
Since we aren't mounting a filesystem, when using a raw block device for a pod we specify the device path in the container rather than a mount path. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
**Note:** When mounting a raw block device for a Pod instead of a file system, specify the device path in the container instead of a mount path.
{: .note}
So:
Note: When mounting a raw block device for a Pod instead of a file system, specify the device path in the container instead of a mount path.
{: .note}
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'd prefer to use 'attaching' for raw block device. Mounting a raw block device is little bit strange expression.
When attaching a raw block device for a Pod instead of mounting a file system, specify the device path in the container instead of a mount path.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
But will attaching be confused with volume attaching
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
agree.
In the docker document, they use 'add' for device. Do we use same term or mounting is ok for this case?
--device | | Add a host device to the container
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Add is probably the best option
persistentVolumeClaim: | ||
claimName: block-pvc | ||
``` | ||
#### Volume Devices |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Delete this heading.
|
||
### Binding Block Volumes | ||
|
||
If a user requests a raw block volume by indicating this using the volumeMode label in the PersistentVolumeClaim spec, the binding rules differ slighty from previous releases that didn't consider this mode as part of the spec. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
If a user requests a raw block volume using the volumeMode label in the PersistentVolumeClaim spec, the binding rules differ slighlyty from previous releases that didn't consider this mode as part of the spec.
So:
If a user requests a raw block volume using the volumeMode label in the PersistentVolumeClaim spec, the binding rules differ slighlyty from previous releases that didn't consider this mode as part of the spec.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Add a blank line after this paragraph.
### Binding Block Volumes | ||
|
||
If a user requests a raw block volume by indicating this using the volumeMode label in the PersistentVolumeClaim spec, the binding rules differ slighty from previous releases that didn't consider this mode as part of the spec. | ||
Listed is a table of possible combinations the user and admin might specify for requesting a raw block device. The table indicates if the volume will be bound or not given the combinations: |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The following table shows possible combinations a user and admin might specify for requesting a raw block device. The table indicates if the volume will be bound or not for a given combinations:
So:
The following table shows possible combinations a user and admin might specify for requesting a raw block device. The table indicates if the volume will be bound or not for a given combinations:
|
||
If a user requests a raw block volume by indicating this using the volumeMode label in the PersistentVolumeClaim spec, the binding rules differ slighty from previous releases that didn't consider this mode as part of the spec. | ||
Listed is a table of possible combinations the user and admin might specify for requesting a raw block device. The table indicates if the volume will be bound or not given the combinations: | ||
Volume binding matrix for statically provisioned volumes: |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Delete this line.
| Filesystem | Block | NO BIND | | ||
| Filesystem | unspecified | BIND | | ||
|
||
Please note for alpha release only statically provisioned volumes are supported thus care should be taken by the administrator to consider these value when working with raw block devices. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
**Note:** Only statically provisioned volumes are supported for alpha release. Administrators should take care to consider these values when working with raw block devices.
{: .note}
So:
Note: Only statically provisioned volumes are supported for alpha release. Administrators should take care to consider these values when working with raw block devices.
{: .note}
cbe2ba4
to
d089d6b
Compare
Deploy preview ready! Built with commit 5a41dcd https://deploy-preview-6554--kubernetes-io-vnext-staging.netlify.com |
d089d6b
to
5a41dcd
Compare
@zacharysarah @mtanino @msau42 Updated. Please review |
@tengqm 👋 It looks like the changes meet your review requirements. Can you please switch your review to approval? |
lgtm from my side. |
@@ -203,6 +206,13 @@ Generally, a PV will have a specific storage capacity. This is set using the PV | |||
|
|||
Currently, storage size is the only resource that can be set or requested. Future attributes may include IOPS, throughput, etc. | |||
|
|||
### Volume Mode | |||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Can you add this alpha tag to the beginning of each new section? Then you don't need the alpha note.
{% assign for_k8s_version="v1.9" %}{% include feature-state-alpha.md %}
@@ -335,6 +346,10 @@ spec: | |||
|
|||
Claims use the same conventions as volumes when requesting storage with specific access modes. | |||
|
|||
### Volume Modes | |||
|
|||
Claims use the same convention as volumes to indicates the consumption of the volume as either a filesystem or block device. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
to indicate
@@ -417,6 +432,87 @@ spec: | |||
|
|||
`PersistentVolumes` binds are exclusive, and since `PersistentVolumeClaims` are namespaced objects, mounting claims with "Many" modes (`ROX`, `RWX`) is only possible within one namespace. | |||
|
|||
## Raw Block Volume Support | |||
|
|||
Static provisioning support for Raw Block Volumes is included as an alpha feature for v1.9. With this change are some new API fields that need to be used to facilitate this functionality. Currently, Fibre Channel is the only supported plugin for this feature. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Second sentence:
Raw block volumes can be specified through new API fields.
|
||
### Binding Block Volumes | ||
|
||
If a user requests a raw block volume by indicating this using the volumeMode field in the PersistentVolumeClaim spec, the binding rules differ slighty from previous releases that didn't consider this mode as part of the spec. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
If a user requests a raw block volume through the persistentVolumeClaim.volumeMode
field, it can only bind to PersistentVolume with the matching volumeMode
field.
### Binding Block Volumes | ||
|
||
If a user requests a raw block volume by indicating this using the volumeMode field in the PersistentVolumeClaim spec, the binding rules differ slighty from previous releases that didn't consider this mode as part of the spec. | ||
Listed is a table of possible combinations the user and admin might specify for requesting a raw block device. The table indicates if the volume will be bound or not given the combinations: |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I don't think we need this whole matrix. It can just be simplifeid to 'pvc.volumeMode' == 'pv.volumeMode'.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I like the matrix..personally @msau42
Documentation updates for raw block volume support in for v1.9 as Alpha support
This change is