このチュートリアルでは、 5 つのパート 3 で、既存のノードを ACL に移行します。 次のいずれかの方法を使用して、既存のノードを移行できます。
- 既存のノード プールを削除し、新しい ACL ノード プールを追加します。
- インプレース オペレーティング システム (OS) SKU の移行を実行します。
このチュートリアルのコマンドでは、「 チュートリアル 1: AKS 用の ACL を使用してクラスターを作成する」で設定した環境変数を使用します。
移行する既存のノードがない場合は、 次のチュートリアルに進んでください。 後のチュートリアルでは、クラスターでテレメトリと監視を有効にし、ACL ノードをアップグレードする方法について説明します。
Prerequisites
- 前のチュートリアルでは、ACL クラスターを作成してデプロイしました。 これらの手順を完了していない場合は、「 チュートリアル 1: AKS 用の ACL を使用してクラスターを作成する」を参照してください。
- Azure Container Linux には、Azure CLIバージョン
2.86.0 が必要です。az versionコマンドを使用してバージョンを検索します。 最新バージョンにアップグレードするには、az upgradeコマンドを使用します。
Azure Container Linux (ACL) に関する考慮事項と制限事項
開始する前に、ACL に関する次の考慮事項と制限事項を確認してください。
- ACL は、AKS v1.34 以降で一般提供されています。
- ACL には、セキュア ブートと vTPM を使用 したトラステッド起動 が必要です。 信頼されていない起動バリアントは使用できません。
- Arm64 の ACL では、Trusted Launch の互換性を有効にするために Cobalt ベース (v6) SKU が必要です。
-
NodeImageおよびNoneは、サポートされている唯一の オペレーティング システム (OS) アップグレード チャネルです。UnmanagedおよびSecurityPatchは、変更できない/usrディレクトリのため、ACL と互換性がありません。 - アーティファクト ストリーミング はサポートされていません。
- ポッドサンドボックス はサポートされていません。
- Confidential Virtual Machines (CVM) は サポートされていません。
- 第 1 世代 VM はサポートされていません。
ACL ノード プールを追加し、既存のノード プールを削除する
az aks nodepool addコマンドを使用して、新しい ACL ノード プールを追加します。--mode Systemを使用して、新しいプールをシステム エージェント プールとして機能させることができます。これにより、次の手順で元のノード プールを削除できます。 次の例では、クラスターに 3 つのノードを追加する aclsystem という名前のノード プールを作成します。az aks nodepool add \ --resource-group $RESOURCE_GROUP \ --cluster-name $CLUSTER_NAME \ --name aclsystem \ --mode System \ --os-sku AzureContainerLinux \ --node-count 3出力例:
{ "id": "/subscriptions/xxxxx/resourceGroups/myACLResourceGroup/providers/Microsoft.ContainerService/managedClusters/myACLCluster/nodePools/aclsystem", "name": "aclsystem", "osSku": "AzureContainerLinux", "provisioningState": "Succeeded" }az aks nodepool deleteコマンドを使用して、既存のノード プールを削除します。az aks nodepool delete \ --resource-group $RESOURCE_GROUP \ --cluster-name $CLUSTER_NAME \ --name <existing-node-pool-name>
OS SKU のインプレース移行
インプレース OS SKU の移行に関する制限事項
OS SKU 移行要求をブロックする可能性がある設定がいくつかあります。 移行を成功させるには、次のガイドラインと制限事項を確認してください。
- OS SKU 移行機能は、PowerShell または Azure portal では使用できません。
- OS SKU 移行機能では、既存のノード プールの名前変更はサポートされていません。
- Ubuntu、Azure Linux、および AzureContainerLinux は、サポートされている唯一の Linux OS SKU 移行ターゲットです。
- ACL には信頼できる起動が必要です。 ノード プールでまだ有効になっていない場合は、
--enable-secure-bootOS SKU に移行するときに--enable-vtpmとAzureContainerLinuxを含める必要があります。 ノード プールの VM サイズも、信頼された起動をサポートする必要があります。 現在の VM サイズでサポートされていない場合は、移行する前に、サポートされている VM サイズでノード プールのサイズを変更または再作成する必要があります。 - 第 1 世代 VM はサポートされていません。
-
UseGPUDedicatedVHDが有効になっている Ubuntu OS SKU では、OS SKU の移行を実行できません。 - Confidential Virtual Machines (CVM) は サポートされていません。
- ポッドサンドボックス はサポートされていません。
- Windows OS SKU の移行はサポートされていません。
インプレース OS SKU マイグレーションの前提条件
- 少なくとも 1 つの Linux ノード プールを持つ既存の AKS クラスター。
- 運用環境のクラスターを移行する前に、ACL クラスターを開発環境またはステージング環境にデプロイして、 ワークロードが ACL で正常に実行されることを確認することをお勧めします。
- 運用クラスターでプロセスを使う前に、移行機能が動作することをテストと開発環境で確認します。
- アップグレード中に AKS が VM 間でポッドを移動できるように、ポッドに十分な ポッド中断予算 (PDB) があることを確認します。
- Azure CLI バージョン 2.61.0 以降が必要です。
az versionコマンドを使用してバージョンを検索します。 最新バージョンにアップグレードするには、az upgradeコマンドを使用します。
インプレース OS SKU 移行を使用して ACL に移行する
既存の Ubuntu または Azure Linux ノード プールを ACL に移行するには、ノード プールの OS SKU を変更します。これにより、クラスターは標準ノード イメージのアップグレード プロセスを通じてロールされます。 このメソッドでは、新しいノード プールを作成する必要はありません。代わりに、既存のノード プールが自動的に再イメージ化されます。
Important
ACL には信頼できる起動が必要です。
--enable-secure-boot OS SKU に移行するときは、--enable-vtpmとAzureContainerLinuxを含める必要があります。 ノード プールの VM サイズも、信頼された起動をサポートする必要があります。
az aks nodepool update コマンドを使用して、ノード プールの OS SKU を ACL に移行します。 このコマンドは、ノード プールの再イメージ化をトリガーします。 OS SKU の変更によって即時アップグレード操作がトリガーされ、完了までに数分かかります。
az aks nodepool update \
--resource-group $RESOURCE_GROUP \
--cluster-name $CLUSTER_NAME \
--name <existing-node-pool-name> \
--os-sku AzureContainerLinux \
--enable-secure-boot \
--enable-vtpm
出力例:
{
"id": "/subscriptions/xxxxx/resourceGroups/myACLResourceGroup/providers/Microsoft.ContainerService/managedClusters/myACLCluster/nodePools/nodepool1",
"name": "nodepool1",
"osSku": "AzureContainerLinux",
"provisioningState": "Succeeded"
}
Note
OS SKU の移行中に問題が発生した場合は、以前の OS SKU にロールバックできます。
OS SKU の移行を検証する
テスト クラスターで移行が完了したら、次のことを確認して、移行が成功したことを確認します。
次のコマンドを使用して、新しいノードで ACL が実行されていることを確認します。
kubectl get nodes -o wide次のコマンドを使用して、すべてのポッドとデーモンセットが新しいノード プールで実行されていることを確認します。
kubectl get pods -o wide -Aアップグレードしたノード プール内のすべてのノード ラベルが、次のコマンドを使用して想定される内容であることを確認します。
kubectl get nodes --show-labelsaz aks nodepool listコマンドを使用して、ノード イメージのバージョンを確認します。az aks nodepool list \ --resource-group $RESOURCE_GROUP \ --cluster-name $CLUSTER_NAME \ --query '[].{name: name, osSku: osSku, nodeImageVersion: nodeImageVersion}'出力例:
[ { "name": "nodepool1", "nodeImageVersion": "AKSAzureContainerLinux-202606.01.0", "osSku": "AzureContainerLinux" } ]
Tip
運用クラスターを移行する前に、サービスの正常性を数週間監視することをお勧めします。
以前の OS SKU にロールバックする
OS SKU の移行中に問題が発生した場合は、以前の OS SKU にロールバックできます。 これを行うには、OS SKU フィールドを以前の値に戻し、デプロイを再送信します。これにより、別のアップグレード操作がトリガーされ、ノード プールが以前の OS SKU に再イメージ化されます。
az aks nodepool update コマンドを使って、以前の OS SKU にロールバックします。 この例では、ACL から Azure Linux にロールバックします。
az aks nodepool update \
--resource-group $RESOURCE_GROUP \
--cluster-name $CLUSTER_NAME \
--name <existing-node-pool-name> \
--os-sku AzureLinux
次のステップ
このチュートリアルでは、既存のノードを ACL に移行しました。 次のチュートリアルでは、ACL クラスターのテレメトリと監視を有効にする方法について説明します。