OpenShift のセカンダリーインターフェイスを使用した MetalLB LoadBalancer IP の対称ルーティング設定
Issue
-
MetalLB はセカンダリーインターフェイスから LB タイプ IP をアドバタイズします。必要なのは、OCP ノードがセカンダリーインターフェイス経由で MetalLB が提供する LB IP 上でアプリケーショントラフィックを受信し、セカンダリーインターフェイス経由で応答を送信するように設定することです。
-
システム上で
RP_filterが strict モード (net.ipv4.conf.default.rp_filter = 1およびnet.ipv4.conf.all.rp_filter = 1) で有効になっている場合、システムは、受信したパケットの送信元が、パケットが到着したのと同じインターフェイスを介して到達可能かどうかを検証します。そうでない場合、パケットは破棄されます。この機能が無効になっているか、loose モード (net.ipv4.conf.all.rp_filter = 2およびnet.ipv4.conf.default.rp_filter = 2) で有効になっている場合、システムは、デフォルトルートを使用するデフォルトゲートウェイ経由、またはルーティング設定に基づく別のインターフェイスを通じた別のゲートウェイ/ルート経由で、送信元に応答しようと試みます。OCP ノードでは、rp_filterはデフォルトで無効になっています。
ラボ/要件の例
-
MetalLB は
test-vlan-mbnamespace に対して、ip-addresspool-90から IP アドレスを提供します。$ oc get ipaddresspools.metallb.io ip-addresspool-90 -o yaml apiVersion: metallb.io/v1beta1 kind: IPAddressPool metadata: name: ip-addresspool-90 namespace: metallb-system resourceVersion: "265512386" uid: a146b8be-70ae-41de-a7d0-f876ad4dc67c spec: addresses: - 192.168.90.60-192.168.90.70 autoAssign: true avoidBuggyIPs: true serviceAllocation: namespaces: - test-vlan-mb -
MetalLB は
worker-1ノードのbond0.3208vlan インターフェイスから LB IP をアナウンスします。$ oc get l2advertisements.metallb.io l2-adv-90 -o yaml apiVersion: metallb.io/v1beta1 kind: L2Advertisement metadata: name: l2-adv-90 namespace: metallb-system spec: interfaces: - bond0.3208 ipAddressPools: - ip-addresspool-90 nodeSelectors: - matchLabels: kubernetes.io/hostname: worker-1 -
必要なのは、OCP ノード
worker-1がbond0.3208vlan インターフェイスを介してアプリケーショントラフィックを受信し、同じインターフェイスを介して応答を送信するように設定することです。
ラボに関するその他の情報
MetalLB IP: 192.168.90.60
SVC IP of MetalLB IP : 172.30.114.10 (externalTrafficPolicy: Cluster)
Primary Interface: enp1s0(br-ex replicates from enp1s0 during boot)
Secondary VLAN Interface: bond0.3208
SVC subnet: 172.30.0.0/16
SVC Masquerade GW: 169.254.169.4
$ oc get svc -n test-vlan-mb
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
web1 LoadBalancer 172.30.114.10 192.168.90.60 8080:30102/TCP 17d
worker-1 上の MetalLB IP の DNAT テーブル。これは、各 LB IP に対して MetalLB によって自動的に追加されます。
[root@worker-1 ~]# iptables -L -n -t nat | grep 192.168.90.60
DNAT 6 -- 0.0.0.0/0 192.168.90.60 tcp dpt:8080 to:172.30.114.10:8080
前提条件
- Cluster Network Operator で ローカルゲートウェイモード (ホスト経由のルート) と IP フォワーディング を有効にします。
Environment
- Red Hat OpenShift Container Platform (RHOCP)
- 4
Subscriber exclusive content
A Red Hat subscription provides unlimited access to our knowledgebase, tools, and much more.