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\u003eThe content provides documentation for \u003ccode\u003eUpgradeSettings\u003c/code\u003e within the \u003ccode\u003eGoogle.Cloud.Container.V1\u003c/code\u003e namespace, specifically for managing node pool upgrades in Google Kubernetes Engine.\u003c/p\u003e\n"],["\u003cp\u003eIt lists available versions of the documentation, ranging from version 3.33.0 (latest) down to 2.3.0 for \u003ccode\u003eGoogle.Cloud.Container.V1.NodePool.Types.UpgradeSettings\u003c/code\u003e.\u003c/p\u003e\n"],["\u003cp\u003e\u003ccode\u003eUpgradeSettings\u003c/code\u003e control the parallel upgrade of nodes, determining the number of nodes that can be unavailable (\u003ccode\u003eMaxUnavailable\u003c/code\u003e) or added temporarily (\u003ccode\u003eMaxSurge\u003c/code\u003e) during an upgrade.\u003c/p\u003e\n"],["\u003cp\u003eThe sum of \u003ccode\u003eMaxUnavailable\u003c/code\u003e and \u003ccode\u003eMaxSurge\u003c/code\u003e dictates the parallelism of node upgrades, and even with \u003ccode\u003eMaxUnavailable\u003c/code\u003e set to 0, some disruption during upgrades is expected.\u003c/p\u003e\n"],["\u003cp\u003eThe \u003ccode\u003eUpgradeSettings\u003c/code\u003e class has properties to set the \u003ccode\u003eMaxSurge\u003c/code\u003e and \u003ccode\u003eMaxUnavailable\u003c/code\u003e as an \u003ccode\u003eInt32\u003c/code\u003e and also has constructors for initialization, and is a sealed class that inherits from \u003ccode\u003eObject\u003c/code\u003e and implements multiple interfaces.\u003c/p\u003e\n"]]],[],null,[]]