Merge pull request #3512 from Poor12/edit-proposal
Update application failover proposal
This commit is contained in:
commit
ee778ff4bd
|
@ -123,7 +123,6 @@ Optional configuration items include:
|
||||||
|
|
||||||
Also, there are some decision conditions of performing the failover process.
|
Also, there are some decision conditions of performing the failover process.
|
||||||
|
|
||||||
* Healthy state. We can define in what state the application triggers the migration. Valid options are "Unhealthy", "Unknown" or both.
|
|
||||||
* A period of time. For some short-lived exceptions(which can be recovered after a period of time), we don't want to immediately migrate the application to other clusters which may make the migration very frequent.
|
* A period of time. For some short-lived exceptions(which can be recovered after a period of time), we don't want to immediately migrate the application to other clusters which may make the migration very frequent.
|
||||||
Therefore, we need a parameter to tolerate the unhealthy application.
|
Therefore, we need a parameter to tolerate the unhealthy application.
|
||||||
|
|
||||||
|
@ -195,9 +194,8 @@ type ApplicationFailoverBehavior struct {
|
||||||
// Only when all conditions are met can the failover process be performed.
|
// Only when all conditions are met can the failover process be performed.
|
||||||
// Currently, DecisionConditions includes several conditions:
|
// Currently, DecisionConditions includes several conditions:
|
||||||
// - TolerationSeconds (optional)
|
// - TolerationSeconds (optional)
|
||||||
// - HealthyState (mandatory)
|
|
||||||
// +required
|
// +required
|
||||||
DecisionConditions *DecisionConditions `json:"decisionConditions,omitempty"`
|
DecisionConditions DecisionConditions `json:"decisionConditions,omitempty"`
|
||||||
|
|
||||||
// PurgeMode represents how to deal with the legacy applications on the
|
// PurgeMode represents how to deal with the legacy applications on the
|
||||||
// cluster from which the application is migrated.
|
// cluster from which the application is migrated.
|
||||||
|
@ -207,10 +205,19 @@ type ApplicationFailoverBehavior struct {
|
||||||
// +optional
|
// +optional
|
||||||
PurgeMode PurgeMode `json:"purgeMode,omitempty"`
|
PurgeMode PurgeMode `json:"purgeMode,omitempty"`
|
||||||
|
|
||||||
|
// GracePeriodSeconds is the maximum waiting duration in seconds before
|
||||||
|
// application on the migrated cluster should be deleted.
|
||||||
|
// Required only when PurgeMode is "Graciously" and defaults to 600s.
|
||||||
|
// If the application on the new cluster cannot reach a Healthy state,
|
||||||
|
// Karmada will delete the application after GracePeriodSeconds is reached.
|
||||||
|
// Value must be positive integer.
|
||||||
|
// +optional
|
||||||
|
GracePeriodSeconds *int32 `json:"gracePeriodSeconds,omitempty"`
|
||||||
|
|
||||||
// BlockPredecessorSeconds represents the period of time the cluster from which the
|
// BlockPredecessorSeconds represents the period of time the cluster from which the
|
||||||
// application was migrated from can be schedulable again.
|
// application was migrated from can be schedulable again.
|
||||||
// During the period of BlockPredecessorSeconds, clusters are forcibly filtered out by the scheduler.
|
// During the period of BlockPredecessorSeconds, clusters are forcibly filtered out by the scheduler.
|
||||||
// If not specified, the scheduler may still schedule the application to the evicted cluster when rescheduling.
|
// If not specified, the scheduler may still schedule the application to the evicted cluster when rescheduling.
|
||||||
// Defaults to 600s. Zero means the cluster will never be schedulable.
|
// Defaults to 600s. Zero means the cluster will never be schedulable.
|
||||||
// +kubebuilder:default=600
|
// +kubebuilder:default=600
|
||||||
// +optional
|
// +optional
|
||||||
|
@ -244,18 +251,11 @@ type DecisionConditions struct {
|
||||||
// +kubebuilder:default=10
|
// +kubebuilder:default=10
|
||||||
// +optional
|
// +optional
|
||||||
TolerationSeconds *int32 `json:"tolerationSeconds,omitempty"`
|
TolerationSeconds *int32 `json:"tolerationSeconds,omitempty"`
|
||||||
|
|
||||||
// HealthyState refers to the healthy status reported by the Karmada resource
|
|
||||||
// interpreter.
|
|
||||||
// Valid options are "Unhealthy", "Unknown", or both.
|
|
||||||
// When the application reaches the desired HealthyState, Karmada will perform failover process
|
|
||||||
// after TolerationSeconds is reached.
|
|
||||||
// +kubebuilder:validation:MinItems=1
|
|
||||||
// +required
|
|
||||||
HealthyState []ResourceHealth `json:"healthyState,omitempty"`
|
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
**Note**: We will not implement `PreConditions` and `BlockPredecessorSeconds` in release-1.6 because the API change of ResourceBinding for these fields hasn't been ready yet.
|
||||||
|
|
||||||
For example:
|
For example:
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
|
|
Loading…
Reference in New Issue