次の方法で共有


Azure Linux コンテナー ホストのノード イメージでの古いカーネル バージョンのトラブルシューティング

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

ノード プールのカーネルのバージョンを調べるには、次のコマンドを実行します。

    kubectl get nodes -o wide

次に、ノード プールのカーネルのバージョンを、packages.microsoft.com で公開されている最新のカーネルと比較します。

症状

この問題の一般的な症状は次のとおりです。

  • Azure Linux ノードで、最新のカーネル バージョンが使われていません。

原因

この問題の主な原因は 2 つあります。

  1. ノード プールの作成時に、ノード イメージの自動アップグレードが有効になっていませんでした。
  2. AKS がクラスターの開始に使用する基本イメージが、ロールアウト手順のため、最新のカーネル バージョンから 2 週間遅れて実行されます。

解決策

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 テンプレートを使ってノード イメージの自動アップグレードを有効にするには、autoUpgradeProfileupgradeChannel プロパティを 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

次のステップ

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