チュートリアル: ノードを Azure Linux に移行する
このチュートリアル (パート 3/5) では、既存のノードを Azure Linux に移行します。 次のいずれかの方法を使って、既存のノードを Azure Linux に移行できます。
- 既存のノード プールを削除して、新しい Azure Linux ノード プールを追加します。
- OS SKU のインプレース移行。
Azure Linux に移行する既存のノードがない場合は、次のチュートリアルに進んでください。 この後のチュートリアルでは、クラスターでテレメトリと監視を有効にして、Azure Linux ノードをアップグレードする方法について説明します。
前提条件
前のチュートリアルでは、AKS クラスター用 Azure Linux コンテナー ホストを作成してデプロイしました。 このチュートリアルを完了するには、既存のクラスターに Azure Linux ノード プールを追加する必要があります。 この手順を実行しておらず、手順に沿って進めたい場合は、「チュートリアル 2: 既存の AKS クラスターに Azure Linux ノード プールを追加する」から始めます。
注意
新しい Azure Linux ノード プールを追加するときは、少なくとも 1 つを
--mode System
として追加する必要があります。 そうしないと、AKS では既存のノード プールを削除できません。最新バージョンの Azure CLI が必要です。 バージョンを確認するには、
az --version
を実行します。 インストールまたはアップグレードする必要がある場合は、Azure CLI のインストールに関するページを参照してください。
Azure Linux ノード プールを追加して、既存のノード プールを削除する
az aks nodepool add
コマンドを使って、新しい Azure Linux ノード プールを追加します。 このコマンドは、--mode System
フラグを指定してクラスターに新しいノード プールを追加します。これにより、それはシステム ノード プールになります。 Azure Linux クラスターにはシステム ノード プールが必要です。az aks nodepool add --resource-group <resource-group-name> --cluster-name <cluster-name> --name <node-pool-name> --mode System --os-sku AzureLinux
az aks nodepool delete
コマンドを使って、既存のノードを削除します。az aks nodepool delete --resource-group <resource-group-name> --cluster-name <cluster-name> --name <node-pool-name>
OS SKU のインプレース移行
ノード プールの OS SKU を変更して、既存の Ubuntu ノード プールを Azure Linux に移行できるようになりました。これにより、クラスターで標準ノード イメージ アップグレード プロセスが行われます。 この新機能では、新しいノード プールを作成する必要はありません。
制限事項
OS SKU 移行要求をブロックする可能性がある設定がいくつかあります。 移行を成功させるには、次のガイドラインと制限事項を確認してください。
- OS SKU 移行機能は、PowerShell または Azure portal では使用できません。
- OS SKU 移行機能では、既存のノード プールの名前を変更できません。
- サポートされている Linux OS SKU 移行ターゲットは、Ubuntu と Azure Linux だけです。
UseGPUDedicatedVHD
が有効になっている Ubuntu OS SKU では、OS SKU の移行を実行できません。- CVM 20.04 が有効になっている Ubuntu OS SKU では、OS SKU の移行を実行できません。
- Kata が有効になっているノード プールでは、OS SKU の移行を実行できません。
- Windows OS SKU の移行はサポートされていません。
- OS SKU の Mariner から Azure Linux への移行はサポートされていますが、Mariner へのロールバックはサポートされていません。
前提条件
- 少なくとも 1 つの Ubuntu ノード プールを含む既存の AKS クラスター。
- OS SKU 移行機能を使う前に、開発と運用環境に Azure Linux クラスターをデプロイし、サービスが正常なままであることを検証して、ワークロードの構成と実行が Azure Linux コンテナー ホストで正常に行われるのを確認することをお勧めします。
- 運用クラスターでプロセスを使う前に、移行機能が動作することをテストと開発環境で確認します。
- アップグレードの間に AKS が VM 間でポッドを移動できる十分なポッド中断バジェットがポッドにあることを確認します。
- Azure CLI バージョン 2.61.0 以降が必要です。 バージョンを確認するには、
az --version
を実行します。 インストールまたはアップグレードする必要がある場合は、Azure CLI のインストールに関するページを参照してください。 - Terraform を使っている場合は、v3.111.0 以降の AzureRM Terraform モジュールが必要です。
Ubuntu ノード プールの OS SKU を移行する
az aks nodepool update
コマンドを使って、ノード プールの OS SKU を Azure Linux に移行します。 このコマンドは、ノード プールの OS SKU を Ubuntu から Azure Linux に更新します。 OS SKU の変更によって即時アップグレード操作がトリガーされ、完了までに数分かかります。az aks nodepool update --resource-group <resource-group-name> --cluster-name <cluster-name> --name <node-pool-name> --os-sku AzureLinux
Note
OS SKU の移行中に問題が発生した場合は、以前の OS SKU にロールバックできます。
OS SKU の移行を検証する
テスト クラスターで移行が完了したら、次のことを検証して、移行の成功を確認する必要があります。
- 移行ターゲットが Azure Linux の場合は、
kubectl get nodes -o wide
コマンドを実行します。 出力で、OS イメージとしてCBL-Mariner/Linux
が表示され、カーネル バージョンの末尾に.cm2
が表示される必要があります。 kubectl get pods -o wide -A
コマンドを実行して、すべてのポッドとデーモンセットが新しいノード プールで稼働していることを検証します。kubectl get nodes --show-labels
コマンドを実行して、アップグレードされたノード プール内のすべてのノード ラベルが想定した内容であることを検証します。
ヒント
運用クラスターを移行する前に、サービスの正常性を数週間監視することをお勧めします。
運用クラスターで OS SKU の移行を実行する
- 既存のテンプレートを更新して、
OSSKU=AzureLinux
を設定します。 ARM テンプレートでは、agentPoolProfile
セクションで"OSSKU: "AzureLinux"
を使います。 Bicep では、agentPoolProfile
セクションでosSku: "AzureLinux"
を使います。 最後に、Terraform の場合は、default_node_pool
セクションで"os_sku = "AzureLinux"
を使います。apiVersion
が2023-07-01
以降に設定されていることを確認します。 - クラスターの ARM、Bicep、または Terraform テンプレートを再デプロイして、
OSSKU
の新しい設定を適用します。 このデプロイの間、クラスターはノード イメージのアップグレードを行っているかのように動作します。 クラスターの容量が増加した後、既存のノードが 1 つずつ、新しい OS SKU の最新の AKS イメージで再起動されます。
ロールバック
OS SKU の移行中に問題が発生した場合は、以前の OS SKU にロールバックできます。 これを行うには、テンプレートの OS SKU フィールドを変更して、デプロイを再送信する必要があります。これにより、別のアップグレード操作がトリガーされて、ノード プールが以前の OS SKU に復元されます。
Note
OS SKU の移行は、OS SKU Mariner へのロールバックをサポートしていません。
az aks nodepool update
コマンドを使って、以前の OS SKU にロールバックします。 このコマンドは、ノード プールの OS SKU を Azure Linux から Ubuntu に更新します。az aks nodepool update --resource-group myResourceGroup --cluster-name myAKSCluster --name mynodepool --os-sku Ubuntu
次のステップ
このチュートリアルでは、次のいずれかの方法を使って、既存のノードを Azure Linux に移行しました。
- 既存のノード プールを削除して、新しい Azure Linux ノード プールを追加します。
- OS SKU のインプレース移行。
次のチュートリアルでは、テレメトリを有効にしてクラスターを監視する方法について説明します。