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 アクセス許可がない場合は、次の手順を実行できます。
- まだ登録していない場合は、
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
- 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-system
にIPAddressPool
型のカスタム リソースを作成します。
続行する前に、次の変数を構成します。
パラメーター | 説明 |
---|---|
$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