次の方法で共有


Azure CLI を使用して Azure Arc 対応 Kubernetes クラスター用の MetalLB の拡張機能をデプロイする

適用対象: Azure Local バージョン 23H2

ロード バランサーの主な目的は、Kubernetes クラスター内の複数のノードにトラフィックを分散することです。 これにより、ダウンタイムを防ぎ、アプリケーションの全体的なパフォーマンスを向上させることができます。 Azure Arc で有効になっている AKS では、Arc 拡張機能を使用した Kubernetes クラスターでの MetalLB ロード バランサー インスタンスの作成がサポートされています。

前提条件

  • 少なくとも 1 つの Linux ノードを持つ Azure Arc 対応 Kubernetes クラスター。 Azure CLI または Azure ポータルを使用して、Azure Local バージョン 23H2 に Kubernetes クラスターを作成できます。 Azure Local の AKS バージョン 23H2 クラスターでは、Arc が既定で有効になっています。
  • ロード バランサーに十分な IP アドレスがあることを確認します。 Azure Local バージョン 23H2 の AKS の場合は、ロード バランサー用に予約されている IP アドレスが、Arc VM 論理ネットワークおよびコントロール プレーン IP の IP アドレスと競合しないようにします。 Kubernetes での IP アドレスの計画とネットワークの詳細については、「kubernetes のネットワーク要件および Kubernetes の IP アドレス計画を参照してください。
  • このハウツー ガイドでは、Metal LB のしくみを理解していることを前提としています。 詳細については、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: az k8s-runtime load-balancer enable コマンドを使用して MetalLB の Arc 拡張機能を有効にする

次のコマンドを使用して MetalLB の Arc 拡張機能を有効にするには、Application.Read.All Graph 権限が必要です。 このアクセス許可があるかどうかを確認するには、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: az k8s-extension add コマンドを使用して MetalLB の Arc 拡張機能を有効にする

Application.Read.All Graph アクセス許可がない場合は、次の手順を実行できます。

  1. まだ登録していない場合は、 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  Registered
  1. MetalLB 用 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 tsv

$objIDしたら、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 クラスターのロード バランサーをリモートで作成できるようになりました。 このコマンドは、名前空間kube-systemIPAddressPool型のカスタム リソースを作成します。

続行する前に、次の変数を構成します。

パラメーター 説明
$lbName MetalLB ロード バランサー インスタンスの名前。
$advertiseMode MetalLB ロード バランサーのモード。 サポートされている値は、 ARPBGP、または 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

次のステップ