在迁移期间或向 Azure Linux 容器主机添加新节点池时,可能会遇到过时内核版本的问题。 Azure Kubernetes 服务 (AKS)每周发布一个新的 Azure Linux 节点映像,该映像用于新节点池,以及用于纵向扩展的起始映像。 但是,较旧的节点池可能无法按预期更新其内核版本。
本文提供了有关如何解决 AKS 中Azure Linux 容器主机节点映像运行过时内核版本的问题的指导,包括识别症状、了解根本原因以及应用建议的解决方案,以确保节点正在运行最新的内核版本。
验证节点池的内核版本
使用以下命令检查节点池的内核版本:
kubectl get nodes -o wide将节点池的内核版本与 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
后续步骤
如果上述步骤无法解决问题,请开具 支持票证。