NCP は、各サービス ポートにレイヤー 4 のロード バランサ仮想マシンおよびプールを作成します。
- TCP および UDP の両方がサポートされます。
- 各サービスには一意の IP アドレスが割り当てられます。
- サービスには、LoadBalancer 定義の loadBalancerIP フィールドに基づいて外部 IP アドレス プールから IP アドレスが割り当てられます。loadBalancerIP フィールドは空白の場合もあれば、IP アドレスが設定されている場合もあります。また、IP アドレス プールの名前または ID が指定されている場合もあります。loadBalancerIP フィールドが空白の場合、IP アドレスは、ncp.ini の [nsx_v3] セクションにある external_ip_pools_lb オプションで指定された外部 IP アドレス プールから割り当てられます。external_ip_pools_lb オプションがない場合は、external_ip_pools で指定されたプールが使用されます。LoadBalancer サービスは、この IP アドレスとサービス ポートを通じて公開されます。
- 構成を変更して NCP を再起動することで、異なる IP アドレス プールに変更できます。
-
loadBalancerIP によって指定された IP プールには、
scope: ncp/owner, tag: cluster:<cluster_name>
タグが必要です。 - ポリシー モードでは、セレクタのない LoadBalancer タイプのサービスがサポートされます。このようなサービスの場合、NSX ロード バランサの SNAT IP アドレスは LoadBalancer タイプのサービスの IP アドレスになります。LoadBalancer タイプのサービスの IP アドレスを更新すると、NSX ロード バランサの SNAT IP アドレスが更新されます。セレクタのないサービスは、セレクタのない別のサービスのエンドポイントとして構成できません。
- ポリシー モードでは、注釈 ncp/transparent-lb を true に設定して、ロード バランサ プールで SNAT を無効にできます。この機能は、単一層トポロジでのみサポートされます。
- NSX のデフォルトでは、ロード バランサの仮想サーバ、サーバ プール、プール メンバーの数に制限があります。これらの制限を回避するには、[nsx_v3] relax_scale_validation を true に設定します。
- NCP のデフォルトでは、ロード バランサのプール メンバー数に制限は適用されません。この動作を変更するには、[nsx_v3] ncp_enforced_pool_member_limit パラメータを使用します。この機能はポリシー モードでのみサポートされています。この機能を使用するには、[nsx_v3] l4_lb_auto_scaling を false に設定する必要があります。ncp_enforced_pool_member_limit のオプションは次のとおりです。
- DEACTIVATE - NCP はプール メンバーの制限を適用しません。
- ACTIVATE - NCP はプール メンバーの制限を適用し、ロード バランサで CPU またはメモリが過剰に使用されないようにします。relax_scale_validation が false に設定され、members_per_small_lbs または members_per_medium_lbs が NSX スケール制限よりも大きい値に設定されている場合は、NSX スケールが適用されるため、この構成は不要になります。
- サービスにはエラーのアノテーションが追加されます。エラー キーは ncp/error.loadbalancer です。想定されるエラーは次のとおりです。
- ncp/error.loadbalancer: IP_POOL_NOT_FOUND
このエラーは、指定した loadBalancerIP: <nsx-ip-pool> 中の <nsx-ip-pool> が見つからないことを示しています。サービスは非アクティブになります。エラーを修正するには、有効な IP アドレス プールを指定し、サービスを削除して再作成します。
- ncp/error.loadbalancer: IP_POOL_EXHAUSTED
このエラーは、指定した loadBalancerIP: <nsx-ip-pool> 中の IP アドレス プールで IP アドレスが枯渇していることを示しています。サービスは非アクティブになります。エラーを修正するには、使用可能な IP アドレスのある IP アドレス プールを指定し、サービスを削除して再作成します。
- ncp/error.loadbalancer: IP_POOL_NOT_UNIQUE
このエラーは、loadBalancerIP: <nsx-ip-pool> で指定された名前を持つ IP アドレス プールが複数あることを示します。サービスは非アクティブになります。
- ncp/error.loadbalancer: POOL_ACCESS_DENIED
このエラーは、loadBalancerIP で指定された IP アドレス プールに
scope: ncp/owner, tag: cluster:<cluster_name>
タグがないか、タグで指定されたクラスタが Kubernetes クラスタの名前と一致しないことを示します。 - ncp/error.loadbalancer: LB_VIP_CONFLICT
このエラーは、loadBalancerIP フィールドの IP アドレスがアクティブなサービスの IP アドレスと同じであることを示しています。サービスは非アクティブになります。
- ncp/error.loadbalancer: IP_POOL_NOT_FOUND
- レイヤー 4 ロード バランサは、自動スケーリングをサポートしています。Kubernetes LoadBalancer サービスが追加の仮想サーバを必要とするように作成または変更されており、既存のレイヤー 4 ロード バランサに十分な容量がない場合、新しいレイヤー 4 ロード バランサが作成されます。また、NCP は、仮想サーバが接続されていないレイヤー 4 ロード バランサも削除します。この機能はデフォルトで有効になっています。この機能を無効にするには、NCP ConfigMap で l4_lb_auto_scaling を false に設定する必要があります。
- LoadBalancer タイプのサービスを作成するときに、loadBalancerSourceRanges パラメータを指定できます。この機能は、ポリシー モードでのみサポートされます。次はその例です。
kind: Service metadata: name: nginx-service-lb labels: app: nginx spec: type: LoadBalancer loadBalancerSourceRanges: - "10.30.88.116/24" ports: - port: 80 targetPort: 80 protocol: TCP name: tcp ...
作成された NSX ロード バランサは、指定された送信元 IP アドレスからのトラフィックのみを許可します。これを検証するには、NSX Manager で仮想サーバの [アクセス リスト コントロール] を確認します。特定のグループへのアクセスが許可されます。このグループには、loadBalancerSourceRanges で指定された IP アドレスが含まれます。このグループを確認するには、 の順に移動します。