對 Azure Linux 容器主機節點映像中過時的核心版本進行疑難排解
在移轉期間或將新的節點集區新增至 Azure Linux 容器主機時,您可能會遇到核心版本已過時的問題。 Azure Kubernetes Service (AKS) 每週都會發行新的 Azure Linux 節點映像,用於新的節點集區,以及作為擴大的起始映像。 不過,較舊的節點集區可能不會如預期更新其核心版本。
若要檢查節點集區的核心版本,請執行:
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
下一步
若上述步驟未解決問題,請開啟支援票證。