このチュートリアルでは、5 つのパート 3 で、OS Guard を使用して既存のノードを Azure Linux に移行します。 次のいずれかの方法を使用して、既存のノードを移行できます。
- 既存のノード プールを削除し、OS Guard ノード プールを使用して新しい Azure Linux を追加します。
- OS SKU のインプレース移行。
移行する既存のノードがない場合は、 次のチュートリアルに進んでください。 後のチュートリアルでは、クラスターでテレメトリと監視を有効にし、OS Guard ノードを使用して Azure Linux をアップグレードする方法について説明します。
考慮事項と制限事項
開始する前に、OS Guard (プレビュー) を使用した Azure Linux に関する次の考慮事項と制限事項を確認してください。
- Os Guard を使用する Azure Linux には、Kubernetes バージョン 1.32.0 以降が必要です。
- OS Guard イメージを使用するすべての Azure Linux では、 Federal Information Process Standard (FIPS) と Trusted Launch が有効になっています。
- Azure CLI と ARM テンプレートは、プレビュー段階の AKS 上の OS Guard を使用する Azure Linux でサポートされている唯一のデプロイ方法です。 PowerShell と Terraform はサポートされていません。
- Arm64 イメージは、プレビュー段階の AKS 上の OS Guard を使用した Azure Linux ではサポートされていません。
-
NodeImageとNoneは、AKS 上の OS Guard を使用する Azure Linux でサポートされている唯一の OS アップグレード チャネル です。UnmanagedおよびSecurityPatchは、変更できない /usr ディレクトリのため、OS Guard を使用する Azure Linux と互換性がありません。 - アーティファクト ストリーミング はサポートされていません。
- ポッドサンドボックス はサポートされていません。
- Confidential Virtual Machines (CVM) は サポートされていません。
- Gen 1 仮想マシン (VM) は サポートされていません。
[前提条件]
- 前のチュートリアルでは、OS Guard クラスターを使用して Azure Linux を作成してデプロイしました。 これらの手順を完了していない場合は、「 チュートリアル 1: AZURE Linux と OS Guard for AKS を使用してクラスターを作成する」を参照してください。
- 最新バージョンの Azure CLI が必要です。
az versionコマンドを使用してバージョンを検索します。 最新バージョンにアップグレードするには、az upgradeコマンドを使用します。
aksプレビューの Azure CLI 拡張機能をインストールする
Important
AKS のプレビュー機能は、セルフサービスのオプトイン単位で利用できます。 プレビューは、"現状有姿のまま" および "利用可能な限度" で提供され、サービス レベル アグリーメントおよび限定保証から除外されるものとします。 AKS プレビューは、ベストエフォート ベースでカスタマー サポートによって部分的にカバーされます。 そのため、これらの機能は運用環境での使用を目的としていません。 詳細については、次のサポート記事を参照してください。
aks-previewコマンドを使用してaz extension add拡張機能をインストールします。az extension add --name aks-previewaz extension updateコマンドを使って拡張機能の最新バージョンに更新します。az extension update --name aks-preview
Azure Linux OS Guard プレビュー機能フラグを登録する
AzureLinuxOSGuardPreviewコマンドを使用して、az feature register機能フラグを登録します。az feature register --namespace "Microsoft.ContainerService" --name "AzureLinuxOSGuardPreview"状態が [登録済み] と表示されるまでに数分かかります。
az feature showコマンドを使用して、登録の状態を確認します。az feature show --namespace "Microsoft.ContainerService" --name "AzureLinuxOSGuardPreview"状態に [登録済み] が反映されたら、
Microsoft.ContainerServiceコマンドを使用して、az provider registerリソース プロバイダーの登録を更新します。az provider register --namespace "Microsoft.ContainerService"
OS Guard ノード プールを使用して Azure Linux を追加し、既存のノード プールを削除する
az aks nodepool addコマンドを使用して、OS Guard ノード プールを使用して新しい Azure Linux を追加します。 このコマンドは、--mode Systemフラグを指定してクラスターに新しいノード プールを追加します。これにより、それはシステム ノード プールになります。 OS Guard クラスターを使用する Azure Linux には、システム ノード プールが必要です。# Declare environment variables with a random suffix for uniqueness export RANDOM_SUFFIX=$(openssl rand -hex 3) export NODE_POOL_NAME="np$RANDOM_SUFFIX" az aks nodepool add --resource-group $RESOURCE_GROUP --cluster-name $CLUSTER_NAME --name $NODE_POOL_NAME --mode System --os-sku AzureLinuxOSGuard --node-osdisk-type Managed --enable-fips-image --enable-secure-boot --enable-vtpm出力例:
{ "id": "/subscriptions/xxxxx/resourceGroups/myResourceGroupxxx/providers/Microsoft.ContainerService/managedClusters/myAKSCluster/nodePools/systempool", "name": "systempool", "provisioningState": "Succeeded" }az aks nodepool deleteコマンドを使って、既存のノードを削除します。az aks nodepool delete --resource-group $RESOURCE_GROUP --cluster-name $CLUSTER_NAME --name $NODE_POOL_NAME
インプレース OS SKU の移行に関する制限事項
OS SKU 移行要求をブロックする可能性がある設定がいくつかあります。 移行を成功させるには、次のガイドラインと制限事項を確認してください。
- OS SKU 移行機能は、PowerShell または Azure portal では使用できません。 OS Guard (プレビュー) で Azure Linux で OS SKU 移行機能を使用する場合、Terraform、PowerShell、または Azure portal では使用できません。
- OS SKU 移行機能では、既存のノード プールの名前変更はサポートされていません。
- サポートされている Linux OS SKU 移行ターゲットは、Ubuntu、Azure Linux、Azure Linux と OS Guard のみです。
- Azure Linux と OS Guard では、信頼できる起動が既定で必要です。 OS Guard を使用して Azure Linux に移行するには、トラステッド起動を有効にする必要があります。 これには、新しいノード プールの作成が必要になる場合があります。
- OS Guard で Azure Linux を有効にする場合は、FIPS が必要です。 現在 FIPS イメージを使用していない場合は、ノード プールの更新コマンドに
--enable-fipsを含めることができます。 - Gen 1 仮想マシン (VM) は サポートされていません。
-
UseGPUDedicatedVHDが有効になっている Ubuntu OS SKU では、OS SKU の移行を実行できません。 - Confidential Virtual Machines (CVM) は サポートされていません。
- ポッドサンドボックス はサポートされていません。
- Windows OS SKU の移行はサポートされていません。
- Mariner から Azure Linux への OS SKU の移行はサポートされていますが、Mariner へのロールバックはサポートされていません。
インプレース OS SKU マイグレーションの前提条件
- 少なくとも 1 つの Azure Linux ノード プールを持つ既存の AKS クラスター。
- OS SKU 移行機能を使用する前に、Azure Linux と OS Guard コンテナー ホストでワークロードを構成して正常に実行することをお勧めします。そのためには、Dev/prod に AZURE Linux と OS Guard クラスターをデプロイ し、サービスが正常な状態を維持していることを確認します。
- 運用クラスターでプロセスを使う前に、移行機能が動作することをテストと開発環境で確認します。
- アップグレードの間に AKS が VM 間でポッドを移動できる十分なポッド中断バジェットがポッドにあることを確認します。
- Azure CLI バージョン 2.61.0 以降が必要です。
az versionコマンドを使用してバージョンを検索します。 最新バージョンにアップグレードするには、az upgradeコマンドを使用します。
インプレース OS SKU の移行を実行する
OS Guard を使用して既存の Ubuntu または Azure Linux ノード プールを Azure Linux に移行するには、ノード プールの OS SKU を変更します。これにより、クラスターは標準ノード イメージのアップグレード プロセスを通じてロールされます。 この新機能では、新しいノード プールを作成する必要はありません。代わりに、既存のノード プールが自動的に再イメージ化されます。
OS Guard を使用して Azure Linux コンテナー ホスト ノード プールの OS SKU を Azure Linux に移行する
az aks nodepool updateコマンドを使用して、OS Guard を使用してノード プールの OS SKU を Azure Linux に移行します。 このコマンドは、ノード プールの再イメージ化をトリガーし、OS Guard を使用してノード プールの OS SKU を Azure Linux から Azure Linux に更新します。 OS SKU の変更によって即時アップグレード操作がトリガーされ、完了までに数分かかります。az aks nodepool update --resource-group $RESOURCE_GROUP --cluster-name $CLUSTER_NAME --name $NODE_POOL_NAME --os-sku AzureLinuxOSGuard --node-osdisk-type Managed --enable-fips-image --enable-secure-boot --enable-vtpm出力例:
{ "id": "/subscriptions/xxxxx/resourceGroups/myResourceGroupxxx/providers/Microsoft.ContainerService/managedClusters/myAKSCluster/nodePools/nodepool1", "name": "nodepool1", "osSku": "AzureLinuxOSGuard", "provisioningState": "Succeeded" }
注
OS SKU の移行中に問題が発生した場合は、以前の OS SKU にロールバックできます。
OS SKU の移行を検証する
テスト クラスターで移行が完了したら、次のことを検証して、移行の成功を確認する必要があります。
- 移行ターゲットが OS Guard を使用する Azure Linux の場合は、
kubectl get nodes -o wideコマンドを実行します。 出力で、OS イメージとしてMicrosoft Azure Linux 3.0が表示され、カーネル バージョンの末尾に.azl3が表示される必要があります。 -
kubectl get pods -o wide -Aコマンドを実行して、すべてのポッドとデーモンセットが新しいノード プールで稼働していることを検証します。 -
kubectl get nodes --show-labelsコマンドを実行して、アップグレードされたノード プール内のすべてのノード ラベルが想定した内容であることを検証します。
ヒント
運用クラスターを移行する前に、サービスの正常性を数週間監視することをお勧めします。
以前の OS SKU にロールバックする
OS SKU の移行中に問題が発生した場合は、以前の OS SKU にロールバックできます。 これを行うには、テンプレートの OS SKU フィールドを変更し、デプロイを再送信する必要があります。これにより、別のアップグレード操作がトリガーされ、ノード プールが以前の OS SKU に再イメージ化されます。
注
OS SKU の移行では、OS SKU マリナーへのロールバックはサポートされていません。
-
az aks nodepool updateコマンドを使って、以前の OS SKU にロールバックします。 このコマンドは、OS Guard を使用して Azure Linux から Azure Linux に戻ってノード プールの OS SKU を更新します。
次のステップ
このチュートリアルでは、OS Guard を使用して既存のノードを Azure Linux に移行しました。 次のチュートリアルでは、テレメトリを有効にしてクラスターを監視する方法について説明します。