移行中、または新しいノード プールを Azure Linux コンテナー ホストに追加するときに、古いカーネル バージョンに関する問題が発生する可能性があります。 Azure Kubernetes Service (AKS) は、新しい Azure Linux ノード イメージを毎週リリースします。これは、新しいノード プールと、スケールアップの開始イメージとして使用されます。 ただし、古いノード プールでは、カーネルのバージョンが想定どおりに更新されていない可能性があります。
この記事では、AKS Azure Linux Container Host ノード イメージで古いカーネル バージョンが実行されている問題のトラブルシューティング方法について説明します。これには、症状の特定、根本的な原因の理解、推奨されるソリューションの適用によって、ノードで最新のカーネル バージョンが実行されていることを確認する方法が含まれます。
ノード プールのカーネル バージョンを確認する
次のコマンドを使用して、ノード プールのカーネル バージョンを確認します。
kubectl get nodes -o wideノード プールのカーネル バージョンと、 packages.microsoft.com で発行された最新のカーネルを比較します。
症状:
この問題の一般的な症状は、Azure Linux ノードで最新のカーネル バージョンが使用されていないことです。
原因
次の理由のいずれかまたは両方が原因で、AKS Azure Linux Container Host ノード イメージで古いカーネル バージョンが発生する可能性があります。
- ノード プールの作成時に、ノード イメージの自動アップグレードが有効になっていませんでした。
- AKS がクラスターの開始に使用する基本イメージが、ロールアウト手順のため、最新のカーネル バージョンから 2 週間遅れて実行されます。
ソリューション
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 ファイルのノードの監視、ワークロードのドレイン、ノードの再起動を行うことができます。
回避策: 手動アップグレード
簡単な回避策が必要な場合は、 az aks nodepool upgrade コマンドを使用して、AKS クラスター上のノード イメージを手動でアップグレードできます。 例えば次が挙げられます。
az aks nodepool upgrade \
--resource-group testAzureLinuxResourceGroup \
--cluster-name testAzureLinuxCluster \
--name myAzureLinuxNodePool \
--node-image-only
次のステップ
前の手順で問題を解決できない場合は、サポート チケットを開きます。