Azure Kubernetes Service (AKS) のノード イメージ向け Azure Linux Container Host における古いカーネル バージョンのトラブルシューティング

移行中、または新しいノード プールを Azure Linux コンテナー ホストに追加するときに、古いカーネル バージョンに関する問題が発生する可能性があります。 Azure Kubernetes Service (AKS) は、新しい Azure Linux ノード イメージを毎週リリースします。これは、新しいノード プールと、スケールアップの開始イメージとして使用されます。 ただし、古いノード プールでは、カーネルのバージョンが想定どおりに更新されていない可能性があります。

この記事では、AKS Azure Linux Container Host ノード イメージで古いカーネル バージョンが実行されている問題のトラブルシューティング方法について説明します。これには、症状の特定、根本的な原因の理解、推奨されるソリューションの適用によって、ノードで最新のカーネル バージョンが実行されていることを確認する方法が含まれます。

ノード プールのカーネル バージョンを確認する

  1. 次のコマンドを使用して、ノード プールのカーネル バージョンを確認します。

    kubectl get nodes -o wide
    
  2. ノード プールのカーネル バージョンと、 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

次のステップ

前の手順で問題を解決できない場合は、サポート チケットを開きます。