Repository navigation
Conversation
Contributor
|
[APPROVALNOTIFIER] This PR is NOT APPROVED This pull-request has been approved by: 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 |
|
🎉 Welcome to the Kubeflow Spark Operator! 🎉 Thanks for opening your first PR! We're happy to have you as part of our community 🚀 Here's what happens next:
Join the community:
Feel free to ask questions in the comments if you need any help or clarification! |
14 of 16 tasks
Add optional MinMember configuration with a minimum of one. Apply shared workload validation and queue warnings to SparkApplication and ScheduledSparkApplication templates. Require both batch scheduler and workload enablement for native scheduling RBAC. Include webhook and Helm tests and regenerated API artifacts. Keep PodGroup binding metadata outside the public Spark API; defer executor-count upper-bound validation to the backend. Part of kubeflow#2962 Signed-off-by: Rajadi16 <rajputadityasingh2407@gmail.com>
Rajadi16
force-pushed
the
kep-2962/docs-e2e
branch
from
September 5, 2026 23:41
4a59ac5 to
1327645
Compare
Signed-off-by: Rajadi16 <rajputadityasingh2407@gmail.com>
Rajadi16
force-pushed
the
kep-2962/docs-e2e
branch
from
September 7, 2026 07:09
1327645 to
3baa621
Compare
1 of 4 tasks
Rajadi16
marked this pull request as draft
September 10, 2026 02:22
Create Kubernetes Workload and PodGroup resources for Spark applications, apply gang scheduling to executor pod templates using native Kubernetes scheduling fields, and preserve ephemeral submission metadata. Part of kubeflow#2962 Signed-off-by: Rajadi16 <rajputadityasingh2407@gmail.com>
…mber - Add getInt32FromSparkConf helper to extract numeric values from SparkConf - Update GetInitialExecutorNumber to check SparkConf for executor counts when typed fields are not set - Support spark.executor.instances, spark.dynamicAllocation.initialExecutors, and spark.dynamicAllocation.minExecutors - Prefer typed field values over SparkConf values for backward compatibility - Add comprehensive test coverage for fixed, dynamic, and mixed configuration modes - Handle malformed values gracefully by ignoring invalid SparkConf entries Fixes the issue where applications specifying executor counts only via SparkConf would be incorrectly sized by the workload scheduler, potentially causing valid minMember configurations to be rejected. Signed-off-by: Rajadi16 <rajputadityasingh2407@gmail.com>
- Document the zero-executor clamping behavior (min of 1) - Clarify that minMember validation happens in backend, not admission - Explain the upper-bound check against resolved executor count - Document quorum-based scheduling use case for smaller overrides - Note that without override, all executors must be schedulable Signed-off-by: Rajadi16 <rajputadityasingh2407@gmail.com>
Added test coverage for: - SparkConf fixed count with and without minMember override - SparkConf fixed count with smaller override (quorum scheduling) - SparkConf-only dynamic allocation with distinct initial/min/instances - Mixed typed and SparkConf configurations (typed preferred) - Invalid SparkConf values defaulting to 1 - Combined typed DRA and SparkConf initial executors - Precedence verification between typed fields and SparkConf These tests ensure the workload scheduler correctly resolves executor counts from all configuration sources and validates minMember constraints against the effective initial executor count. Signed-off-by: Rajadi16 <rajputadityasingh2407@gmail.com>
- Remove orphaned 'Copy custom SchedulingGroup' comments from submission.go (the code these described was removed when custom Spark scheduling fields were dropped) - Update controller.go comment to accurately describe native executor-template membership (spec.executor.template.spec.schedulingGroup.podGroupName) populated by workload scheduler - Clarify that operator-generated state belongs to the temporary submission copy - Remove outdated webhook rejection claim (custom fields no longer exist to be rejected) Signed-off-by: Rajadi16 <rajputadityasingh2407@gmail.com>
Document the Kubernetes-native workload scheduler and add a Spark Pi example demonstrating its configuration. Add a Kubernetes 1.36 Kind and Helm test that verifies Workload and PodGroup ownership, executor-only membership, and atomic gang binding. Handle Docker and Kind multi-platform Spark image loading failures with a per-node containerd import fallback. Part of kubeflow#2962 Signed-off-by: Rajadi16 <rajputadityasingh2407@gmail.com>
Corrected discovery timing and behavior: - API discovery occurs when backend is invoked, not at startup - Discovery failures affect individual reconciliation, not controller startup Updated scheduling membership description: - Document native path: spec.executor.template.spec.schedulingGroup.podGroupName - Clarify operator populates this on temporary submission copy - Remove outdated custom field paths (spec.driver/executor.schedulingGroup) Improved validation and sizing documentation: - Split admission (lower-bound) and backend (upper-bound) validation - Document SparkConf-based executor sizing support - Explain typed field preference over SparkConf values - Updated dynamic allocation to include SparkConf alternatives Clarified resource lifecycle: - Explain Workload policy conflict behavior - Note that deleting PodGroup alone doesn't fix retained Workload conflicts Updated queue warning description: - Specify warning occurs when workload backend is explicitly selected Signed-off-by: Rajadi16 <rajputadityasingh2407@gmail.com>
Rajadi16
force-pushed
the
kep-2962/docs-e2e
branch
from
September 14, 2026 21:37
3baa621 to
ffd8769
Compare
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Important
Stacked PR — depends on #3113, which depends on #3093.
Please review and merge #3093 first, followed by #3113. Do not merge this PR before #3113.
Until the earlier PRs land, this PR intentionally shows the cumulative PR1 + PR2 + PR3 diff.
Part of #2962.
Stack
Purpose of this PR
Documents the Kubernetes-native
workloadbatch-scheduler backend and adds end-to-end coverage proving that executor pods are gang-scheduled throughscheduling.k8s.io/v1alpha2.Proposed changes:
Add a workload scheduler user guide and link it from the user-guide index.
Add a Spark Pi example configured with
batchScheduler: workload.Add a Kubernetes 1.36.1 Kind configuration with the required workload-scheduling feature gates.
Add a dedicated workload scheduler integration job to GitHub Actions.
Add a labeled end-to-end test that verifies:
WorkloadPodGroupper submissionAllow additional Ginkgo arguments through
E2E_TEST_ARGS.Add a per-node containerd import fallback for Docker/Kind multi-platform Spark image-loading failures.
Prerequisites
The backend requires a cluster serving
scheduling.k8s.io/v1alpha2with:GenericWorkloadenabled on kube-apiserver and kube-schedulerGangSchedulingenabled on kube-schedulerThe
v1alpha2API is available in Kubernetes 1.36. These features are alpha and disabled by default.If
batchSchedulerOptions.priorityClassNameis used, Kubernetes’ alphaWorkloadAwarePreemptionfeature gate must also be enabled on kube-apiserver and kube-scheduler.Change Category
Rationale
This final layer of the stack provides user-facing guidance and end-to-end proof for the scheduler implementation introduced by #3113. It also makes local and CI image loading resilient to the Docker/Kind multi-platform import failure encountered while exercising the feature.
Checklist
Verification
make docs-testmake go-fmtmake go-vetmake go-lintgit diff --checkSigned-off-byAdditional Notes
This PR targets upstream
masterbecause the PR2 branch exists only in the contributor fork. After #3093 and #3113 merge, this branch will be rebased onto the updated upstreammasterso the earlier stack changes disappear from this PR’s diff.