AKS Edge Essentials での完全な Kubernetes デプロイ

注意事項

現在、複数のマシンへの完全なデプロイは試験的な機能です。 この機能に積極的に取り組んでいます。

分散マイクロサービス アーキテクチャをサポートするために、複数のマシンで実行するように AKS Edge Essentials クラスターを構成できます。 AKS Edge Essentialsは静的構成用であり、クラウドまたは AKS HCI の AKS とは異なり、動的な VM の作成/削除やクラスター ライフサイクル管理は有効になりません。 AKS Edge Essentials には、必要に応じて Windows VM と共に、各マシンごとに 1 つの Linux VM のみが含まれます。 各 VM には、インストール時に割り当てられた RAM、ストレージ、物理 CPU コアの静的割り当てがあります。 マルチノードデプロイでは、マシンの 1 つが Kubernetes 制御ノードを持つプライマリ マシンであり、他のマシンはワーカー ノードを持つセカンダリ マシンになります。 このデプロイ シナリオでは、外部スイッチを使用して K8S クラスターを構成します。 この構成では、ネットワーク上の別のマシンから実行 kubectl したり、外部スイッチでワークロードのパフォーマンスを評価したりできます。

前提条件

マシンのセットアップに関する記事の説明に従 って、コンピューターをセットアップします

手順 1: 完全な Kubernetes デプロイ構成パラメーター

次のコマンドを使用して、スケーラブルなクラスターを作成するために必要なパラメーターを生成できます。

New-AksEdgeConfig -DeploymentType ScalableCluster -outFile .\aksedge-config.json | Out-Null

これにより、 aksedge-config.json という構成ファイルが作成されます。これには、Linux ノードを使用してスケーラブルなクラスターを作成するために必要な構成が含まれます。 ファイルは、現在の作業ディレクトリに作成されます。 構成ファイルを作成するためのその他のオプションについては、次の例を参照してください。 構成パラメーターの詳細については 、こちらを参照してください

スケーラブルな Kubernetes デプロイに注意すべき主なパラメーターは次のとおりです。

  • 外部スイッチ情報: 完全なデプロイでは、外部スイッチを使用してノード間の通信を有効にします。 パラメーターを MachineConfigType.NetworkConnection.AdapterName または Wi-FiとしてEthernet指定する必要があります。

    # get the list of available adapters in the machine
    Get-NetAdapter -Physical | Where-Object { $_.Status -eq 'Up' }
    

    Hyper-V で外部スイッチを作成した場合は、構成ファイルで vswitch の詳細を指定することを選択できます。 Hyper-V マネージャーで外部スイッチを作成してコマンドをNew-AksEdgeDeployment実行しない場合、AKS Edge Essentialsによって という名前aksedgesw-extの外部スイッチが自動的に作成され、デプロイに使用されます。

    注意

    このリリースでは、スイッチに Wi-Fi アダプターを使用している場合、コマンドをNew-AksEdgeDeployment使用した外部スイッチの自動作成に関する既知の問題があります。 この場合は、まず Hyper-V マネージャー - 仮想スイッチ マネージャーを使用して外部スイッチを作成し、そのスイッチを Wi-fi アダプターにマップしてから、次に説明するように構成 JSON でスイッチの詳細を指定します。

    Hyper-V スイッチ マネージャーのスクリーンショット。

  • IP アドレス: コントロール プレーンKubernetes サービスおよびノード (VM) に対して、ネットワークから空き IP アドレスを割り当てる必要があります。 詳細については、AKS Edge Essentials ネットワークの概要に関するページを参照してください。 たとえば、192.168.1.0/24 の IP アドレス範囲を持つローカル ネットワークでは、DHCP スコープの外部に 1.151 以上がある可能性があるため、空きになる可能性があります。 AKS Edge Essentialsでは現在、IPv4 アドレスのみがサポートされています。 理想的には、あなたが使用できる無料のIPアドレスを知っているでしょう。ただし、GitHub リポジトリAksEdge-ListUsedIPv4s スクリプトを使用して、現在使用されている IP を表示して、これらの IP アドレスを構成で使用しないようにすることができます。 構成ファイルIp4PrefixLengthServiceIPRangeStartControlPlaneEndpointIpIp4GatewayAddressServiceIPRangeSizeの セクションでNetwork、および DnsServersの各パラメーターを指定する必要があります。

  • 既定の値は Network.NetworkPlugin です flannel。 Flannel は、K3S クラスターの既定の CNI です。 K8S クラスターで、 を NetworkPlugincalico変更します。

  • 前のパラメーターに加えて、次の説明LinuxNode.CpuCountに従って、デプロイ構成に従って、、WindowsNode.CpuCountLinuxNode.DataSizeInGBLinuxNode.MemoryInMBWindowsNode.MemoryInMBWindowsNode.Ip4AddressLinuxNode.Ip4AddressInit.ServiceIPRangeSize、、、および Network.InternetDisabledを設定できます。

手順 2: 構成ファイルを検証する

aksedge-config.json ファイルを更新した後、AksEdgePrompt ツールを実行します。 このツールは、モジュールが読み込まれた状態で管理者特権の PowerShell ウィンドウを開きます。 次に、次のコマンドを実行し、 コマンドレットを使用してネットワーク パラメーターを Test-AksEdgeNetworkParameters 検証します。

Test-AksEdgeNetworkParameters -JsonConfigFilePath .\aksedge-config.json

手順 3: 完全なデプロイ クラスターを作成する

が返されたtrue場合Test-AksEdgeNetworkParametersは、デプロイを作成する準備ができました。 コマンドレットを使用してデプロイを New-AksEdgeDeployment 作成できます。

New-AksEdgeDeployment -JsonConfigFilePath .\aksedge-config.json

コマンドレットは New-AksEdgeDeployment 、kubeconfig ファイルを自動的に取得します。

手順 4: デプロイを検証する

kubectl get nodes -o wide
kubectl get pods --all-namespaces -o wide

Kubernetes クラスターのスクリーンショットを次に示します。

実行中のすべてのポッドを示す図。

手順 5: Windows ワーカー ノードを追加する (省略可能)

注意事項

Windows ワーカー ノードは、このリリースの試験的な機能です。 この機能に積極的に取り組んでいます。

既存の Linux 専用マシンに Windows ノードを追加する場合は、次のコマンドを実行できます。

New-AksEdgeScaleConfig -ScaleType AddNode -NodeType Windows -WindowsNodeIp "xxx" -outFile .\ScaleConfig.json | Out-Null

ここで、Windows VM の パラメーター (または/または MemoryInMB などCpuCount) を指定することもできます。

生成された構成ファイルを使用し、次のコマンドを実行して Windows ノードを追加できます

Add-AksEdgeNode -JsonConfigFilePath .\ScaleConfig.json

さまざまな展開オプションの構成例

ノードにリソースを割り当てる

Arc に接続し、GitOps を使用してアプリをデプロイするには、(処理能力) に LinuxNode.CpuCount 4 つ以上の CPU を割り当て、(RAM) に 4 GB 以上 LinuxNode.MemoryinMB を割り当て、0 より大きい数値を に ServiceIpRangeSize割り当てます。 ここでは、Kubernetes サービスに 10 個の IP アドレスを割り当てます。

{
    "Init": {
        "ServiceIpRangeSize": 10,
        "ServiceIPRangeStart": "192.168.1.151"
    },
    "Network": {
        "ControlPlaneEndpointIp": "192.168.1.191",
        "NetworkPlugin": "calico",
        "Ip4GatewayAddress": "192.168.1.1",
        "Ip4PrefixLength": 24,
        "DnsServers": ["192.168.1.1"]
    },
    "Machines": [
        {
            "NetworkConnection": {
                "AdapterName": "Ethernet"
            },
            "LinuxNode": {
                "CpuCount": 4,
                "MemoryInMB": 4096,
                "DataSizeInGB": 20,
                "Ip4Address": "192.168.1.171"
            }
        }
    ]
}

Linux ノードと Windows ノードをCreateする

Linux コントロール プレーンと Windows ワーカー ノードの両方をコンピューターで実行するには、次のコマンドを使用して構成ファイルを作成します。

New-AksEdgeConfig -DeploymentType ScalableCluster -NodeType LinuxAndWindows -outFile .\aksedge-config.json | Out-Null

コマンドを使用してデプロイをCreateします。

New-AksEdgeDeployment -JsonConfigFilePath .\aksedge-config.json
{
  "Machines": [
      {
          "NetworkConnection": {
              "AdapterName": "Ethernet"
          },
          "LinuxNode": {
              "CpuCount": 4,
              "MemoryInMB": 4096,
              "DataSizeInGB": 20,
              "Ip4Address": "192.168.1.171"
          },
          "WindowsNode": {
              "CpuCount": 2,
              "MemoryInMB": 4096,
              "Ip4Address": "192.168.1.172"
          }
      }
  ]
}

次の手順