Azure Linux コンテナー ホストのノード イメージでの古いカーネル バージョンのトラブルシューティング
移行の間、または Azure Linux コンテナー ホストに新しいノード プールを追加するときに、古いカーネル バージョンに関する問題が発生する可能性があります。 Azure Kubernetes Service (AKS) では新しい Azure Linux ノード イメージが毎週リリースされており、これは新しいノード プール用に、またスケールアップの開始イメージとして使用されます。 ただし、古いノード プールで、カーネルのバージョンが想定どおりに更新されないことがあります。
ノード プールのカーネルのバージョンを調べるには、次のコマンドを実行します。
kubectl get nodes -o wide
次に、ノード プールのカーネルのバージョンを、packages.microsoft.com で公開されている最新のカーネルと比較します。
症状
この問題の一般的な症状は次のとおりです。
- Azure Linux ノードで、最新のカーネル バージョンが使われていません。
原因
この問題の主な原因は 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 テンプレートを使ってノード イメージの自動アップグレードを有効にするには、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
次のステップ
前の手順で問題を解決できない場合は、サポート チケットを開きます。