適用対象: AKS on Azure Local
ロード バランサーの主な目的は、Kubernetes クラスター内の複数のノードにトラフィックを分散することです。 これにより、ダウンタイムを防ぎ、アプリケーションの全体的なパフォーマンスを向上させることができます。 Azure Arc で有効になっている AKS では、Arc 拡張機能を使用した Kubernetes クラスターでの MetalLB ロード バランサー インスタンスの作成がサポートされています。
前提条件
- 少なくとも 1 つの Linux ノードを持つ Azure Arc 対応 Kubernetes クラスター。 Azure CLI または Azure portal を使用して、Azure Local に Kubernetes クラスターを作成できます。 Azure ローカル クラスター上の AKS は、既定で Arc 対応です。
- ロード バランサーに十分な IP アドレスがあることを確認します。 Azure Local 上の AKS の場合は、ロード バランサー用に予約されている IP アドレスが、Arc VM 論理ネットワークおよびコントロール プレーン IP の IP アドレスと競合しないようにします。 Kubernetes での IP アドレスの計画とネットワークの詳細については、「kubernetes のネットワーク要件および Kubernetes の IP アドレス計画を参照してください。
- このハウツー ガイドでは、MetalLB のしくみを理解していることを前提としています。 詳細については、Kubernetes 用 MetalLB の overviewを参照してください。
Azure CLI 拡張機能をインストールする
次のコマンドを実行して、必要な Azure CLI 拡張機能をインストールします。
az extension add -n k8s-runtime --upgrade
MetalLB の Arc 拡張機能を有効にする
続行する前に、次の変数を構成します。
| パラメーター | 説明 |
|---|---|
$subId |
Kubernetes クラスターの Azure サブスクリプション ID。 |
$rgName |
Kubernetes クラスターの Azure リソース グループ。 |
$clusterName |
Kubernetes クラスターの名前。 |
オプション 1: を使用して MetalLB の Arc 拡張機能を有効にする az k8s-runtime load-balancer enable
次のコマンドを使用して MetalLB の Arc 拡張機能を有効にするには、Application.Read.AllGraph 権限が必要です。 このアクセス許可があるかどうかを確認するには、Azure サブスクリプションにログインし、次のコマンドを実行します。
az ad sp list --filter "appId eq '087fca6e-4606-4d41-b3f6-5ebdf75b8b4c'" --output json
コマンドが失敗した場合は、Azure テナント管理者に連絡して、 Application.Read.All ロールを取得してください。
アクセス許可がある場合は、 az k8s-runtime load-balancer enable コマンドを使用して Arc 拡張機能をインストールし、Kubernetes クラスターのリソース プロバイダーを登録できます。
--resource-uri パラメーターは、Kubernetes クラスターのリソース マネージャー ID を参照します。
az k8s-runtime load-balancer enable --resource-uri subscriptions/$subId/resourceGroups/$rgName/providers/Microsoft.Kubernetes/connectedClusters/$clusterName
オプション 2: を使用して MetalLB の Arc 拡張機能を有効にする az k8s-extension add
Application.Read.AllGraph アクセス許可がない場合は、次の手順を実行できます。
まだ登録していない場合は、
Microsoft.KubernetesRuntime RPを登録します。 Azure サブスクリプションごとに 1 回のみ登録する必要があることに注意してください。 Azure portal を使用してリソース プロバイダーを登録することもできます。 リソース プロバイダーを登録する方法と必要なアクセス許可の詳細については、「 リソース プロバイダーを登録する方法を参照してください。az provider register -n Microsoft.KubernetesRuntime次のコマンドを実行して、リソース プロバイダーが正常に登録されているかどうかを確認できます。
az provider show -n Microsoft.KubernetesRuntime -o table予想される出力:
Namespace RegistrationPolicy RegistrationState --------------------------- -------------------- ------------------- Microsoft.KubernetesRuntime RegistrationRequired RegisteredMetalLB 用 Arc 拡張機能をインストールするには、MetalLB 拡張機能リソース プロバイダーの AppID を取得し、拡張機能の作成コマンドを実行します。 Arc Kubernetes クラスターごとに 1 回、次のコマンドを実行する必要があります。
az ad sp list を実行して、Arc 拡張機能のアプリケーション ID を取得します。 次のコマンドを実行するには、Azure テナントの
userメンバーである必要があります。 ユーザーとゲストのメンバーシップの詳細については、「 Microsoft Entra ID での既定のユーザーアクセス許可を参照してください。$objID = az ad sp list --filter "appId eq '00001111-aaaa-2222-bbbb-3333cccc4444'" --query "[].id" --output tsvobjIDを作成したら、Kubernetes クラスターに MetalLB Arc 拡張機能をインストールできます。 次のコマンドを実行するには、 Kubernetes 拡張機能共同作成者 ロールが必要です。az k8s-extension create --cluster-name $clusterName -g $rgName --cluster-type connectedClusters --extension-type microsoft.arcnetworking --config k8sRuntimeFpaObjectId=$objID -n arcnetworking
Kubernetes クラスターに MetalLB ロード バランサーをデプロイする
az k8s-runtime load-balancer create コマンドを実行して、Kubernetes クラスターのロード バランサーをリモートで作成できるようになりました。 このコマンドは、名前空間IPAddressPoolにkube-system型のカスタム リソースを作成します。
続行する前に、次の変数を構成します。
| パラメーター | 説明 |
|---|---|
$lbName |
MetalLB ロード バランサー インスタンスの名前。 |
$advertiseMode |
MetalLB ロード バランサーのモード。 サポートされている値は、 ARP、 BGP、または Bothです。 |
$ipRange |
ARP モードまたはBoth モードの MetalLB ロード バランサーの IP 範囲。 |
アドバタイズ モードが BGP または Both場合は、 BGPAdvertisementの種類のカスタム リソースも作成されます。 アドバタイズ モードが ARP または Both場合は、 L2Advertisement型のカスタム リソースも作成されます。
az k8s-runtime load-balancer create --load-balancer-name $lbName --resource-uri subscriptions/$subId/resourceGroups/$rgName/providers/Microsoft.Kubernetes/connectedClusters/$clusterName --addresses $ipRange --advertise-mode $advertiseMode
Kubernetes クラスターの BGP ピアを作成する
az k8s-runtime bgp-peer create コマンドを実行して、Kubernetes クラスターの BGP ピアをリモートで作成します。 BGP ピアは、 BGP または Both アドバタイズ モードを持つすべてのロード バランサーに対して有効であることに注意してください。
BGPモードまたはBothモードで MetalLB ロード バランサーを使用している場合は、BGP ピアの作成が必須です。
続行する前に、次の変数を構成します。
| パラメーター | 説明 |
|---|---|
$peerName |
BGP ピアの名前。 |
$myASN |
セッションのローカル終了に使用する AS 番号。 |
$peerASN |
セッションのリモート終了から想定される AS 番号。 |
$peerIP |
セッションを確立するときにダイヤルするアドレス。 |
az k8s-runtime bgp-peer create --bgp-peer-name $peerName --resource-uri subscriptions/$subId/resourceGroups/$rgName/providers/Microsoft.Kubernetes/connectedClusters/$clusterName --my-asn $myASN --peer-asn $peerASN --peer-address $peerIP
次のステップ
GitOps Flux v2 Arc 拡張機能を使用して Kubernetes クラスターにアプリケーションをデプロイする