This is an automated email from the ASF dual-hosted git repository.

dongjoon-hyun pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/spark-kubernetes-operator.git


The following commit(s) were added to refs/heads/main by this push:
     new fa1f279c [SPARK-60087] Add Kueue feature support table to 
`spark_custom_resources.md`
fa1f279c is described below

commit fa1f279cafa762f578fa46e341cd0b093633eef6
Author: Dongjoon Hyun <[email protected]>
AuthorDate: Sat Oct 10 00:30:53 2026 +0100

    [SPARK-60087] Add Kueue feature support table to `spark_custom_resources.md`
    
    ### What changes were proposed in this pull request?
    
    This PR aims to add a table to the `Kueue` section of 
`docs/spark_custom_resources.md` that summarizes which Kueue features are 
supported. The existing items of the section are unchanged. The table also 
covers partial admission, Topology Aware Scheduling, MultiKueue and elastic 
workloads, which the docs did not mention before. None of them are supported.
    
    ### Why are the changes needed?
    
    The section has 22 prose items and no table, so readers cannot see at a 
glance how much of Kueue the integration supports.
    
    ### Does this PR introduce _any_ user-facing change?
    
    No. This is a documentation-only change.
    
    ### How was this patch tested?
    
    Manual review against the code.
    
    ### Was this patch authored or co-authored using generative AI tooling?
    
    Generated-by: Claude Opus 5.5
    
    Closes #960 from dongjoon-hyun/SPARK-60087.
    
    Authored-by: Dongjoon Hyun <[email protected]>
    Signed-off-by: Dongjoon Hyun <[email protected]>
---
 docs/spark_custom_resources.md | 31 +++++++++++++++++++++++++++++++
 1 file changed, 31 insertions(+)

diff --git a/docs/spark_custom_resources.md b/docs/spark_custom_resources.md
index 36270370..f2771ac1 100644
--- a/docs/spark_custom_resources.md
+++ b/docs/spark_custom_resources.md
@@ -651,6 +651,37 @@ spec:
     sparkVersion: "4.2.0"
 ```
 
+The following table summarizes which Kueue features are supported. The items 
after it describe the
+behavior in detail, and
+[Kueue Admission and Workload 
Lifecycle](architecture.md#kueue-admission-and-workload-lifecycle)
+relates it to the reconciliation.
+
+| Feature                                                                   | 
Support             | Notes                                                     
                                                                                
                                                                                
                   |
+|---------------------------------------------------------------------------|---------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
+| Kueue `v1beta2` API                                                       | 
Supported           | Kueue v0.20.0 or later is recommended, see 
[Compatibility](operations.md#compatibility).                                   
                                                                                
                                  |
+| Queueing by the `kueue.x-k8s.io/queue-name` label                         | 
Supported           | Both `SparkApplication` and `SparkCluster` are queued if 
`spark.kubernetes.operator.kueue.enabled` is set, e.g. by 
`operatorRbac.kueue.enabled` of the Helm chart, see [Optional 
Prerequisites](operations.md#optional-prerequisites).       |
+| Waiting for the admission                                                 | 
Supported           | The resource stays in its initializing state without its 
driver (or master and workers), and the `KueueAdmissionPending` and 
`KueueAdmitted` [events](configuration.md#kubernetes-events) report the 
progress.                               |
+| Changing the queue label                                                  | 
Supported           | A change is followed until the `Workload` reserves quota, 
while the `ValidatingAdmissionPolicy` of the Helm chart rejects one once the 
resource started, unless it is `Suspended` or `ScheduledToRestart`.             
                      |
+| `Workload` priority                                                       | 
Supported           | The `WorkloadPriorityClass` of the 
`kueue.x-k8s.io/priority-class` label takes precedence over the 
`priorityClassName` of the pod templates and then the `globalDefault` 
`PriorityClass`, like Kueue built-in integrations.                  |
+| `ResourceFlavor` node labels and tolerations                              | 
Supported           | The `nodeLabels` and `tolerations` of the flavors which 
Kueue assigns to a pod set are added to its pods, like Kueue built-in 
integrations.                                                                   
                               |
+| Admission checks, e.g. `ProvisioningRequest`                              | 
Supported           | The labels, annotations, node selector and tolerations in 
the `podSetUpdates` of the checks are added to the pods once Kueue admits the 
`Workload`.                                                                     
                     |
+| Preemption and other evictions                                            | 
Supported           | An evicted resource, e.g. a preempted one or one whose 
`ClusterQueue` is stopped with `HoldAndDrain`, is queued again with a new 
`Workload`, and a running one is released through `Suspended` first.            
                            |
+| `Workload` deactivation, e.g. `kueuectl stop workload`                    | 
Supported           | A resource waits while its `Workload` is deactivated, and 
a running one is released through `Suspended` and queued again once the 
`Workload` is reactivated.                                                      
                           |
+| `waitForPodsReady`                                                        | 
Supported           | The operator records the `PodsReady` condition once the 
driver and `spark.executor.instances` executors, or the master and workers, are 
ready, and handles a `PodsReadyTimeout` like any other eviction.                
                     |
+| `spec.suspend`                                                            | 
Supported           | It takes precedence over the queueing, so that a 
suspended resource releases its `Workload`, see [Suspend](#suspend).            
                                                                                
                            |
+| Releasing the quota of an application attempt                             | 
Supported           | The `Workload` is deleted once the driver and executor 
pods of the attempt are gone, or gets the `Finished` condition when a 
`Succeeded`, `Failed` or `DriverEvicted` application [retains its 
resources](#delete-resources-on-termination). |
+| Requeuing backoff after an eviction                                       | 
Partially supported | The resource waits for the backoff which Kueue records, 
but its new `Workload` starts the requeue count over, so the backoff does not 
grow and a `backoffLimitCount` above 0 never deactivates it.                    
                       |
+| `recoveryTimeout` of `waitForPodsReady`                                   | 
Not supported       | The `PodsReady` condition stays `True` when a pod is lost 
later, e.g. an executor which Spark replaces.                                   
                                                                                
                   |
+| Maximum execution time (`kueue.x-k8s.io/max-exec-time-seconds`)           | 
Not supported       | Use the Spark native `spark.driver.timeout` instead, as 
in [pi-with-driver-timeout.yaml](../examples/pi-with-driver-timeout.yaml).      
                                                                                
                     |
+| Partial admission                                                         | 
Not supported       | The pod sets of a `Workload` have no `minCount`, so Kueue 
admits all the requested pods or none.                                          
                                                                                
                   |
+| Topology Aware Scheduling                                                 | 
Not supported       | The operator applies neither the topology assignment nor 
the scheduling gate of Kueue to the pods.                                       
                                                                                
                    |
+| MultiKueue                                                                | 
Not supported       | `SparkApplication` and `SparkCluster` have no 
`spec.managedBy` field, which MultiKueue needs to run them on a worker cluster. 
                                                                                
                               |
+| Elastic workloads (`Workload` slices)                                     | 
Not supported       | A resource has one `Workload` whose pod set counts are 
fixed.                                                                          
                                                                                
                      |
+| `manageJobsWithoutQueueName` and `managedJobsNamespaceSelector`           | 
Not supported       | Kueue does not manage the Spark custom resources itself, 
so a resource without the `kueue.x-k8s.io/queue-name` label is not queued and 
starts right away.                                                              
                      |
+| Dynamic allocation (`spark.dynamicAllocation.enabled`)                    | 
Not supported       | Such a `SparkApplication` fails with `SchedulingFailure` 
instead of being queued.                                                        
                                                                                
                    |
+| `SparkCluster` with `minWorkers < maxWorkers`                             | 
Not supported       | Such a `SparkCluster` fails with `SchedulingFailure` 
instead of being queued.                                                        
                                                                                
                        |
+| Pod template files (`spark.kubernetes.{driver,executor}.podTemplateFile`) | 
Not supported       | A `SparkApplication` whose pod template is set only in 
such a file fails with `SchedulingFailure`, so set it in the 
[spec](#pod-template-support) instead.                                          
                                         |
+
 * The Helm chart sets `spark.kubernetes.operator.kueue.enabled` together with 
the Kueue RBAC rules
   when `operatorRbac.kueue.enabled` is set. Kueue and its `LocalQueue` must 
exist as well. See
   [Optional Prerequisites](operations.md#optional-prerequisites). Without the 
integration, the


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to