Create blog post on AKS NAP disruption management - #5685
Conversation
Added a blog post on managing disruption with AKS Node Auto-Provisioning, covering best practices for Pod Disruption Budgets and consolidation.
There was a problem hiding this comment.
Pull request overview
Adds a new AKS blog post focused on managing voluntary disruption when using Node Auto-Provisioning (NAP), with guidance on Pod Disruption Budgets (PDBs), consolidation controls, disruption budgets, and maintenance windows.
Changes:
- Added a new blog post covering NAP disruption concepts and common pitfalls.
- Included YAML examples for PDBs and NodePool disruption settings (consolidation policy, budgets, schedules).
- Added operational guidance on observability and drift/image update considerations.
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Clarified descriptions of Pod Disruption Budgets and their impact on voluntary evictions. Improved wording for clarity and corrected minor typos.
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> Co-authored-by: Ahmed Sabbour <103856+sabbour@users.noreply.github.com>
Updated formatting and clarified sections on NAP disruption best practices, including node disruption budgets and observability.
Updated guidance on managing NAP node disruptions, including operational takeaways and common pitfalls with suggested fixes.
Updated questions and best practices regarding NAP disruption, including links and clarifications.
Updated the description and corrected a typo in the blog post about AKS Node Auto-Provisioning. Adjusted the link to the NAP scheduling fundamentals blog post for accuracy.
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 1 out of 2 changed files in this pull request and generated 2 comments.
Comments suppressed due to low confidence (1)
website/blog/2026-04-12-nap-disruption/index.md:3
- The front-matter
descriptionis much longer than the 150–160 character guideline for blog SEO metadata. Shorten it so it fits within that range.
description: "Learn AKS best practices for managing node disruption when using node auto provisioning (NAP) with pod disruption budgets, node disruption budgets, consolidation policies, and maintenance windows in production."
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 1 out of 2 changed files in this pull request and generated no new comments.
Comments suppressed due to low confidence (2)
website/blog/2026-04-12-nap-disruption/index.md:3
- The front-matter
descriptionis ~210 characters, which exceeds the 150–160 character SEO guideline for blog posts and may be truncated in listings/search results. Shorten it to ~150–160 characters while keeping the key terms (AKS, NAP, PDBs, consolidation, maintenance windows).
description: "Learn AKS best practices for managing node disruption when using node auto provisioning (NAP) with pod disruption budgets, node disruption budgets, consolidation policies, and maintenance windows in production."
website/blog/2026-04-12-nap-disruption/index.md:19
- This link targets
https://blog.aks.azure.com/2025/12/06/node-provisioning-best-practice, but there’s no post/slug in the repo that matches it. This will publish as a broken link. Update it to point to an existing post (for example, the 2025-12-06 NAP post).
This post focuses on **NAP disruption best practices**, not workload scheduling tools such as topology spread constraints, node affinity, and taints. For scheduling best practices, see the [NAP scheduling fundamentals blog post](https://blog.aks.azure.com/2025/12/06/node-provisioning-best-practice).
| **Practical guidance:** | ||
|
|
||
| - For critical workloads that you do not want to disrupt, zero eviction may be intentional. Be deliberate. When you're ready to allow disruption to these workloads, you may need to change the PDBs in the workload deployment file. | ||
| - For general workloads that can tolerate minor disruption, prefer a small `maxUnavailable` value, such as `1`, instead of zero evictions. |
There was a problem hiding this comment.
I would avoid stating this as a universal best practice default. For a single-replica workload, that permits the only replica to be evicted. Frame it as an example for a replicated workload and tell readers to choose a PDB from their replica count and availability objective. Maybe something like: The following example allows one replica to be unavailable during voluntary disruption. It is appropriate only when the workload has enough replicas to preserve its availability target. Choose maxUnavailable or minAvailable based on your replica count and required service capacity.
|
|
||
| ## Keep node images current | ||
|
|
||
| NAP nodes are regularly updated as images change. The node image updates documentation calls out a key behavior: **if a node image version is older than 90 days, NAP forces pickup of the latest image version and bypasses any existing maintenance window**. |
There was a problem hiding this comment.
I didn't see 90-days mentioned here https://learn.microsoft.com/en-us/azure/aks/node-auto-provisioning-upgrade-image. Is this an actual behavior? If so, this sounds troublesome and we should also document it.
| - Why won’t NAP scale down my nodes, even with lots of underused capacity? | ||
| - Why do upgrades get stuck on certain nodes? | ||
|
|
||
| This post focuses on **NAP disruption best practices**, not workload scheduling tools such as topology spread constraints, node affinity, and taints. For scheduling best practices, see the [NAP scheduling fundamentals blog post](https://blog.aks.azure.com/2025/12/06/node-provisioning-best-practice). |
There was a problem hiding this comment.
Broken link. Is that post published?
sabbour
left a comment
There was a problem hiding this comment.
Approving with some minor changes requested.
Updated the blog post to reflect changes in scheduling best practices and clarified guidance on disruption settings. Removed outdated information regarding node image updates and added practical advice for managing workloads.
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 1 out of 2 changed files in this pull request and generated no new comments.
Comments suppressed due to low confidence (4)
website/blog/2026-04-12-nap-disruption/index.md:3
- Front matter
descriptionis much longer than the 150–160 character limit required for blog posts, which can break SEO conventions and CI checks if enforced.
description: "Learn AKS best practices for managing node disruption when using node auto provisioning (NAP) with pod disruption budgets, node disruption budgets, consolidation policies, and maintenance windows in production."
website/blog/2026-04-12-nap-disruption/index.md:4
- The front matter
date(2026-07-12) doesn’t match the folder date in the post path (2026-04-12-...). Because front matter overrides the folder-derived date, this mismatch can create confusing URLs vs. publish dates; align the folder name anddate(or remove the override).
date: 2026-07-12
website/blog/2026-04-12-nap-disruption/index.md:152
- This sentence says “The following example…”, but the next content is a new section header and there isn’t an example immediately following. Reword to reference the earlier PDB example to avoid confusing readers.
The following example allows one replica to be unavailable during voluntary disruption. It is appropriate only when the workload has enough replicas to preserve its availability target. Choose `maxUnavailable` or `minAvailable` based on your replica count and required service capacity.
website/blog/2026-04-12-nap-disruption/index.md:147
- This guidance bullet repeats
maxUnavailabletwice; it should contrastmaxUnavailablewithminAvailable(the two mutually exclusive PDB fields).
This issue also appears on line 152 of the same file.
- Choose `maxUnavailable` or `maxUnavailable` based on your replica count and required service capacity.
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 1 out of 2 changed files in this pull request and generated no new comments.
Comments suppressed due to low confidence (5)
website/blog/2026-07-28-nap-disruption/index.md:27
- The post references
./hero-image.png, but that file isn’t present in this new post directory. This will render a broken image (and may fail build/link checks depending on configuration). Add the image file or update the path to an existing asset.

website/blog/2026-07-28-nap-disruption/index.md:3
- The front matter
descriptionis much longer than the blog guideline target (150–160 chars) and also uses inconsistent casing/hyphenation for Node Auto-Provisioning. Shorten it to stay within the recommended SEO length and keep the feature name consistent.
description: "Learn AKS best practices for managing node disruption when using node auto provisioning (NAP) with pod disruption budgets, node disruption budgets, consolidation policies, and maintenance windows in production."
website/blog/2026-07-28-nap-disruption/index.md:4
- The front matter
date(2026-07-12) doesn’t match the folder date (2026-07-28-...). In Docusaurus, a front matter date overrides the folder-derived date, which can lead to an unexpected publish date/permalink. Align the front matter date with the folder date (or remove it).
date: 2026-07-12
website/blog/2026-07-28-nap-disruption/index.md:19
- This link appears to point to a non-existent AKS blog URL path (
/2026/03/20/node-provisioning-best-practice). Update it to a valid canonical URL so readers don’t hit a 404.
This post focuses on **NAP disruption best practices**, not workload scheduling tools such as topology spread constraints, node affinity, and taints. For scheduling best practices, see the [NAP scheduling fundamentals blog post](https://blog.aks.azure.com/2026/03/20/node-provisioning-best-practice).
website/blog/2026-07-28-nap-disruption/index.md:147
- This bullet references
maxUnavailabletwice; the second option should beminAvailable(the two mutually exclusive PDB knobs).
- Choose `maxUnavailable` or `maxUnavailable` based on your replica count and required service capacity.
Corrected a duplicate phrase in practical guidance section.
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 1 out of 2 changed files in this pull request and generated no new comments.
Comments suppressed due to low confidence (4)
website/blog/2026-07-28-nap-disruption/index.md:3
- The front matter
descriptionis 210 characters, which exceeds the blog guideline target of 150–160 characters. Shortening it helps SEO previews and keeps metadata consistent across posts.
description: "Learn AKS best practices for managing node disruption when using node auto provisioning (NAP) with pod disruption budgets, node disruption budgets, consolidation policies, and maintenance windows in production."
website/blog/2026-07-28-nap-disruption/index.md:4
- The folder date is
2026-07-28but the front matterdateis2026-07-12. In this repo, the front matter date overrides the folder-derived date, so this mismatch will publish the post with an unexpected date (and potentially a different permalink). Align the front matter date with the folder date (or remove the front matter date).
date: 2026-07-12
website/blog/2026-07-28-nap-disruption/index.md:19
- The post links to
https://blog.aks.azure.com/2026/03/20/node-provisioning-best-practice, but there isn’t a corresponding blog post dated 2026-03-20 inwebsite/blog/(and no post withdate: 2026-03-20). This link will likely 404 after publish.
This post focuses on **NAP disruption best practices**, not workload scheduling tools such as topology spread constraints, node affinity, and taints. For scheduling best practices, see the [NAP scheduling fundamentals blog post](https://blog.aks.azure.com/2026/03/20/node-provisioning-best-practice).
website/blog/2026-07-28-nap-disruption/index.md:147
- This bullet appears to have a copy/paste typo: it says "Choose
maxUnavailableormaxUnavailable" but the two PDB knobs aremaxUnavailableandminAvailable.
- Choose `maxUnavailable` or `maxUnavailable` based on your replica count and required service capacity.
Updated the publication date and modified the next steps section to include a troubleshooting guide for NAP.
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 1 out of 2 changed files in this pull request and generated no new comments.
Comments suppressed due to low confidence (3)
website/blog/2026-07-28-nap-disruption/index.md:147
- This bullet lists
maxUnavailabletwice; the two mutually exclusive PDB options aremaxUnavailableandminAvailable.
- Choose `maxUnavailable` or `maxUnavailable` based on your replica count and required service capacity.
website/blog/2026-07-28-nap-disruption/index.md:3
- The front-matter
descriptionis substantially longer than the 150–160 character SEO guideline for blog posts, which can cause truncation in listings/search previews. Consider shortening it to fit within the target range while keeping the key terms.
description: "Learn AKS best practices for managing node disruption when using node auto provisioning (NAP) with pod disruption budgets, node disruption budgets, consolidation policies, and maintenance windows in production."
website/blog/2026-07-28-nap-disruption/index.md:19
- This post links to a "NAP scheduling fundamentals" blog URL that doesn’t correspond to any blog post in this repo, so it’s likely to 404 when published. Consider linking to an existing resource (for example, the AKS advanced scheduler best-practices doc) or updating to the correct blog permalink.
This issue also appears on line 147 of the same file.
This post focuses on **NAP disruption best practices**, not workload scheduling tools such as topology spread constraints, node affinity, and taints. For scheduling best practices, see the [NAP scheduling fundamentals blog post](https://blog.aks.azure.com/2026/03/20/node-provisioning-best-practice).
Added a blog post on managing disruption with AKS Node Auto-Provisioning, covering best practices for Pod Disruption Budgets and consolidation.