Azure Operator Nexus Kubernetes サービスでサービス ロード バランサーを構成する
この記事では、Nexus Kubernetes クラスターでサービス ロード バランサーを構成する方法について説明します。 ロード バランサーを使用すると、外部サービスからクラスター内で実行されているサービスにアクセスできます。 このガイドの焦点は、プロセスを理解するのに役立つ例を提供する構成の側面です。 このガイドに従うことで、Nexus Kubernetes クラスターでサービス ロード バランサーを効果的に構成できます。
前提条件
この攻略ガイドを読み進む前に、次のことをお勧めします。
- 関連する包括的な概要と手順について、Nexus Kubernetes クラスターのクイックスタート ガイドを参照してください。
- ガイドの実装を円滑に行うため、概要が説明されている前提条件を満たしていることを確認してください。
- デプロイやサービスなど、Kubernetes の概念に関する知識。
- ロード バランサーの IP プールに使用できる IP アドレス範囲を取得するには、ネットワーク管理者に問い合わせてください。
制限事項
- IP プールの構成は不変です。一度設定すると、Nexus Kubernetes クラスターで変更することはできません。
- IP プール名は、小文字または数字で始まり、小文字または数字で終わる必要があります。
- 潜在的な問題や制限を回避するために、IP プール名は 63 文字を超えないようにしてください。
- IP アドレス プールは、クラスター内の競合やネットワークの問題を防ぐために、既存の POD CIDR、サービス CIDR、または CNI プレフィックスと重複しないようにする必要があります。
重要
これらの手順は、新しい Nexus Kubernetes クラスターを作成するための手順です。 IP プールの構成は不変であるため、Bicep テンプレートを既存のクラスターに適用しないでください。 IP プール構成を使用してクラスターを作成した後は、変更できません。
構成オプション
サービス ロード バランサーの IP アドレス プールを構成する前に、使用可能なさまざまな構成オプションを理解しておくことが重要です。 これらのオプションを使用すると、特定の要件に従って IP アドレス プールの動作とパラメーターを定義できます。
IP アドレス プールの構成オプションを調べてみましょう。
必須のパラメーター
IP アドレス プールの構成には、次の 2 つのフィールドがname
必要ですaddresses
。 これらのフィールドは、IP アドレス範囲を定義し、プールを識別するために不可欠です。
- このフィールドは
addresses
、プール内での割り当てに使用できる IP アドレス範囲の一覧を指定します。 各範囲は、CIDR 形式でサブネットとして定義できます。 単一の IP アドレス (IPv4 の場合は /32、IPv6 の場合は /128 など) は使用しないでください。 - このフィールドは
name
、IP アドレス プールの一意識別子として機能します。 これは、プールを BGP (ボーダー ゲートウェイ プロトコル) アドバタイズに関連付け、クラスター内で効果的な通信を有効にするのに役立ちます。
Note
Kubernetes LoadBalancer
サービスにデュアル スタック アドレスを設定できるようにするには、IP プールの構成に IPv4 と IPv6 CIDR の両方が含まれていることを確認します。
オプション パラメーター
必須フィールドに加えて、IP アドレス プールの構成をさらにカスタマイズするために使用できる省略可能なフィールドもあります。
- このフィールドは
autoAssign
、プールから IP アドレスが自動的に割り当てられるかどうかを決定します。 このフィールドは既定値string
の型True
です。 設定は、好みに応じて行True
うことができますFalse
。 - このフィールドは
onlyUseHostIps
、プール内で.0
.255
終わる IP アドレスの使用を制御します。 このオプションを有効にすると、予約済みのネットワーク アドレスと.254
ブロードキャスト アドレス.1
を除き、(両端を含む) 間の IP アドレスへの使用が制限されます。
IP アドレス プール構成の Bicep テンプレート パラメーター
次の JSON スニペットは、Bicep テンプレートで IP アドレス プールを構成するために必要なパラメーターを示しています。
"ipAddressPools": {
"value": [
{
"addresses": ["<IP>/<CIDR>"],
"name": "<pool-name>",
"autoAssign": "True", /* "True"/"False" */
"onlyUseHostIps": "True" /* "True"/"False" */
}
]
}
クラスターに IP プール構成を追加するには、クイックスタート中に作成したkubernetes-deploy-parameters.json
ファイルを更新する必要があります。 目的の設定に従って、このファイルに IP プールの構成を含めます。
IP プール構成をパラメーター ファイルに追加した後、Bicep テンプレートのデプロイに進むことができます。 このアクションにより、指定した IP アドレス プール構成で新しいクラスターが設定され、意図したとおりに IP プールを利用できるようになります。
次の手順に従って、目的の IP プール構成を使用して新しい Nexus Kubernetes クラスターを作成し、クラスター サービスの IP アドレス プールを利用できます。
パラメーターの例
このパラメーター ファイルは、BGP ロード バランサーが有効になっているクラスターを 作成するためのクイック スタート ガイド Bicep テンプレートと共に使用することを目的としています。 これには、BGP ロード バランサー機能を使用してクラスターを設定するために必要な構成設定が含まれています。 Bicep テンプレートでこのパラメーター ファイルを使用すると、目的の BGP ロード バランサー機能を持つクラスターを作成できます。
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentParameters.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"kubernetesClusterName":{
"value": "lb-test-cluster"
},
"adminGroupObjectIds": {
"value": [
"00000000-0000-0000-0000-000000000000"
]
},
"cniNetworkId": {
"value": "/subscriptions/<subscription_id>/resourceGroups/<resource_group>/providers/Microsoft.NetworkCloud/l3Networks/<l3Network-name>"
},
"cloudServicesNetworkId": {
"value": "/subscriptions/<subscription_id>/resourceGroups/<resource_group>/providers/Microsoft.NetworkCloud/cloudServicesNetworks/<csn-name>"
},
"extendedLocation": {
"value": "/subscriptions/<subscription_id>/resourceGroups/<managed_resource_group>/providers/microsoft.extendedlocation/customlocations/<custom-location-name>"
},
"location": {
"value": "eastus"
},
"sshPublicKeys": {
"value": [
{
"keyData": "ssh-rsa AAAAB..."
},
{
"keyData": "ssh-rsa AAAAC..."
}
]
},
"ipAddressPools": {
"value": [
{
"addresses": ["<IP>/<CIDR>"],
"name": "<pool-name>",
"autoAssign": "True",
"onlyUseHostIps": "True"
}
]
}
}
}
Note
DualStack サービスを作成する場合は、アドレス プールに IPv4 CIDR と IPv6 CIDR の両方が含まれていることを確認します。 これにより、ロード バランサー構成で IPv4 アドレスと IPv6 アドレスの両方を同時にサポートできます。
例: サービスの静的 IP アドレスの割り当て
サービスに静的 IP アドレスを割り当てるには、次のコマンドを使用します。
デプロイの作成
kubectl create deployment nginx --image=nginx --port 80
静的 IP 割り当て (LoadBalancerIP)
kubectl expose deployment nginx \
--name nginx-loadbalancer-pool1-static \
--type LoadBalancer \
--load-balancer-ip <IP from pool-1>
IP プールの目的の IP アドレスに置き換えます <IP from pool-1>
。
静的 IP 割り当て (ExternalIP)
kubectl expose deployment nginx \
--name nginx-clusterip-pool1-static \
--type ClusterIP \
--external-ip <IP from pool-1>
IP プールの目的の IP アドレスに置き換えます <IP from pool-1>
。
例: 特定の IP プールからのサービスの IP アドレス割り当て
特定の IP プールからサービスの IP アドレスを割り当てるには、次のコマンドを使用できます。
kubectl expose deployment nginx \
--name nginx-loadbalancer-pool2-auto \
--type LoadBalancer \
--overrides '{"metadata":{"annotations":{"metallb.universe.tf/address-pool":"pool-2"}}}'
このコマンドは、IP プール pool-2
からサービスに IP アドレスを割り当てます。 必要に応じてプール名を調整します。 これらの例を試す前に、2 つの異なる IP アドレス プールを持つ Nexus Kubernetes クラスターが既に作成されていることを確認してください。 まだ作成していない場合は、必要な手順に従ってクラスターを作成し、それに応じて IP プールを構成します。
Note
IP アドレス プール名では大文字と小文字が区別されます。 プール名を指定するときは、必ず正しい大文字と小文字を使用してください。
次のステップ
新しく構成されたロード バランサーを使用して、Nexus Kubernetes クラスター内にネットワーク関数 (NF) をデプロイしてみてください。 この構成により、負荷分散機能をテストし、NF のインスタンス間でトラフィックがどのように分散されるかを確認できます。