排查用于 Azure Kubernetes 服务 (AKS) 节点映像的 Azure Linux 容器主机中的过时内核版本问题

在迁移期间或向 Azure Linux 容器主机添加新节点池时,可能会遇到过时内核版本的问题。 Azure Kubernetes 服务 (AKS)每周发布一个新的 Azure Linux 节点映像,该映像用于新节点池,以及用于纵向扩展的起始映像。 但是,较旧的节点池可能无法按预期更新其内核版本。

本文提供了有关如何解决 AKS 中Azure Linux 容器主机节点映像运行过时内核版本的问题的指导,包括识别症状、了解根本原因以及应用建议的解决方案,以确保节点正在运行最新的内核版本。

验证节点池的内核版本

  1. 使用以下命令检查节点池的内核版本:

    kubectl get nodes -o wide
    
  2. 将节点池的内核版本与 packages.microsoft.com 上发布的最新内核进行比较。

症状

此问题的常见症状是,Azure Linux 节点未使用最新的内核版本。

原因

由于以下一个或两个原因,在 AKS 中Azure Linux 容器主机节点映像上可能会遇到过时的内核版本:

  • 创建节点池时未启用自动节点映像升级。
  • 根据发布流程,AKS 用于启动群集的基本映像会在最新内核版本之后大约两周运行。

解决方案

可以使用 GitHub Actions 启用自动升级,然后重新启动节点。

启用自动 AKS 节点映像升级

使用具有参数az aks create--auto-upgrade-channel node-image命令在新 AKS 群集上启用自动节点映像升级。 将占位符中的值替换为您自己的值。

az aks create --name <cluster-name> --resource-group <resource-group-name> --os-sku AzureLinux --auto-upgrade-channel node-image

重新启动该节点

更新内核版本时,需要重新启动该节点才能使用新的内核版本。 建议设置 kured DaemonSet。 可以使用 Kured 监控节点上是否存在 /var/run/reboot-required 文件,腾空工作负载,并重新启动节点。

解决方法:执行手动升级

如果需要快速解决方法,可以使用命令手动升级 AKS 群集 az aks nodepool upgrade 上的节点映像。 例如:

az aks nodepool upgrade \
    --resource-group testAzureLinuxResourceGroup \
    --cluster-name testAzureLinuxCluster \
    --name myAzureLinuxNodepool \
    --node-image-only

后续步骤

如果上述步骤无法解决问题,请开具 支持票证