These upgrade settings control the level of parallelism and the level of
disruption caused by an upgrade.
maxUnavailable controls the number of nodes that can be simultaneously
unavailable.
maxSurge controls the number of additional nodes that can be added to the
node pool temporarily for the time of the upgrade to increase the number of
available nodes.
(maxUnavailable + maxSurge) determines the level of parallelism (how many
nodes are being upgraded at the same time).
Note: upgrades inevitably introduce some disruption since workloads need to
be moved from old nodes to new, upgraded ones. Even if maxUnavailable=0,
this holds true. (Disruption stays within the limits of
PodDisruptionBudget, if it is configured.)
Consider a hypothetical node pool with 5 nodes having maxSurge=2,
maxUnavailable=1. This means the upgrade process upgrades 3 nodes
simultaneously. It creates 2 additional (upgraded) nodes, then it brings
down 3 old (not yet upgraded) nodes at the same time. This ensures that
there are always at least 4 nodes available.
[[["Easy to understand","easyToUnderstand","thumb-up"],["Solved my problem","solvedMyProblem","thumb-up"],["Other","otherUp","thumb-up"]],[["Missing the information I need","missingTheInformationINeed","thumb-down"],["Too complicated / too many steps","tooComplicatedTooManySteps","thumb-down"],["Out of date","outOfDate","thumb-down"],["Samples / code issue","samplesCodeIssue","thumb-down"],["Other","otherDown","thumb-down"]],["Last updated 2025-08-07 UTC."],[[["\u003cp\u003eThis webpage provides documentation for \u003ccode\u003eUpgradeSettings\u003c/code\u003e within the \u003ccode\u003eGoogle.Cloud.Container.V1\u003c/code\u003e namespace, specifically for managing node upgrades in Google Kubernetes Engine (GKE).\u003c/p\u003e\n"],["\u003cp\u003eThe content lists numerous historical versions of the \u003ccode\u003eUpgradeSettings\u003c/code\u003e documentation, ranging from version 2.3.0 up to the latest, version 3.33.0, each version linking to the corresponding documentation for that version.\u003c/p\u003e\n"],["\u003cp\u003e\u003ccode\u003eUpgradeSettings\u003c/code\u003e class allows control over the level of parallelism and disruption during node pool upgrades, through \u003ccode\u003emaxUnavailable\u003c/code\u003e and \u003ccode\u003emaxSurge\u003c/code\u003e properties.\u003c/p\u003e\n"],["\u003cp\u003eThe \u003ccode\u003emaxSurge\u003c/code\u003e property defines the number of additional nodes that can be temporarily created during an upgrade, and the \u003ccode\u003emaxUnavailable\u003c/code\u003e property defines how many nodes can be unavailable simultaneously.\u003c/p\u003e\n"],["\u003cp\u003eThis page details that the \u003ccode\u003eUpgradeSettings\u003c/code\u003e class inherits from \u003ccode\u003eObject\u003c/code\u003e and implements \u003ccode\u003eIMessage\u003c/code\u003e, \u003ccode\u003eIEquatable\u003c/code\u003e, \u003ccode\u003eIDeepCloneable\u003c/code\u003e, and \u003ccode\u003eIBufferMessage\u003c/code\u003e interfaces, providing functionality for message handling, equality checks, deep cloning, and buffer message operations.\u003c/p\u003e\n"]]],[],null,[]]