@@ -15,27 +15,28 @@ Controller, a Workload Controller, and a Framework Controller.
1515Kueue requires the definition of an Admission Controller that ensures
1616that the ` .spec.suspend ` field of newly created AppWrapper instances is
1717set to true. We also leverage the Admission Controller to ensure that
18- the user creating the AppWrapper is also entitled to create the contained resources
18+ the user creating the AppWrapper is entitled to create all wrapped resources
1919and to validate AppWrapper-specific invariants.
2020
2121See [ appwrapper_webhook.go] ({{ site.gh_main_url }}/internal/webhook/appwrapper_webhook.go)
2222for the implementation.
2323
2424#### Workload Controller
2525
26- An instantiation of Kueue’s GenericReconciller along with an
27- implementation of Kueue’s GenericJob interface for the AppWrapper
28- CRD. As is standard practice in Kueue, this controller will watch
29- AppWrapper instances and their owned Workload instances to reconcile
30- the two. This controller will make it possible for Kueue to suspend,
31- resume, and constrain the placement of the AppWrapper. It will report
32- the status of the AppWrapper to Kueue.
26+ The Workload Controller is an instantiation of Kueue’s JobReconciller
27+ along with an implementation of Kueue’s GenericJob interface for
28+ AppWrappers. As is standard practice in Kueue, this controller will
29+ watch AppWrapper instances and their owned Workload instances to
30+ reconcile the two. This controller makes it possible for Kueue to
31+ suspend and resume the AppWrapper and constrain the placement of pods
32+ created by the wrapped resources of the AppWrapper. It also translates
33+ the status of the AppWrapper to the format expected by Kueue.
3334
3435See [ workload_controller.go] ({{ site.gh_main_url }}/internal/controller/workload/workload_controller.go)
3536for the implementation.
3637
3738A small additional piece of logic is currently needed to generalize
38- Kueue's ability to recognize parent/children relationships and enforce
39+ Kueue's ability to recognize parent/children relationships and ensure
3940that admission by Kueue of the parent AppWrapper will be propagated to
4041its immediate children.
4142
@@ -44,7 +45,7 @@ for the implementation.
4445
4546#### Framework Controller
4647
47- A standard reconciliation loop that watches AppWrapper instances and
48+ The Framework Controller is a standard reconciliation loop that watches AppWrapper instances and
4849is responsible for all AppWrapper-specific operations including
4950creating, monitoring, and deleting the wrapped resources in response
5051to the modifications of the AppWrapper instance’s specification and
@@ -96,7 +97,13 @@ stateDiagram-v2
9697 class s succeeded
9798```
9899
99- The state diagram above depicts the transitions between the Phases of an AppWrapper. These states are augmented by two orthogonal conditions:
100+ The state diagram above depicts the transitions between the Phases of
101+ an AppWrapper. A label on an edge indicates the state change that will
102+ trigger that transition. For example, if an AppWrapper is in the
103+ Suspended Phase and ` spec.suspend ` becomes False then the Framework Controller
104+ will transition the AppWrapper to the Resuming Phase.
105+
106+ These states are augmented by two orthogonal Conditions:
100107 + ** QuotaReserved** indicates whether the AppWrapper is considered Active by Kueue.
101108 + ** ResourcesDeployed** indicates whether wrapped resources may exist on the cluster.
102109
0 commit comments