Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add Serving Workload section on KEP-976. #3692

Open
wants to merge 1 commit into
base: main
Choose a base branch
from
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
19 changes: 19 additions & 0 deletions keps/976-plain-pods/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@
- [Single Pods](#single-pods)
- [Groups of Pods created beforehand](#groups-of-pods-created-beforehand)
- [Groups of pods where driver generates workers](#groups-of-pods-where-driver-generates-workers)
- [Serving Workload](#serving-workload)
- [Tracking admitted and finished Pods](#tracking-admitted-and-finished-pods)
- [Retrying Failed Pods](#retrying-failed-pods)
- [Dynamically reclaiming Quota](#dynamically-reclaiming-quota)
Expand Down Expand Up @@ -551,6 +552,24 @@ spec:
cpu: 1m
```

#### Serving Workload

1. The Pod Group integration adds successfully completed pods to the `ReclaimablePods` list. However,
this is problematic for serving workloads, such as `StatefulSet`, because it prevents to ungate the replacement
pod. This behavior is incorrect, as recreated pods for serving workloads should continue to run
regardless if the pod was failed or succeeded.
To resolve this issue, the `kueue.x-k8s.io/pod-group-serving` annotation can be used. When this
annotation is set to true, the `ReclaimablePods` mechanism no longer tracks the number of
pods, allowing to ungate the replacement pod.
2. The Pod Group integration waits until all pods are created. However, for serving workloads such
as `StatefulSets` with a `PodManagementPolicyType` of `OrderedReady`, pods are created sequentially,
with each subsequent pod being created only after the previous pod is fully running. This
sequential behavior can result in a deadlock.
To resolve this issue, the `kueue.x-k8s.io/pod-group-fast-admission` annotation is used.
When this annotation is set to true, the PodGroup can proceed with admission without requiring
all pods to reach the ungated state.


### Tracking admitted and finished Pods

Pods need to have finalizers so that we can reliably track how many of them run to completion and be
Expand Down