Merge pull request #6010 from jabellard/component-priority-class-name
Proposal: Add Support for Component Priority Class Configuration in Karmada Operator
This commit is contained in:
commit
446dbe9086
|
@ -0,0 +1,82 @@
|
|||
---
|
||||
title: Support Priority Class Configuration for Karmada Control Plane Components
|
||||
authors:
|
||||
- "@jabellard"
|
||||
reviewers:
|
||||
- "@RainbowMango"
|
||||
approvers:
|
||||
- "@RainbowMango"
|
||||
|
||||
creation-date: 2025-01-01
|
||||
|
||||
---
|
||||
|
||||
# Support Priority Class Configuration for Karmada Control Plane Components
|
||||
|
||||
## Summary
|
||||
|
||||
This proposal aims to extend the Karmada operator by introducing support for configuring the priority class name for Karmada control plane components.
|
||||
By enabling users to configure a custom priority class name, this feature ensures critical components are scheduled with appropriate priority, enhancing overall system reliability and stability.
|
||||
|
||||
## Motivation
|
||||
|
||||
Currently, the priority class name for Karmada components is hardcoded to `system-node-critical` for some components, while others do not specify a priority class at all. This limitation can compromise
|
||||
the reliability and stability of the system in environments where scheduling of critical components is essential.
|
||||
|
||||
By allowing users to configure the priority class name, this feature ensures:
|
||||
|
||||
- Greater control over scheduling of critical Karmada control plane components, enhancing system reliability and stability.
|
||||
- Alignment with organizational policies for resource prioritization and workload management.
|
||||
- Flexibility to adapt priority classes for specific operational environments and use cases.
|
||||
|
||||
### Goals
|
||||
- Provide a mechanism for configuring the scheduling priority of all in-cluster Karmada control plane components.
|
||||
- Ensure the feature integrates seamlessly with existing deployments while maintaining backward compatibility.
|
||||
|
||||
### Non-Goals
|
||||
|
||||
- Address scheduling priorities for components outside the Karmada control plane.
|
||||
|
||||
## Proposal
|
||||
|
||||
Introduce a new optional `priorityClassName` field in the `CommonSettings` struct, which is used across all Karmada components.
|
||||
|
||||
### API Changes
|
||||
|
||||
```go
|
||||
// CommonSettings describes the common settings of all Karmada Components.
|
||||
type CommonSettings struct {
|
||||
|
||||
// PriorityClassName specifies the priority class name for the component.
|
||||
// If not specified, it defaults to "system-node-critical".
|
||||
// +kubebuilder:default="system-node-critical"
|
||||
// +optional
|
||||
PriorityClassName string `json:"priorityClassName,omitempty"`
|
||||
|
||||
// Other, existing fields omitted for brevity...
|
||||
}
|
||||
|
||||
```
|
||||
### User Stories
|
||||
|
||||
#### Story 1
|
||||
As an infrastructure engineer, I need to configure the priority class for Karmada control plane components to ensure critical components are reliably scheduled to ensure system stability and reliability.
|
||||
|
||||
#### Story 2
|
||||
As an infrastructure engineer managing a multi-tenant cluster, I want the ability to override the default priority class for Karmada control plane components with a custom priority class that aligns with my organization’s policies, ensuring reliable resource allocation and system stability across workloads.
|
||||
|
||||
### Risks and Mitigations
|
||||
|
||||
1. *Backward Compatibility*: Existing deployments might rely on the current hardcoded `system-node-critical` priority class for some components.
|
||||
|
||||
- *Mitigation*: The `priorityClassName` field defaults to `system-node-critical` when not explicitly specified, preserving the current behavior.
|
||||
|
||||
## Design Details
|
||||
|
||||
During the reconciliation process, the Karmada operator will:
|
||||
|
||||
- Check if `priorityClassName` is specified in the component’s `CommonSettings`.
|
||||
- If specified:
|
||||
- Apply the specified priority class to the component’s Pod spec.
|
||||
- If not specified:
|
||||
- Default to `system-node-critical` to maintain backward compatibility.
|
Loading…
Reference in New Issue