你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

排查 Azure Linux 容器主机节点映像中过时的内核版本问题

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

若要检查节点池的 KERNEL-VERSION,请运行:

    kubectl get nodes -o wide

然后,将节点池的内核版本与 packages.microsoft.com 上发布的最新内核进行比较。

症状

此问题的常见症状包括:

  • Azure Linux 节点未使用最新的内核版本。

原因

导致出现此问题的主要原因有两个:

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

解决方案

可以使用 GitHub Actions 启用自动升级,并重新启动节点以解决此问题。

使用 Azure CLI 启用自动节点映像升级

若要在从 az-cli 部署群集时启用自动节点映像升级,请添加参数 --auto-upgrade-channel node-image

az aks create --name testAzureLinuxCluster --resource-group testAzureLinuxResourceGroup --os-sku AzureLinux --auto-upgrade-channel node-image

使用 ARM 模板启用自动节点映像升级

若要在使用 ARM 模板时启用自动节点映像升级,可以将 autoUpgradeProfile 中的 upgradeChannel 属性设置为 node-image

    autoUpgradeProfile: {
      upgradeChannel: 'node-image'
    }

重新启动该节点

更新内核版本时,需要重新启动该节点才能使用新的内核版本。 建议设置 kured DaemonSetKured,用于监视节点的 /var/run/reboot-required 文件、清空工作负荷和重启相应节点。

解决方法:执行手动升级

如果需要快速解决方法,可以使用 az aks nodepool upgrade 手动升级群集上的节点映像。 可通过运行以下命令实现

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

后续步骤

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