无需停机即可升级 Azure AKS

Upgrading Azure AKS without downtime

我一直在寻找无需停机即可升级 Azure AKS 的 k8s 版本的方法,并发现了这个很棒的博客 post https://omichels.github.io/zerodowntime-aks.html 但我只在开始时遇到错误

因此目前 运行 我所在地区的 k8s 版本不再可用。当我尝试创建一个临时节点池时出现以下错误

(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

如何实现零停机升级?

下面是我不停机升级的方法,供大家参考。

  1. 仅升级控制平面。 (可以在azure portal上完成)

  2. 添加一个新的节点池。现在新节点池的版本更高(与控制平面相同)。然后为其添加标签,例如nodePool=newNodePool.

  3. 将所有应用程序修补到新节点池。 (通过节点选择器)

    $ kubectl get deployment -n {namespace} -o name | xargs kubectl patch -p "{\"spec\":{\"template\":{\"spec\":{\"nodeSelector\":{\"nodePool\":\"newNodePool\"}}}}}" -n {namespace}

  4. 检查pods是否被安排到新的节点池。

    $ kubectl get pods -owide

  5. 删除旧的节点池。