Write proposal for controller pod management: adoption, orphaning, ownership, etc. (aka controllers v2) #14961
Open
Description
Write a comprehensive proposal for how controllers should manage sets of pods. The main goal is to make controller APIs more usable and less error-prone.
We've discussed a number of changes:
- unique label generation: Generate unique label for Replication Controller, Job #12298, Server side defaulting of values prevents diff patches from working #34292
- controllerRef to manage overlap: Validate no replicationController overlap. #2210 (comment)
- server-side cascading deletion via existence dependences: Consistently support graceful and immediate termination for all objects #1535 (comment)
- GC prevention via finalizers: Places for hooks #3585
- deletion of non-conforming pods: https://github.com/kubernetes/kubernetes/blob/master/docs/design/daemon.md#cluster-mutations
- generation/observedGeneration: Create per-object sequence number and report last value seen in status of each object #7328
- status field containing selector query: Links to related object in json responses #3676
- conditions: Add Conditions alongside Phases. #14181
- aggregate status: Add status column for kubectl get replicationcontroller/service #7483
- policy for naming generated resources: ReplicationController pod template ignores generateName (ignores all ObjectMeta in fact) #15776
- reverse label lookup: Reverse lookup by labels #1348
We may want to split the following into separate issues:
Changes that would facilitate static work/role assignment:
- identity assignment: PetSet (was nominal services) #260, Indexed Job #14188
- PVC replication: Proposal: Allow anonymous inline claim in pod definition #12450
Long-standing idea to improve security and reusability around templates:
- separate template: Separate the pod template from replicationController #170
Reusability could also be addressed by:
- template proposal: initial template and parameterization proposal #18215
Also need to make it easier to update existing pods:
- For labels, currently need to update pod template, then pods, then selector: https://github.com/kubernetes/kubernetes/blob/master/pkg/kubectl/rolling_updater.go#L616 . The loop to update pods after that wouldn't be necessary if it watched observedGeneration (Create per-object sequence number and report last value seen in status of each object #7328).
- Inline updates: In-place rolling updates #9043
- vertical auto-scaling
Metadata
Assignees
Labels
Type
Projects
Status
Needs Triage