PriorityClass Support Design Proposal#8882
Conversation
|
/kind changelog-not-required |
|
|
||
| 1. The priority class name is set on the Velero deployment and node agent daemonset during installation. | ||
| 2. For maintenance jobs, the priority class name is inherited from the Velero server deployment through the `GetPriorityClassNameFromVeleroServer` function in the `veleroutil` package. | ||
| 3. For data mover pods created by the exposer, the priority class name is inherited from the node agent daemonset through the `getInheritedPodInfo` function, which calls `nodeagent.GetPodSpec` to get the pod spec from the node agent daemonset. |
There was a problem hiding this comment.
Data movers should be with low priority in most cases, in another word, when resource is limited, data movers should not run.
If we decide to inherit from node-agent, we should make sure the priority class configuration is separate for node-agent and Velero server. cc @ywk253100
There was a problem hiding this comment.
Do we want to have a low default? Or leave as k8s default but allow user to set themselves?
Codecov ReportAll modified and coverable lines are covered by tests ✅
Additional details and impacted files@@ Coverage Diff @@
## main #8882 +/- ##
==========================================
+ Coverage 60.03% 60.05% +0.01%
==========================================
Files 379 379
Lines 43496 43496
==========================================
+ Hits 26114 26122 +8
+ Misses 15814 15807 -7
+ Partials 1568 1567 -1 ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
| "Priority class name for the node agent daemonset. Optional.", | ||
| ) | ||
|
|
||
| flags.StringVar( |
There was a problem hiding this comment.
Seems we don't need this because we'll define the priority class in the repo maintenance configmap?
There was a problem hiding this comment.
The velero install can create configmap containing maintenance priority class for you. WDYT?
There was a problem hiding this comment.
ok will move to existing configmap
| } | ||
| }, | ||
| "namespace1-default-kopia": { | ||
| "priorityClassName": "medium-priority" |
There was a problem hiding this comment.
I don't think there is requirement to set the priority class in backup repository level? All maintenance jobs should have the same priority? @Lyndon-Li WDYT?
|
I think we'll still need install flag for daemonset priorityclass since it will be set to daemonset during install. |
| } | ||
| ``` | ||
|
|
||
| This will allow users to configure the priority class name for both the node agent daemonset and data mover pods through a single node-agent-configmap. For example: |
There was a problem hiding this comment.
for both the node agent daemonset and data mover pods.
This doesn't seem right. The PriorityClassName in Configs is only used for the data mover pods, not for the node-agent DaemonSet.
Design for velero-io#8869 Signed-off-by: Tiger Kaovilai <tkaovila@redhat.com>
…ration in design document Signed-off-by: Tiger Kaovilai <tkaovila@redhat.com>
… agent Signed-off-by: Tiger Kaovilai <tkaovila@redhat.com>
…ponents Signed-off-by: Tiger Kaovilai <tkaovila@redhat.com>
PriorityClass Support Design Proposal Design for velero-io#8869 Signed-off-by: Tiger Kaovilai <tkaovila@redhat.com>
Design for #8869
Signed-off-by: Tiger Kaovilai tkaovila@redhat.com
Thank you for contributing to Velero!
Please add a summary of your change
Architecture Diagram
graph TB subgraph "User Configuration" CLI[velero install CLI] CLI -->|--server-priority-class-name| ServerFlag[Server Priority Class] CLI -->|--node-agent-priority-class-name| NodeAgentFlag[Node Agent Priority Class] end subgraph "Velero Components" ServerFlag --> Deployment[Velero Server Deployment] NodeAgentFlag --> DaemonSet[Node Agent DaemonSet] Deployment -->|stores config| ConfigMap1[velero-config ConfigMap] DaemonSet -->|stores config| ConfigMap2[node-agent-config ConfigMap] end subgraph "Data Movement Pods" ConfigMap2 -->|reads priority class| DataUpload[Data Upload Controller] ConfigMap2 -->|reads priority class| DataDownload[Data Download Controller] DataUpload --> DataMoverPod1[Data Mover Pods] DataDownload --> DataMoverPod2[Data Mover Pods] end subgraph "Maintenance Jobs" ConfigMap1 -->|global config only| MaintenanceConfig[Maintenance Job Config] MaintenanceConfig --> MaintenanceJob[Repository Maintenance Jobs] end subgraph "CSI Snapshot Operations" ConfigMap2 -->|reads priority class| CSISnapshot[CSI Snapshot Exposer] ConfigMap2 -->|reads priority class| GenericRestore[Generic Restore Exposer] CSISnapshot --> ExposeePod1[Exposee Pods] GenericRestore --> ExposeePod2[Restore Pods] end style CLI fill:#e1f5fe style Deployment fill:#81c784 style DaemonSet fill:#81c784 style DataMoverPod1 fill:#ffb74d style DataMoverPod2 fill:#ffb74d style MaintenanceJob fill:#ce93d8 style ExposeePod1 fill:#ffb74d style ExposeePod2 fill:#ffb74dDoes your change fix a particular issue?
Implementation: #8883
Please indicate you've done the following:
make new-changelog) or comment/kind changelog-not-requiredon this PR.site/content/docs/main.