AKS Edge Essentials での完全な Kubernetes デプロイ
注意事項
現在、複数のマシンへの完全なデプロイは試験的な機能です。 この機能に積極的に取り組んでいます。
分散マイクロサービス アーキテクチャをサポートするために、複数のマシンで実行するように AKS Edge Essentials クラスターを構成できます。 AKS Edge Essentials は静的な構成用であり、クラウドの AKS や Azure Local 上の AKS とは異なり、動的な VM の作成/削除やクラスターのライフサイクル管理は有効になりません。 AKS Edge Essentials には、必要に応じて Windows VM と共に、各マシンごとに Linux VM が 1 つだけ存在します。 各 VM には、インストール時に割り当てられた RAM、ストレージ、物理 CPU コアの静的割り当てがあります。 マルチノードデプロイでは、マシンの 1 つが Kubernetes 制御ノードを持つプライマリ マシンであり、もう 1 つのマシンはワーカー ノードを持つセカンダリ マシンです。 このデプロイ シナリオでは、外部スイッチを使用して K8S クラスターを構成します。 この構成では、ネットワーク上の別のコンピューターから kubectl
を実行したり、外部スイッチでワークロードのパフォーマンスを評価したりすることができます。
前提条件
マシンのセットアップに関する記事の説明に従って、コンピューターをセットアップします。
手順 1: 完全な Kubernetes デプロイ構成パラメーター
次のコマンドを使用して、スケーラブルなクラスターを作成するために必要なパラメーターを生成できます。
New-AksEdgeConfig -DeploymentType ScalableCluster -outFile .\aksedge-config.json | Out-Null
このコマンドを実行すると、 aksedge-config.jsonという名前の構成ファイルが作成されます。これには、Linux ノードを使用してスケーラブルなクラスターを作成するために必要な構成が含まれます。 ファイルは現在の作業ディレクトリに作成されます。 構成パラメーター (プロキシ設定など) の詳細については、「 デプロイ JSON 構成 」を参照してください。
構成ファイルを作成するためのその他のオプションについては、次の例を参照してください。
スケーラブルな Kubernetes デプロイに注意する主なパラメーターは次のとおりです。
外部スイッチ情報: 完全なデプロイでは、外部スイッチを使用してノード間の通信を有効にします。
MachineConfigType.NetworkConnection.AdapterName
パラメーターは、Ethernet
またはWi-Fi
として指定する必要があります。# 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
という名前の外部スイッチが自動的に作成され、展開に使用されます。Note
このリリースでは、スイッチに
New-AksEdgeDeployment
アダプターを使用している場合、 コマンドを使用した外部スイッチの自動作成に関する既知の問題があります。 この場合は、最初に Hyper-V manager - Virtual Switch Manager を使用して外部スイッチを作成し、スイッチを Wi-fi アダプターにマップしてから、このセクションで説明するように構成 JSON にスイッチの詳細を指定します。IP アドレス: Control Plane、 Kubernetes サービス、 Nodes (VM)に、ネットワークから空き IP アドレスを割り当てる必要があります。 詳細については、 AKS Edge Essentials ネットワークの概要 を参照してください。 たとえば、192.168.1.0/24 の IP アドレス範囲を持つローカル ネットワークでは、DHCP スコープの外側に 1.151 以上が存在する可能性があるため、空きになる可能性があります。 AKS Edge Essentials では現在、IPv4 アドレスのみがサポートされています。 理想的には、利用可能な IP アドレスを把握していることが望ましいです。ただし、AksEdge-ListUsedIPv4s スクリプトを GitHub リポジトリ から使用して、現在使用中の IP を確認し、構成でそれらの IP アドレスを避けることができます。 構成ファイルの
Network
セクションには、ControlPlaneEndpointIp
、Ip4GatewayAddress
、Ip4PrefixLength
、ServiceIPRangeSize
、ServiceIPRangeStart
、およびDnsServers
の各パラメーターを指定する必要があります。
重要
Kubernetes pod cidr
は、K3s 用に 10.42.0.0/16
され、K8 用に 10.244.0.0/24
されています。 Kubernetes service cidr
は、K3s 用に 10.43.0.0/16
され、K8 用に 10.96.0.0/12
されています。
- 既定では、
Network.NetworkPlugin
の値はflannel
です。 Flannel は、K3S クラスターの既定の CNI です。 K8S クラスターで、NetworkPlugin
をcalico
に変更します。 - 前のパラメーターに加えて、デプロイの構成に従って、ここで説明するように、
LinuxNode.CpuCount
、LinuxNode.MemoryInMB
、LinuxNode.DataSizeInGB
、LinuxNode.Ip4Address
、WindowsNode.CpuCount
、WindowsNode.MemoryInMB
、WindowsNode.Ip4Address
、Init.ServiceIPRangeSize
、およびNetwork.InternetDisabled
に従って、次のパラメーターを設定できます。
手順 2: 構成ファイルを検証する
aksedge-config.json ファイルを更新した後、AksEdgePrompt ツールを実行。 このツールにより、モジュールが読み込まれた管理者特権の PowerShell ウィンドウが開きます。 次に、次のコマンドを実行して、 Test-AksEdgeNetworkParameters
コマンドレットを使用してネットワーク パラメーターを検証します。
Test-AksEdgeNetworkParameters -JsonConfigFilePath .\aksedge-config.json
手順 3: 完全なデプロイ クラスターを作成する
Test-AksEdgeNetworkParameters
true
が返された場合は、デプロイを作成する準備が整います。 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 の CpuCount
や MemoryInMB
などのパラメーターを指定することもできます。
生成された構成ファイルを使用し、次のコマンドを実行して Windows ノードを追加できます。
Add-AksEdgeNode -JsonConfigFilePath .\ScaleConfig.json
さまざまなデプロイ オプションの構成例
ノードにリソースを割り当てる
Arc に接続して GitOps を使用してアプリをデプロイするには、 LinuxNode.CpuCount
(処理能力)、 LinuxNode.MemoryinMB
(RAM) に 4 GB 以上の CPU を割り当て、 ServiceIpRangeSize
に 0 より大きい数を割り当てます。 ここでは、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 ノードを作成する
Linux コントロール プレーンと Windows ワーカー ノードの両方をコンピューター上で実行するには、次のコマンドを使用して構成ファイルを作成します。
New-AksEdgeConfig -DeploymentType ScalableCluster -NodeType LinuxAndWindows -outFile .\aksedge-config.json | Out-Null
次の コマンドを使ってデプロイを作成します。
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"
}
}
]
}