Skip to content

docs: add zonal shift RFC#9010

Open
DerekFrank wants to merge 1 commit intoaws:mainfrom
DerekFrank:zonal-shift-rfc
Open

docs: add zonal shift RFC#9010
DerekFrank wants to merge 1 commit intoaws:mainfrom
DerekFrank:zonal-shift-rfc

Conversation

@DerekFrank
Copy link
Copy Markdown
Contributor

Fixes: #7271

Description

How was this change tested?

Does this change impact docs?

  • Yes, PR includes docs updates
  • Yes, issue opened: #
  • No

By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license.

@DerekFrank DerekFrank requested a review from a team as a code owner March 10, 2026 00:10
@github-actions
Copy link
Copy Markdown
Contributor

github-actions bot commented Mar 10, 2026

Preview deployment ready!

Preview URL: https://pr-9010.d18coufmbnnaag.amplifyapp.com

Built from commit da8ba0c7f0eb601d6bc8406ebb79598139347a08


1. Stop provisioning capacity in the **impaired** AZ
2. Stop performing voluntary disruption in the **impaired** AZ.
3. Stop performing voluntary disruption in the **unimpaired** AZs if the disruption relies on scheduling pods to the **impaired** AZ.
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why would you discontinue disrupting instances in unimpaired AZs, e.g. underutilized or empty? If an application relies on infrastructure in the impaired AZ, it won't get scheduled unless your scheduling requirements are flexible. Are you worried losing capacity in the unimpaired AZs during an outage?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It would be preferable to stop all disruption, but that is not a hard requirement. To make that change we need integration with upstream, which we can come later as a supplement. I think there is an issue upstream for stopping disruption: kubernetes-sigs/karpenter#2497

This might make a natural addition to that

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

IMO if an AZ is truly down we rarely want to reduce our capacity in any other AZ and we attempt to lock the world. We want to minimize churn during these situations as we attempt to migrate services out of that AZ and if there is extra capacity, we are likely going to fill them very quickly.

Allowing Karpenter to disrupt would just make migration slower if capacity is going down and then respinning back up.

2. Stop performing voluntary disruption in the **impaired** AZ.
3. Stop performing voluntary disruption in the **unimpaired** AZs if the disruption relies on scheduling pods to the **impaired** AZ.
4. Pods with strict scheduling requirements that require capacity in the impaired AZ such as volume requirements or node affinities **should not** result in launch attempts
5. If an option is set, pods with TSCs that require capacity in the impaired AZ should instead have capacity launched into unimpaired AZs while still maintaining skew between the remaining unimpaired AZs.
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If cluster topology consists of 3 zones and 1 is impaired, how will pods get scheduled in the unimpaired zones (without changing the whenUnsatisfiable to scheduleAnyway)?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.


### Events

Karpenter could event against nodepools that allow instances in the impaired AZ to indicate that new nodes cannot be provisioned in a given AZ. This is not required for an initial release, but could be a nice follow up.
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I want say at the very least the NodePool/ NodeClass' status should be updated with "impaired az"

@GnatorX
Copy link
Copy Markdown

GnatorX commented Mar 17, 2026

Sorry didnt realize which user i was on Github. Overall looks good to me. Minor comments on understanding how certain pieces works. Thanks for the write up! Looking forward to this

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Add support for Amazon Application Recovery Controller (ARC) Zonal Shift feature

4 participants