@@ -257,16 +257,47 @@ The above update rules apply to regular pod updates, but other pod fields can be
257257
258258### Pod generation
259259
260- - The ` generation ` field is unique. It will be automatically set by the
260+ - The ` metadata. generation` field is unique. It will be automatically set by the
261261 system such that new pods have a ` metadata.generation ` of 1, and every update to
262262 mutable fields in the pod's spec will increment the ` metadata.generation ` by 1.
263263
264264 {{< feature-state for_k8s_version="v1.34" state="beta" >}}
265265
266- - ` observedGeneration ` is an optional field that is captured in the ` status ` section of the Pod
267- object. Kubelet will set ` status.observedGeneration ` to track the pod state to the current pod status.
268- The pod's ` status.observedGeneration ` will reflect the ` metadata.generation ` of the pod at the point
269- that the pod status is being reported.
266+ - ` observedGeneration ` is a field that is captured in the ` status ` section of the Pod
267+ object. If the feature gate ` PodObservedGenerationTracking ` is set, the Kubelet will set ` status.observedGeneration `
268+ to track the pod state to the current pod status. The pod's ` status.observedGeneration ` will reflect the
269+ ` metadata.generation ` of the pod at the point that the pod status is being reported.
270+
271+ The key distinction is whether a change in the ` spec ` is reflected directly in the ` status ` or is an indirect result
272+ of a running process.
273+
274+ #### Direct Status Updates
275+
276+ For fields where a change can be directly observed and reflected in the Pod's status, the ` observedGeneration ` will
277+ match the current ` spec ` generation (Generation N) during the same sync loop.
278+
279+ This behavior applies to:
280+
281+ - ** Resize Status** : The status of a resource resize operation.
282+ - ** Allocated Resources** : The resources allocated to the Pod after a resize.
283+ - ** Ephemeral Containers** : When a new ephemeral container is added, and it is in ` Waiting ` state.
284+
285+ #### Indirect Status Updates
286+
287+ For changes that require a process to run before the result is visible the status will reflect the outcome of the previous
288+ ` spec ` generation (Generation N-1) during the current sync loop. The ` observedGeneration ` will update in a subsequent loop
289+ after the process completes.
290+
291+ This behavior applies to:
292+
293+ - ** Container Image** : The ` ContainerStatus.ImageID ` reflects the image from the previous generation until the new image
294+ is pulled and the container is updated.
295+ - ** Actual Resources** : During an in-progress resize, the actual resources in use still belong to the previous generation's
296+ request.
297+ - ** Container state** : During an in-progress resize, with require restart policy reflects the previous generation's
298+ request.
299+ - ** activeDeadlineSeconds** & ** terminationGracePeriodSeconds** & ** DeletionTimestamp** : The effects of these fields on the
300+ Pod's status are a result of the previously observed specification.
270301
271302## Resource sharing and communication
272303
0 commit comments