Skip to content

Commit b89a59e

Browse files
doc update issue#51195 -v1
1 parent 4b8babe commit b89a59e

File tree

1 file changed

+36
-5
lines changed
  • content/en/docs/concepts/workloads/pods

1 file changed

+36
-5
lines changed

content/en/docs/concepts/workloads/pods/_index.md

Lines changed: 36 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)