From fb99f34bdeba8161796f32770df6dfb1fec0c358 Mon Sep 17 00:00:00 2001 From: Hemant Kumar Date: Fri, 1 Feb 2019 17:06:51 -0500 Subject: [PATCH] Minor typos and fixes --- keps/sig-storage/20190129-csi-volume-resizing.md | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/keps/sig-storage/20190129-csi-volume-resizing.md b/keps/sig-storage/20190129-csi-volume-resizing.md index 6309861377ba..17ef897d54c5 100644 --- a/keps/sig-storage/20190129-csi-volume-resizing.md +++ b/keps/sig-storage/20190129-csi-volume-resizing.md @@ -15,6 +15,8 @@ creation-date: 2019-01-29 last-updated: 2019-01-29 status: implementable see-also: + - [Kubernetes Volume expansion](https://github.com/kubernetes/enhancements/issues/284) + - [Online resizing design](https://github.com/kubernetes/enhancements/pull/737) replaces: superseded-by: --- @@ -68,9 +70,9 @@ actually enabling expansion for certains storageclasses still falls on Kubernete The design of CSI volume resizing is made of two parts. -#### External resize controller +### External resize controller -To support resizing of CSI volumes an external resize controller will monitor all PVCs. If a PVC meets following critirea for resizing, it will be added to +To support resizing of CSI volumes an external resize controller will monitor all PVCs. If a PVC meets following criteria for resizing, it will be added to controller's workqueue: - The driver name disovered from PVC should match name of driver currently known(by querying driver info via CSI RPC call) to external resize controller. @@ -92,7 +94,7 @@ If `ControllerExpandVolume` call fails: A general mechanism for recovering from resize failure will be implemented via: https://github.com/kubernetes/kubernetes/issues/73036 -#### Expansion on Kubelet +### Expansion on Kubelet A CSI volume may require expansion on the node to finish volume resizing. In some cases - the entire resizing operation can happen on the node and plugin may choose to not implement `ControllerExpandVolume` CSI RPC call at all. @@ -100,7 +102,7 @@ plugin may choose to not implement `ControllerExpandVolume` CSI RPC call at all. Currently Kubernetes supports two modes of performing volume resize on kubelet. We will describe each mode here. For more information , please refer to original volume resize proposal - https://github.com/kubernetes/community/blob/master/contributors/design-proposals/storage/grow-volume-size.md. -##### Offline volume resizing on kubelet: +#### Offline volume resizing on kubelet: This is the default mode and in this mode `NodeExpandVolume` will only be called when volume is being mounted on the node. In other words, pod that was using the volume must be re-created for expansion on node to happen. @@ -114,10 +116,10 @@ If `NodeExpandVolume` failed: - It will add a event to both PVC and Pod about failed resizing and resize operation will be retried. This will prevent pod from starting up. -###### Online volume resizing on kubelet: +#### Online volume resizing on kubelet: More details about online resizing can be found in [Online resizing design](https://github.com/kubernetes/enhancements/pull/737) but essentially if -`ExpandInUsePersistentVolumes` feature(currently Alpha) is enabled then kubelet will periodically poll all PVCs that are being used on the node and compare `pvc.spec.resources.requests.storage` and `pvc.Status.Capacity`(also `pv.Spec.Capacity`) and make similar determination about whether node expansion is required for the volume. +`ExpandInUsePersistentVolumes` feature is enabled then kubelet will periodically poll all PVCs that are being used on the node and compare `pvc.spec.resources.requests.storage` and `pvc.Status.Capacity`(also `pv.Spec.Capacity`) and make similar determination about whether node expansion is required for the volume. In this mode `NodeExpandVolume` can be called while pod is running and volume is in-use. Using aformentioned check if kubelet determines that volume expansion is needed on the node and plugin implements `NodeExpandVolume` RPC call then, kubelet will call it(provided volume has already been node staged and published on the node) and: @@ -139,6 +141,7 @@ Before this feature goes GA - we need to handle recovering https://github.com/ku - (postive) Give a plugin that supports both control plane and node size resize, CSI volume should be resizable and able to complete successfully. - (positive) Given a plugin that only requires control plane resize, CSI volume should be resizable and able to complete successfully. - (positive) Given a plugin that only requires node side resize, CSI volume should be resizable and able to complete successfully. + - (positive) Given a plugin that support online resizing, CSI volume should be resizable and online resize operation be able to complete successfully. - (negative) If control resize fails, PVC should have appropriate events. - (neative) if node side resize fails, both pod and PVC should have appropriate events.