Merge pull request #126108 from gnufied/changes-volume-recovery
Reduce state changes when expansion fails and mark certain failures as infeasible
This commit is contained in:
@@ -548,16 +548,28 @@ type TypedObjectReference struct {
|
||||
}
|
||||
|
||||
// PersistentVolumeClaimConditionType defines the condition of PV claim.
|
||||
// Valid values are either "Resizing" or "FileSystemResizePending".
|
||||
// Valid values are:
|
||||
// - "Resizing", "FileSystemResizePending"
|
||||
//
|
||||
// If RecoverVolumeExpansionFailure feature gate is enabled, then following additional values can be expected:
|
||||
// - "ControllerResizeError", "NodeResizeError"
|
||||
//
|
||||
// If VolumeAttributesClass feature gate is enabled, then following additional values can be expected:
|
||||
// - "ModifyVolumeError", "ModifyingVolume"
|
||||
type PersistentVolumeClaimConditionType string
|
||||
|
||||
// These are valid conditions of Pvc
|
||||
// These are valid conditions of PVC
|
||||
const (
|
||||
// An user trigger resize of pvc has been started
|
||||
PersistentVolumeClaimResizing PersistentVolumeClaimConditionType = "Resizing"
|
||||
// PersistentVolumeClaimFileSystemResizePending - controller resize is finished and a file system resize is pending on node
|
||||
PersistentVolumeClaimFileSystemResizePending PersistentVolumeClaimConditionType = "FileSystemResizePending"
|
||||
|
||||
// PersistentVolumeClaimControllerResizeError indicates an error while resizing volume for size in the controller
|
||||
PersistentVolumeClaimControllerResizeError PersistentVolumeClaimConditionType = "ControllerResizeError"
|
||||
// PersistentVolumeClaimNodeResizeError indicates an error while resizing volume for size in the node.
|
||||
PersistentVolumeClaimNodeResizeError PersistentVolumeClaimConditionType = "NodeResizeError"
|
||||
|
||||
// Applying the target VolumeAttributesClass encountered an error
|
||||
PersistentVolumeClaimVolumeModifyVolumeError PersistentVolumeClaimConditionType = "ModifyVolumeError"
|
||||
// Volume is being modified
|
||||
@@ -574,18 +586,19 @@ const (
|
||||
// State set when resize controller starts resizing the volume in control-plane
|
||||
PersistentVolumeClaimControllerResizeInProgress ClaimResourceStatus = "ControllerResizeInProgress"
|
||||
|
||||
// State set when resize has failed in resize controller with a terminal error.
|
||||
// State set when resize has failed in resize controller with a terminal unrecoverable error.
|
||||
// Transient errors such as timeout should not set this status and should leave allocatedResourceStatus
|
||||
// unmodified, so as resize controller can resume the volume expansion.
|
||||
PersistentVolumeClaimControllerResizeFailed ClaimResourceStatus = "ControllerResizeFailed"
|
||||
PersistentVolumeClaimControllerResizeInfeasible ClaimResourceStatus = "ControllerResizeInfeasible"
|
||||
|
||||
// State set when resize controller has finished resizing the volume but further resizing of volume
|
||||
// is needed on the node.
|
||||
PersistentVolumeClaimNodeResizePending ClaimResourceStatus = "NodeResizePending"
|
||||
// State set when kubelet starts resizing the volume.
|
||||
PersistentVolumeClaimNodeResizeInProgress ClaimResourceStatus = "NodeResizeInProgress"
|
||||
// State set when resizing has failed in kubelet with a terminal error. Transient errors don't set NodeResizeFailed
|
||||
PersistentVolumeClaimNodeResizeFailed ClaimResourceStatus = "NodeResizeFailed"
|
||||
// State set when resizing has failed in kubelet with a terminal unrecoverable error. Transient errors
|
||||
// shouldn't set this status
|
||||
PersistentVolumeClaimNodeResizeInfeasible ClaimResourceStatus = "NodeResizeInfeasible"
|
||||
)
|
||||
|
||||
// +enum
|
||||
|
||||
@@ -2491,10 +2491,10 @@ func validatePersistentVolumeClaimResourceKey(value string, fldPath *field.Path)
|
||||
}
|
||||
|
||||
var resizeStatusSet = sets.New(core.PersistentVolumeClaimControllerResizeInProgress,
|
||||
core.PersistentVolumeClaimControllerResizeFailed,
|
||||
core.PersistentVolumeClaimControllerResizeInfeasible,
|
||||
core.PersistentVolumeClaimNodeResizePending,
|
||||
core.PersistentVolumeClaimNodeResizeInProgress,
|
||||
core.PersistentVolumeClaimNodeResizeFailed)
|
||||
core.PersistentVolumeClaimNodeResizeInfeasible)
|
||||
|
||||
// ValidatePersistentVolumeClaimStatusUpdate validates an update to status of a PersistentVolumeClaim
|
||||
func ValidatePersistentVolumeClaimStatusUpdate(newPvc, oldPvc *core.PersistentVolumeClaim, validationOpts PersistentVolumeClaimSpecValidationOptions) field.ErrorList {
|
||||
|
||||
@@ -19081,7 +19081,7 @@ func TestValidatePersistentVolumeClaimStatusUpdate(t *testing.T) {
|
||||
},
|
||||
}, core.PersistentVolumeClaimStatus{
|
||||
AllocatedResourceStatuses: map[core.ResourceName]core.ClaimResourceStatus{
|
||||
core.ResourceStorage: core.PersistentVolumeClaimControllerResizeFailed,
|
||||
core.ResourceStorage: core.PersistentVolumeClaimControllerResizeInfeasible,
|
||||
},
|
||||
})
|
||||
|
||||
@@ -19111,7 +19111,7 @@ func TestValidatePersistentVolumeClaimStatusUpdate(t *testing.T) {
|
||||
},
|
||||
}, core.PersistentVolumeClaimStatus{
|
||||
AllocatedResourceStatuses: map[core.ResourceName]core.ClaimResourceStatus{
|
||||
core.ResourceStorage: core.PersistentVolumeClaimNodeResizeFailed,
|
||||
core.ResourceStorage: core.PersistentVolumeClaimNodeResizeInfeasible,
|
||||
},
|
||||
})
|
||||
|
||||
@@ -19155,7 +19155,7 @@ func TestValidatePersistentVolumeClaimStatusUpdate(t *testing.T) {
|
||||
validResizeKeyCustom: resource.MustParse("10Gi"),
|
||||
},
|
||||
AllocatedResourceStatuses: map[core.ResourceName]core.ClaimResourceStatus{
|
||||
core.ResourceStorage: core.PersistentVolumeClaimControllerResizeFailed,
|
||||
core.ResourceStorage: core.PersistentVolumeClaimControllerResizeInfeasible,
|
||||
validResizeKeyCustom: core.PersistentVolumeClaimControllerResizeInProgress,
|
||||
},
|
||||
})
|
||||
|
||||
Reference in New Issue
Block a user