You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: design/vgdp-affinity-enhancement.md
+2-44Lines changed: 2 additions & 44 deletions
Original file line number
Diff line number
Diff line change
@@ -12,7 +12,6 @@ The implemented [VGDP LoadAffinity design][3] already defined the a structure `L
12
12
13
13
There are still some limitations of this design:
14
14
* The affinity setting is global. Say there are two StorageClasses and the underlying storage can only provision volumes to part of the cluster nodes. The supported nodes don't have intersection. Then the affinity will definitely not work in some cases.
15
-
* The old design only take the first element of the []*LoadAffinity array. By this way, it cannot support the or logic between Affinity selectors.
16
15
* The old design focuses on the backupPod affinity, but the restorePod also needs the affinity setting.
17
16
18
17
As a result, create this design to address the limitations.
@@ -34,7 +33,6 @@ This design still uses the ConfigMap specified by `velero node-agent` CLI's para
34
33
Upon the implemented [VGDP LoadAffinity design][3] introduced `[]*LoadAffinity` structure, this design add a new field `StorageClass`. This field is optional.
35
34
* If the `LoadAffinity` element's `StorageClass` doesn't have value, it means this element is applied to global, just as the old design.
36
35
* If the `LoadAffinity` element's `StorageClass` has value, it means this element is applied to the VGDP instances' PVCs use the specified StorageClass.
37
-
* To support the or logic between LoadAffinity elements, this design allows multiple instances of `LoadAffinity` whose `StorageClass` field have the same value.
38
36
* The `LoadAffinity` element whose `StorageClass` has value has higher priority than the `LoadAffinity` element whose `StorageClass` doesn't have value.
39
37
40
38
@@ -93,14 +91,8 @@ flowchart TD
93
91
94
92
O -->|No loadAffinity configured| R[No affinity constraints<br/>Schedule on any available node<br/>🌐 DEFAULT]
95
93
96
-
N --> S{Multiple rules in array?}
97
-
S -->|Yes| T[Apply all rules as OR conditions<br/>Pod scheduled on nodes matching ANY rule]
98
-
S -->|No| U[Apply single rule<br/>Pod scheduled on nodes matching this rule]
99
-
100
-
O --> S
101
-
102
-
T --> V[Validate node-agent availability<br/>⚠️ Ensure node-agent pods exist on target nodes]
103
-
U --> V
94
+
O --> V[Validate node-agent availability<br/>⚠️ Ensure node-agent pods exist on target nodes]
This sample demonstrates how to use multiple affinities in `loadAffinity`. That can support more complicated scenarios, e.g. need to filter nodes satisfied either of two conditions, instead of satisfied both of two conditions.
159
-
160
-
In this example, the VGDP pods will be assigned to nodes, which instance type is `Standard_B4ms` or which zone is `us-central1-a`.
161
-
162
-
163
121
#### LoadAffinity interacts with LoadAffinityPerStorageClass
0 commit comments