Translated message

A translation of this page exists in English.

OpenShift のセカンダリーインターフェイスを使用した MetalLB LoadBalancer IP の対称ルーティング設定

Solution In Progress - Updated -

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-mb namespace に対して、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.3208 vlan インターフェイスから 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-1bond0.3208 vlan インターフェイスを介してアプリケーショントラフィックを受信し、同じインターフェイスを介して応答を送信するように設定することです。

ラボに関するその他の情報
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

前提条件

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.

Current Customers and Partners

Log in for full access

Log In

New to Red Hat?

Learn more about Red Hat subscriptions

Using a Red Hat product through a public cloud?

How to access this content