Azure Kubernetes Service (AKS)用に既存のノードAzure Container Linux (ACL) に移行する

この記事では、既存の AKS ノード プールを AKS 用の Azure Container Linux (ACL) に移行する方法について説明します。 次のいずれかの方法を使用して、既存のノードを移行できます。

  • インプレース OS SKU の移行: 既存のノード プールの OS SKU を ACL に変更し、ノードを自動的に再イメージ化します。
  • 既存のノード プールを削除し、新しい ACL ノード プールを追加する: 新しい ACL ノード プールを作成し、ワークロードを移動して、古いノード プールを削除します。

Important

AKS で Azure Container Linux (ACL) を使用している場合は、次の考慮事項と制限事項を確認してください。

インプレース OS SKU の移行の制限事項

一般的な ACL の制限に加えて、インプレース OS SKU の移行には、次のものが特に適用されます。

  • OS SKU 移行機能は、PowerShell または Azure portal では使用できません。
  • OS SKU 移行機能では、既存のノード プールの名前変更はサポートされていません。
  • UseGPUDedicatedVHDが有効になっているノード プールでは、OS SKU の移行を実行できません。
  • Windows OS SKU の移行はサポートされていません。

Prerequisites

  • 少なくとも 1 つの Linux ノード プールを持つ既存の AKS クラスター。
  • Azure CLI バージョン 2.86.0 以降。 バージョンを確認するには、az --version を実行します。 インストールまたはアップグレードが必要な場合は、Azure CLI のインストールを参照してください。
  • 運用環境のクラスターを移行する前に、ACL クラスターを開発環境またはステージング環境にデプロイして、 ワークロードが ACL で正常に実行されることを確認することをお勧めします。
  • 運用クラスターでプロセスを使う前に、移行機能が動作することをテストと開発環境で確認します。
  • 移行中に AKS が VM 間でポッドを移動できるように、ポッドに十分なポッド 中断予算 (PDB) があることを確認します。

ACL ノード プールを追加し、既存のノード プールを削除する

  1. az aks nodepool add コマンドを使用して、新しい ACL ノード プールを追加します。 --mode Systemを使用して、新しいプールをシステム エージェント プールとして機能させることができます。これにより、次の手順で元のノード プールを削除できます。

    az aks nodepool add \
        --resource-group <resource-group> \
        --cluster-name <cluster-name> \
        --name <new-node-pool-name> \
        --os-sku AzureContainerLinux \
        --mode System \
        --node-count 3
    

    出力例:

    {
      "id": "/subscriptions/xxxxx/resourceGroups/myResourceGroup/providers/Microsoft.ContainerService/managedClusters/myAKSCluster/nodePools/myNewNodePool",
      "name": "myNewNodePool",
      "osSku": "AzureContainerLinux",
      "provisioningState": "Succeeded"
    }
    
  2. az aks nodepool delete コマンドを使用して、既存のノード プールを削除します。

    az aks nodepool delete \
        --resource-group <resource-group> \
        --cluster-name <cluster-name> \
        --name <existing-node-pool-name>
    

OS SKU のインプレース移行

既存の Linux ノード プールを ACL に移行するには、ノード プールの OS SKU を変更します。これにより、クラスターは標準ノード イメージのアップグレード プロセスを通じてロールされます。 このメソッドでは、新しいノード プールを作成する必要はありません。代わりに、既存のノード プールが自動的に再イメージ化されます。

インプレース OS SKU の移行を実行する

Important

ACL には信頼できる起動が必要です。 --enable-secure-boot OS SKU に移行するときは、--enable-vtpmAzureContainerLinuxを含める必要があります。 ノード プールの仮想マシン (VM) サイズも、信頼された起動をサポートする必要があります。 現在の VM サイズでサポートされていない場合は、移行する前に、サポートされている VM サイズでノード プールのサイズを変更または再作成する必要があります。

az aks nodepool update コマンドを使用して、ノード プールの OS SKU を ACL に移行します。 このコマンドにより、ノード プールの再イメージ化がトリガーされ、OS SKU が AzureContainerLinuxに更新されます。 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/myResourceGroup/providers/Microsoft.ContainerService/managedClusters/myAKSCluster/nodePools/nodepool1",
  "name": "nodepool1",
  "osSku": "AzureContainerLinux",
  "provisioningState": "Succeeded"
}

Note

OS SKU の移行中に問題が発生した場合は、以前の OS SKU にロールバックできます。

OS SKU の移行を検証する

Tip

運用クラスターを移行する前に、サービスの正常性を数週間監視することをお勧めします。

テスト クラスターで移行が完了したら、クラスターとワークロードを数週間監視して、運用クラスターを移行する前にすべてが期待どおりに実行されていることを確認することをお勧めします。 次のコマンドを使用して、移行を確認し、クラスターを監視します。

  1. kubectl get nodes -o wide コマンドを使用して、新しいノードが ACL を実行していることを確認します。 出力には ACL OS イメージが表示されます。

    kubectl get nodes -o wide
    
  2. kubectl get pods -o wide -A コマンドを使用して、すべてのポッドとデーモンセットが新しいノード プールで実行されていることを確認します。

    kubectl get pods -o wide -A
    
  3. アップグレードしたノード プール内のすべてのノード ラベルが、 kubectl get nodes --show-labels コマンドを使用して想定される内容であることを確認します。

    kubectl get nodes --show-labels
    
  4. az aks nodepool list コマンドを使用して、ノード イメージのバージョンを確認します。

    az aks nodepool list \
        --resource-group <resource-group> \
        --cluster-name <cluster-name> \
        --query '[].{name: name, osSku: osSku, nodeImageVersion: nodeImageVersion}'
    

    出力例:

    [
      {
        "name": "myNodePool",
        "nodeImageVersion": "AKSAzureContainerLinux-202606.01.0",
        "osSku": "AzureContainerLinux"
      }
    ]
    

以前の OS SKU にロールバックする

OS SKU の移行中に問題が発生した場合は、以前の OS SKU にロールバックできます。 これを行うには、OS SKU フィールドを以前の値に戻し、デプロイを再送信します。これにより、別のアップグレード操作がトリガーされ、ノード プールが以前の OS SKU に再イメージ化されます。 ACL から以前の OS SKU にロールバックする場合、信頼された起動が明示的に無効でない限り、ノード プールは既定で信頼された起動 (Gen2) イメージバリアントを使用します。

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 の詳細については、Azure Kubernetes Service (AKS) 向け Azure Container Linux (ACL) とは何ですか?を参照してください。