Fix DRATestDriver readiness passing before drivers and ResourceSlices exist - #4248
alaypatel07 wants to merge 1 commit into
Conversation
|
Skipping CI for Draft Pull Request. |
|
[APPROVALNOTIFIER] This PR is NOT APPROVED This pull-request has been approved by: alaypatel07 The full list of commands accepted by this bot can be found here. DetailsNeeds approval from an approver in each of these files:Approvers can indicate their approval by writing |
| } | ||
|
|
||
| func getDriverPluginPods(config *dependency.Config, namespace string, namePrefix string) (int, error) { | ||
| pods, err := config.ClusterFramework.GetClientSets().GetClient().CoreV1().Pods(namespace).List(context.Background(), metav1.ListOptions{}) |
There was a problem hiding this comment.
From what I recall, this logic was put in place because at larger scale, some nodes might go to NotReady and it will block the test from moving forward. To avoid that, only running pods are counted against resource slices.
However, I see two issues with this:
- the logic is in-correct in finding terminal state. The resource slice count will be equal to running pods at many different points of the driver daemonset rollout not just the terminal state.
- If the nodes are NotReady, you do not have enough capacity and the test is going to fail anyway. So user running the tests should find other ways of dealing with NotReady Nodes, like cordoning/tainting them and subtracting them from node count, so it is ignored by the test.
|
@alaypatel07 is the failure related? |
|
@johnbelamaric no the specific test doesnt exercise DRA path: Failure seems to be unrelated. |
|
/test pull-perf-tests-ec2-500-node-dra-with-workload-amazonvpc-using-cl2 |
this is relevant failure, but I dont see any logs to debug. I will try it locally if I can reproduce this scale. |
76d9758 to
1c42748
Compare
Wait for WorkerNodeCount driver DaemonSet pods and ResourceSlices before FastFill starts, instead of treating unset status as ready. Signed-off-by: Alay Patel <alayp@nvidia.com>
1c42748 to
db07c91
Compare
|
/test pull-perf-tests-ec2-500-node-dra-with-workload-amazonvpc-using-cl2 |
What type of PR is this?
/kind bug
/kind flake
What this PR does / why we need it:
DRATestDriver readiness could pass while no driver DaemonSet pods or ResourceSlices existed yet (
DesiredNumberScheduled == NumberReady == 0, and0ResourceSlices matching0running plugin pods). FastFill then starts before the DRA driver is usable, which shows up as scheduler "cannot allocate all claims" retries and inflatedcreate_to_schedule/ FastFillPodStartup p99.This change waits until
WorkerNodeCountdriver pods are Desired/Ready and at least that many ResourceSlices are published, and uses one typedgetWorkerCounthelper for both manifest templating and readiness checks.Which issue(s) this PR fixes:
Fixes # kubernetes/kubernetes#141046
Special notes for your reviewer:
Observed on aws-dra-500Nodes-with-workload FastFillPodStartup p99 spikes where scheduler logs repeatedly report "500 cannot allocate all claims" before binding succeeds.