你当前正在访问 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 节点未使用最新的内核版本。
原因
导致出现此问题的主要原因有两个:
- 创建节点池时未启用自动节点映像升级。
- 根据发布流程,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 DaemonSet。 Kured,用于监视节点的 /var/run/reboot-required
文件、清空工作负荷和重启相应节点。
解决方法:执行手动升级
如果需要快速解决方法,可以使用 az aks nodepool upgrade 手动升级群集上的节点映像。 可通过运行以下命令实现
az aks nodepool upgrade \
--resource-group testAzureLinuxResourceGroup \
--cluster-name testAzureLinuxCluster \
--name myAzureLinuxNodepool \
--node-image-only
后续步骤
如果上述步骤无法解决问题,请开具支持票证。