Add blog for stale controller mitigation#54792
Add blog for stale controller mitigation#54792michaelasp wants to merge 1 commit intokubernetes:mainfrom
Conversation
|
[APPROVALNOTIFIER] This PR is NOT APPROVED This pull-request has been approved by: The full list of commands accepted by this bot can be found here. DetailsNeeds approval from an approver in each of these files:Approvers can indicate their approval by writing |
✅ Pull request preview available for checkingBuilt without sensitive environment variables
To edit notification comments on pull requests, go to your Netlify project configuration. |
✅ Pull request preview available for checkingBuilt without sensitive environment variables
To edit notification comments on pull requests, go to your Netlify project configuration. |
|
Hi @michaelasp 👋 v1.36 Communications team here, @lukasmetzner as author of #54693, I'd like you to be a writing buddy for @michaelasp on this PR. Please:
|
content/en/blog/_posts/2026/2026-03-26-staleness-mitigation-for-controllers/index.md
Outdated
Show resolved
Hide resolved
content/en/blog/_posts/2026/2026-03-26-staleness-mitigation-for-controllers/index.md
Show resolved
Hide resolved
|
Hey @michaelasp, I am your assigned writing buddy. The blog article looks good to me apart from the open thread above, where I agree on adding a basic example. |
| An informer author can use the `ConsistencyStore` to track the latest resource version of the objects that the informer cares about. | ||
| It provides 3 main functions: | ||
|
|
||
| 1. `consistencyStore.WroteAt(owningObj, UID, groupResource, resourceVersion)`: This function is called by the controller when it writes to the API server for an object. |
There was a problem hiding this comment.
I find this pseudo code confusing, because the parameter names are sometimes a description like owningObject and sometypes the type like UID, I think maybe just using go code to have both a parameter name and a type would be better
There was a problem hiding this comment.
I just dropped in the interface we provide here, I think that should work.
content/en/blog/_posts/2026/2026-03-26-staleness-mitigation-for-controllers/index.md
Outdated
Show resolved
Hide resolved
content/en/blog/_posts/2026/2026-03-26-staleness-mitigation-for-controllers/index.md
Outdated
Show resolved
Hide resolved
lmktfy
left a comment
There was a problem hiding this comment.
Thanks.
- avoid using "we"
- for official post-repease Comms I do recommend aligning to the style guide
- I think the feature gate names might be wrong in one place
content/en/blog/_posts/2026/2026-03-26-staleness-mitigation-for-controllers/index.md
Show resolved
Hide resolved
content/en/blog/_posts/2026/2026-03-26-staleness-mitigation-for-controllers/index.md
Outdated
Show resolved
Hide resolved
content/en/blog/_posts/2026/2026-03-26-staleness-mitigation-for-controllers/index.md
Outdated
Show resolved
Hide resolved
| ### client-go improvements | ||
|
|
||
| In client-go, we have added the `AtomicFIFO` feature on top of the existing RealFIFO queue implementation. Doing so allows for | ||
| the queue to atomically handle operations that batch events such as the List portion of the ListWatch operation. This ensures |
There was a problem hiding this comment.
| the queue to atomically handle operations that batch events such as the List portion of the ListWatch operation. This ensures | |
| the queue to atomically handle operations that batch events such as the list portion of the `ListWatch()` operation. This ensures |
I recommend the parents to imply it's a function you can call. Have I got that right? The actual verb is watch.
There was a problem hiding this comment.
It's based on the list->watch pattern that informers do that has recently been updated to streaming lists https://kubernetes.io/docs/reference/using-api/api-concepts/#streaming-lists
It doesn't really matter which you use. I updated this section a bit to make this more clear.
content/en/blog/_posts/2026/2026-03-26-staleness-mitigation-for-controllers/index.md
Outdated
Show resolved
Hide resolved
|
|
||
| ### Metrics | ||
|
|
||
| We have added the following alpha metrics to kube-controller-manager: |
There was a problem hiding this comment.
| We have added the following alpha metrics to kube-controller-manager: |
Nit: could hyperlink to the relevant entry in the metrics reference docs.
There was a problem hiding this comment.
Those are auto generated right? How should I best list this? I don't see a specific way to link any better than https://kubernetes.io/docs/reference/instrumentation/metrics/#list-of-alpha-kubernetes-metrics
Added that link for now since it matches the alpha metrics line.
content/en/blog/_posts/2026/2026-03-26-staleness-mitigation-for-controllers/index.md
Outdated
Show resolved
Hide resolved
content/en/blog/_posts/2026/2026-03-26-staleness-mitigation-for-controllers/index.md
Outdated
Show resolved
Hide resolved
content/en/blog/_posts/2026/2026-03-26-staleness-mitigation-for-controllers/index.md
Outdated
Show resolved
Hide resolved
content/en/blog/_posts/2026/2026-03-26-staleness-mitigation-for-controllers/index.md
Outdated
Show resolved
Hide resolved
Let me look through that along with your review and update this, thanks for the pass! |
michaelasp
left a comment
There was a problem hiding this comment.
Thanks for the review, this should address most of your comments. Looking through the style guide to see if anything else was missed.
content/en/blog/_posts/2026/2026-03-26-staleness-mitigation-for-controllers/index.md
Show resolved
Hide resolved
content/en/blog/_posts/2026/2026-03-26-staleness-mitigation-for-controllers/index.md
Outdated
Show resolved
Hide resolved
content/en/blog/_posts/2026/2026-03-26-staleness-mitigation-for-controllers/index.md
Outdated
Show resolved
Hide resolved
| ### client-go improvements | ||
|
|
||
| In client-go, we have added the `AtomicFIFO` feature on top of the existing RealFIFO queue implementation. Doing so allows for | ||
| the queue to atomically handle operations that batch events such as the List portion of the ListWatch operation. This ensures |
There was a problem hiding this comment.
It's based on the list->watch pattern that informers do that has recently been updated to streaming lists https://kubernetes.io/docs/reference/using-api/api-concepts/#streaming-lists
It doesn't really matter which you use. I updated this section a bit to make this more clear.
content/en/blog/_posts/2026/2026-03-26-staleness-mitigation-for-controllers/index.md
Outdated
Show resolved
Hide resolved
content/en/blog/_posts/2026/2026-03-26-staleness-mitigation-for-controllers/index.md
Outdated
Show resolved
Hide resolved
content/en/blog/_posts/2026/2026-03-26-staleness-mitigation-for-controllers/index.md
Outdated
Show resolved
Hide resolved
|
|
||
| ### Metrics | ||
|
|
||
| We have added the following alpha metrics to kube-controller-manager: |
There was a problem hiding this comment.
Those are auto generated right? How should I best list this? I don't see a specific way to link any better than https://kubernetes.io/docs/reference/instrumentation/metrics/#list-of-alpha-kubernetes-metrics
Added that link for now since it matches the alpha metrics line.
Description
Issue
Ref: kubernetes/enhancements#5647
This blog goes over the new stale controller mitigations we have added in 1.36 and explains the feature gates and changes done.