<p>I was looking for method to upgrade k8s version without downtime for Azure AKS and found this amazing blog post <a href="https://omichels.github.io/zerodowntime-aks.html" rel="nofollow noreferrer">https://omichels.github.io/zerodowntime-aks.html</a> but I got error at the start only</p>
<p>So currently running version of k8s in my region is no more available. When I tried to create a temporary nodepool got below error</p>
<pre><code>(AgentPoolK8sVersionNotSupported) Version 1.19.6 is not supported in this region. 
Please use [az aks get-versions] command to get the supported version list in this region. 
For more information, please check https://aka.ms/supported-version-list
</code></pre>
<p>What can I do to achieve zero downtime upgrade?</p>

<p>Here is how I upgraded without downtime, for your reference.</p>
<ol>
<li><p>Upgrade control plane only. (Can finish it on azure portal)<a href="https://i.stack.imgur.com/TcPX2.png" rel="noreferrer"><img src="https://i.stack.imgur.com/TcPX2.png" alt="enter image description here" /></a></p>
</li>
<li><p>Add a new Node pool. Now the version of new node pool is higher(same with control plane). Then add a label to it, e.g.  <strong>nodePool=newNodePool</strong>.</p>
</li>
<li><p>Patch all application to the new node pool. (By nodeSelector)</p>
<p><code>$ kubectl get deployment -n {namespace} -o name | xargs kubectl patch -p &quot;{\&quot;spec\&quot;:{\&quot;template\&quot;:{\&quot;spec\&quot;:{\&quot;nodeSelector\&quot;:{\&quot;nodePool\&quot;:\&quot;newNodePool\&quot;}}}}}&quot; -n {namespace}</code></p>
</li>
<li><p>Check the pods if are scheduled to the new node pool.</p>
<p><code>$ kubectl get pods -owide</code></p>
</li>
<li><p>Delete the old node pool.</p>
</li>
</ol>
