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 details the \u003ccode\u003eUpgradeSettings\u003c/code\u003e class 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\u003eThe \u003ccode\u003eUpgradeSettings\u003c/code\u003e class controls the level of parallelism and disruption during node pool upgrades using two key properties: \u003ccode\u003eMaxSurge\u003c/code\u003e (additional nodes) and \u003ccode\u003eMaxUnavailable\u003c/code\u003e (simultaneously unavailable nodes).\u003c/p\u003e\n"],["\u003cp\u003eThe \u003ccode\u003eUpgradeSettings\u003c/code\u003e class implements interfaces such as \u003ccode\u003eIMessage\u003c/code\u003e, \u003ccode\u003eIEquatable\u003c/code\u003e, \u003ccode\u003eIDeepCloneable\u003c/code\u003e, and \u003ccode\u003eIBufferMessage\u003c/code\u003e as it exists within the \u003ccode\u003eGoogle.Protobuf\u003c/code\u003e API.\u003c/p\u003e\n"],["\u003cp\u003eThe page lists all the previous versions of the class, with the latest being version \u003ccode\u003e3.33.0\u003c/code\u003e and the oldest on the list being version \u003ccode\u003e2.3.0\u003c/code\u003e, all of which are linked to their respective documentation pages.\u003c/p\u003e\n"],["\u003cp\u003eUpgrading a node pool will inevitably introduce disruption to workloads, which can be further managed using PodDisruptionBudgets, even with \u003ccode\u003eMaxUnavailable\u003c/code\u003e set to 0.\u003c/p\u003e\n"]]],[],null,[]]