AKS Edge Essentials 用に入れ子になった仮想化環境を準備する

この記事では、入れ子になった仮想化環境を設定して Azure Kubernetes Service (AKS) Edge Essentials クラスターをデプロイする方法について説明します。

Note

VMware ESXi 上の入れ子になった仮想化環境の上に AKS Edge Essentials をデプロイすることがサポートされています。 その他の入れ子になった仮想化のデプロイは、運用環境のシナリオではサポートされておらず、開発者の目的に限定されます。 このガイドでは、Hyper-V ハイパーバイザーを使用していることを前提としています。 KVM などの Microsoft 以外のハイパーバイザーの使用はサポートされていません。

前提条件

VMware ESXi 上の Windows VM へのデプロイ

VMware ESXi 7.0 および 8.0 バージョンでは、Windows 仮想マシン上で AKS Edge Essentials をホストできます。

VMware ESXi Windows 仮想マシンで AKS Edge Essentials を設定するには、次の手順に従います。

  1. VMware ESXi ホスト上に Windows 仮想マシンを作成します。 VMware VM デプロイの詳細については、仮想マシンのデプロイに関する VMware のドキュメントを参照してください。

Note

Windows 11 仮想マシンを作成する場合は、Windows 11 を実行するための Microsoft の最小要件を満たしていることを確認します。 Windows 11 VM の VMware サポートの詳細については、Windows 11 をゲスト OS として VMware にインストールする方法に関するページを参照してください。

  1. 前の手順で作成した仮想マシンをオフにします。
  2. Windows 仮想マシンを選択して [設定の編集] を選択します。
  3. [ハードウェア仮想化] を探して [ハードウェア アシストによる仮想化をゲスト OS に公開する] を有効にします。
  4. [保存] を選択して仮想マシンを起動します。
  5. Hyper-V ハイパーバイザーをインストールします。 Windows クライアントを使用している場合は、必ず Windows 10 に Hyper-V をインストールしてください。 Windows Server を使用している場合は、Hyper-V ロールがインストールされていることを確認してください。

Azure 仮想マシンへのデプロイ

Azure VM 上で AKS Edge Essentials を実行している場合は、入れ子になった仮想化をサポートする Azure コンピューティング ユニット (ACU) を必ず使用してください。 詳細については、「 Azure コンピューティング ユニット (ACU)」を参照してください。 また、Azure VM では外部仮想スイッチの使用がサポートされていないため、VM ホスト OS 上の AKS Edge Essentials デプロイは単一マシン クラスターに制限されます。

デプロイ環境

このセクションでは、入れ子になったアーキテクチャについて説明し、必要な主要なコンポーネントと構成について説明します。 この記事で後述する仮想化のレベルは次のとおりです。

  • L0 ホスト OS: Windows ホスト オペレーティング システム。 この OS はベア メタルまたは仮想マシンとして実行できますが、この記事では、 L0 ホスト OS は、入れ子になった Windows L1 VM を作成する OS です。
  • L1 仮想マシン: L0 Windows ホスト OS 上で実行されている Windows VM。 この VM には、AKS Edge Essentials がインストールされています。
  • L2 仮想マシン: L1 Windows 仮想マシン上で実行されている AKS Edge Essentials 入れ子になった VM (Linux または Windows)。

内部または外部の仮想スイッチを使用して、入れ子になった環境を設定できます。 ただし、この記事では、内部仮想スイッチを使用していることを前提としています。 L0 Windows マシンと L1/L2 仮想マシンの IP アドレスは、ネットワーク シナリオに応じて変更される場合があります。 この記事では、 172.20.1.0/24 IP アドレス ファミリを使用していることを前提としています。

また、AKS Edge Essentials Windows ノードのデプロイは省略可能であり、割り当てられたメモリ要件に影響します。 この記事では、Linux のみのデプロイについて説明しますが、デプロイ JSON ファイルに適切な構成を追加することで、Windows ノードを追加できます。

ヒント

デプロイに外部仮想スイッチを使用している場合は、正しいネットワーク アダプターと IP アドレスの割り当てを使用していることを確認してください。

入れ子になった仮想化アーキテクチャを示す図。

前の図は、この入れ子になったアーキテクチャのさまざまな仮想マシンとコンポーネントを示しています。

デバイス/VM OS Level 上位 [メモリ] IP アドレス
Windows ホスト OS Windows L0 - 32/64 GB 172.20.1.1
Windows-VM-1 Windows L1 Windows ホスト OS 8/16 GB 172.20.1.2
Windows-VM-2 Windows L1 Windows ホスト OS 8/16 GB 172.20.1.3
AKS-Edge-Linux-VM-1 CBL-Mariner L2 Windows-VM-1 4 GB 172.20.1.4
AKS-Edge-Windows-VM-1 (省略可能) Windows L2 Windows-VM-1 4 GB 172.20.1.5
AKS-Edge-Linux-VM-2 CBL-Mariner L2 Windows-VM-2 4 GB 172.20.1.6
AKS-Edge-Windows-VM-2 (省略可能) Windows L2 Windows-VM-2 4 GB 172.20.1.7

入れ子になった仮想マシンを設定する

次のガイドは、IP アドレスの割り当ての例です。 ネットワーク環境と要件に基づいて、独自の割り当てを使用できます。 仮想マシンと仮想ハードウェアの割り当ての名前付け規則も推奨されますが、独自の構成を使用できます。

  1. 管理者特権の PowerShell セッションを開きます。

  2. 内部仮想スイッチを作成します。

    New-VMSwitch -Name "AKS-Int" -SwitchType Internal
    

    スイッチを正しく作成すると、次のような出力が表示されます。

    Name    SwitchType NetAdapterInterfaceDescription
    ----    ---------- ------------------------------
    AKS-Int Internal
    
  3. AKS-Int 仮想スイッチに IP アドレスを割り当てます。 この例では、 172.20.1.0/24 ネットワークを使用します。 Windows ホスト OS は、この仮想スイッチの IP アドレスを使用して、他の仮想マシンおよび AKS Edge Essentials ノードと通信します。

    $ifIndex = (Get-NetAdapter -Name "vEthernet (AKS-Int)").ifIndex
    New-NetIPAddress –IPAddress "172.20.1.1" -PrefixLength "24" -InterfaceIndex $ifIndex
    
  4. 内部仮想スイッチと内部ネットワーク接続デバイスを外部/インターネット ネットワークに接続するための NAT テーブルを作成します。

     New-NetNat -Name "AKS-EE-Int-Network" -InternalIPInterfaceAddressPrefix "172.20.1.0/24"
    
  5. Hyper-V マネージャーを使用して、最初の Windows 仮想マシンを作成し、 Windows-VM-1 という名前を付けます。 仮想マシンの作成の詳細については、「 Windows Server の仮想化を参照してください。 VM の構成中に、次のパラメーターが正しく設定されていることを確認します。

    • プロセッサ: 仮想プロセッサの数: 4
    • メモリ: RAM: 8192 MB
    • ネットワーク アダプター: 仮想スイッチ: AKS-Int
  6. Windows のセットアップと構成が完了したら、 Windows-VM-1 仮想マシンをオフにします。

  7. Windows-VM-1 の入れ子になった仮想化を有効にします。 入れ子になった仮想化の詳細については、「 入れ子になった仮想化を使用した仮想マシンでの Hyper-V の実行を参照してください。

    Set-VMProcessor -VMName <windows-vm-name> -ExposeVirtualizationExtensions $true
    
  8. Windows-VM-1 の MAC スプーフィングを有効にします:

    Get-VMNetworkAdapter -VMName <windows-vm-name> | Set-VMNetworkAdapter -MacAddressSpoofing On
    
  9. Windows-VM-1 仮想マシンを有効にし、Hyper-V Connect オプションを使用して接続します。

  10. Windows-VM-1 仮想マシン内で、管理者特権の PowerShell セッションを開きます。

  11. 仮想マシンに接続されているアダプターを確認します。 接続されているEthernet アダプターの<name>を探します。 たとえば、 Ethernet 2:

    ipconfig
    

    次のような出力結果が表示されます。

    PS C:\Windows\system32> ipconfig
    
    Windows IP Configuration
    
    Ethernet adapter Ethernet 2:
    
       Connection-specific DNS Suffix  . : mshome.net
       Link-local IPv6 Address . . . . . : fe80::f4b3:63b3:20d0:2e60%12
       Autoconfiguration IPv4 Address. . : 169.254.233.233
       Subnet Mask . . . . . . . . . . . : 255.255.0.0
       Default Gateway . . . . . . . . . :
    
    Ethernet adapter vEthernet (Default Switch):
    
       Connection-specific DNS Suffix  . :
       Link-local IPv6 Address . . . . . : fe80::545e:7d5:812b:c17b%18
       IPv4 Address. . . . . . . . . . . : 172.21.144.1
       Subnet Mask . . . . . . . . . . . : 255.255.240.0
       Default Gateway . . . . . . . . . :
    
  12. Ethernet アダプターのifIndex前の手順の名前を取得します。

    $ifIndex = (Get-NetAdapter -Name "<name>").ifIndex
    
  13. 静的 IP 172.20.1.2 およびゲートウェイ IP 172.20.1.1 および DNS サーバー 172.20.1.1 を構成:

    ヒント

    Azure VM を使用している場合は、 Windows ホスト OS (L0) DNS サーバーを使用します。 ipconfig /all コマンドを使用して DNS サーバー アドレスを取得します。 Web ブラウザーを使用してインターネットにアクセスできることを確認します。 アクセス権がない場合は、DNS サーバーが正しく構成されているかどうかを確認します。

    New-NetIPAddress –IPAddress "172.20.1.2" -DefaultGateway "172.20.1.1" -PrefixLength "24" -InterfaceIndex $ifIndex
    Set-DNSClientServerAddress –InterfaceIndex $ifIndex –ServerAddresses "172.20.1.1"
    
  14. Windows-VM-1 仮想マシンを設定します。AKS Edge Essentials のマシンの準備手順に従います。

  15. Windows-VM-1 仮想マシンのすべての AKS Edge Essentials の前提条件をインストールします。 前提条件の詳細については、「 AKS Edge Essentials の要件とサポート マトリックス」を参照してください:

    Install-AksEdgeHostFeatures
    
  16. AKS Edge Essentials のフル スケールデプロイ構成ファイルを作成します。 JSON が作成されたら、必要なパラメーターを追加します。 外部仮想スイッチの作成、DNS サーバー、割り当てられたメモリ、および正しい静的 IP アドレスのネットワーク アダプターを必ず変更してください。 詳細については、「AKS Edge Essentials でのフル Kubernetes デプロイを参照してください。

    New-AksEdgeConfig -NodeType Linux -DeploymentType ScalableCluster
    
  17. 前の手順で作成した構成 JSON ファイルを使用して、AKS Edge Essentials のフル スケール デプロイをデプロイします。

    New-AksEdgeDeployment -JsonConfigFilePath .\AksEdgeDeployConfigTemplate.json
    
  18. AKS-Edge-VM-1 仮想マシンで ICMP トラフィックの ping を有効にします。

    Invoke-AksEdgeNodeCommand -NodeType "Linux" -command "sudo iptables -A INPUT -p ICMP -j ACCEPT"
    
  19. Windows-VM-1 仮想マシンから AKS-Edge-VM-1 に ping を実行します。

    ping 172.20.1.4
    
  20. Windows ホスト OS から AKS-Edge-VM-1 に ping を実行します:

    ping 172.20.1.4
    

    警告

    AKS-Edge-VM-1 VM への ping 要求が失敗した場合は、IP 構成を確認し、ネットワーク接続のトラブルシューティングを行います。

  21. Windows-VM-1 内で、Windows-VM-2 で使用する scaleConfig JSON ファイルを取得します

     New-AksEdgeScaleConfig -NodeType Linux -ScaleType AddMachine -LinuxNodeIp <VM2-Linux-Node-IP>
    
  22. Windows-VM-2 仮想マシンを作成します。 新しい Windows-VM-2 パラメーターで手順 4 から 14 を繰り返します。

    • 仮想マシン名: Windows-VM-2
    • IP アドレス: 172.20.1.3
    • プロセッサ: 仮想プロセッサの数: 4
    • メモリ: 8192 MB
    • ネットワーク アダプター (仮想スイッチ): AKS-Int
    • IP ゲートウェイ アドレス: 172.20.1.1
    • DNS サーバー アドレス: 172.20.1.1
  23. Windows-VM-2 から AKS-Edge-VM-1 への ping をテスト:

    ping 172.20.1.4
    

    警告

    AKS-Edge-VM-1 に対する ping 要求失敗した場合は、IP 構成を確認し、ネットワーク接続のトラブルシューティングを行います。

  24. Windows-VM-2 仮想マシンを設定します。次に、AKS Edge Essentials のマシンの準備手順に従います。

  25. Windows-VM-2 仮想マシンのすべての AKS Edge Essentials の前提条件をインストールします。 前提条件の詳細については、「 AKS Edge Essentials の要件とサポート マトリックス」を参照してください:

    Install-AksEdgeHostFeatures
    
  26. Windows-VM-1 仮想マシンに接続し、管理者特権の PowerShell セッションを使用して、AKS Edge クラスター参加構成を取得します。

    New-AksEdgeScaleConfig -NodeType Linux -ScaleType AddMachine -LinuxNodeIp <AKS-Edge-Linux-VM-2>
    
  27. Windows-VM-1 から AKS Edge Essentials スケール構成ファイルをコピーし適切なパラメーターで変更します。 詳細については、「 複数のマシンでのスケール アウト」を参照してください。

  28. 前の手順スケール構成 JSON ファイルを使用して、Window-VM-2 に AKS-Edge-VM-2 をデプロイします。

    New-AksEdgeDeployment -JsonConfigFilePath <scale-config-json>
    
  29. ノードがクラスターに追加されたことを検証します。 クラスター内の任意のノードで、次のコマンドレットを実行します。

    kubectl get nodes
    

    すべてが正しく設定されている場合は、クラスターで両方の Linux ノードが実行されていることがわかります。

    PS C:\> kubectl get nodes
    NAME                     STATUS   ROLES                       AGE     VERSION
    windows-vm1-ledge        Ready    control-plane,etcd,master   3m45s   v1.24.3+k3s-
    windows-vm2-ledge        Ready    control-plane,etcd,master  10m25s   v1.24.3+k3s-
    

    Note

    K3s と K8s の両方で現在サポートされている Kubernetes バージョンの一覧については、 AKS Edge Essentials のダウンロードの表を参照してください。

次のステップ