6.15 Kubernetes Manifest Field Ownership
Kubernetes Manifest Field Ownership defines which entities control fields, ensuring proper resource management and access in clusters.
Kubernetes Manifest Field Ownership is the granular, per-leaf-field record the API server maintains describing exactly which manifest, submitted by which actor, most recently set each individual value within an object, stored as a structured entry in managedFields and forming the precise data structure that server-side apply's merge and conflict-detection logic operates against.
The managedFields Entry Structure
One Entry per Field Manager and API Version
Each entry in metadata.managedFields corresponds to a specific field manager operating at a specific API version, recording the operation type, Apply or Update, a timestamp, and a compact, structured description of exactly which fields that manager currently owns within the object.
Why API Version Is Tracked Per Entry
Because the same logical field can appear at different paths or under different names across different served versions of a resource, tracking the API version alongside each entry ensures ownership information remains correctly interpretable even as a manifest author's client shifts between versions over the object's lifetime.
The FieldsV1 Encoding
A Compact Tree Representation
Ownership within an entry is stored using a format called FieldsV1, a compact, tree-shaped encoding that mirrors the object's own structure, marking which specific leaf fields, and which specific list elements, identified by their merge key, are owned by that entry, without needing to duplicate the actual field values themselves.
Distinguishing Leaf Ownership From Structural Presence
The encoding distinguishes between a field manager owning a specific leaf value versus merely being aware that a parent structure exists because a sibling field within it is owned, ensuring ownership tracking remains precise down to the smallest meaningful unit of change rather than being forced into coarser, whole-object-section granularity.
How Ownership Is Computed on Each Apply
Diffing Against Previous Ownership
On each server-side apply request, the API server compares the newly submitted set of fields against that same field manager's previous ownership record, determining which fields are newly claimed, which remain claimed as before, and which have been dropped because the new manifest no longer includes them.
Reassigning Dropped Fields
When a field manager drops ownership of a previously owned field by omitting it from a new apply request, the API server checks whether any other manager also has a record of owning that field; if so, ownership simply reverts to that other manager's existing claim, and if not, the field is removed from the object entirely.
Conflict Detection at the Field Level
Comparing Incoming Fields Against Existing Owners
For every field present in an incoming apply request, the API server checks the current managedFields records to see whether any other manager currently owns that specific field with a different value; only a genuine, value-differing overlap triggers a conflict, while agreement on the same value across multiple managers does not.
Precision Prevents Unnecessary Conflicts
Because conflict detection operates at this fine leaf-field granularity rather than at the level of, say, an entire nested object, two field managers can each own different fields within the same nested structure, such as different keys within the same map, without ever generating a spurious conflict over the shared parent structure itself.
Practical Implications of Fine-Grained Ownership
Enabling Safe Multi-Actor Nested Structures
This granularity is what allows scenarios such as one field manager owning a Deployment's spec.template.spec.containers[name=app].image while a completely different manager owns spec.template.spec.containers[name=app].resources, both coexisting within the same container entry of the same list, without either being forced to also declare the other's fields.
Consequences of Overly Broad Manifests
A manifest that includes far more fields than it actually needs to manage, such as one copied wholesale from a live object export, ends up claiming ownership over all of those fields, increasing the surface area for future conflicts with other legitimate managers and making the ownership picture harder to reason about than a deliberately minimal, precisely scoped manifest would produce.