35.3. Ramp ノードを使用したトンネルの確立
前述のソリューションを使用できない場合もあります。たとえば、F5® は互換性のないカスタム Linux カーネルとディストリビューションを使用するため、F5 BIG-IP® ホストは OpenShift Container Platform ノードインスタンスまたは OpenShift Container Platform SDN を実行できません。
代わりに、F5 BIG-IP® を有効にして Pod に到達できるようにするために、クラスターネットワーク内の既存のノードを Ramp ノード として選択し、F5 BIG-IP® ホストと指定された Ramp ノード間でトンネルを確立することができます。Ramp ノードは通常の OpenShift Container Platform ノードであるため、Ramp ノードには、トラフィックをクラスターネットワーク内のノードにある Pod にルーティングするための設定が必要になります。そのため、Ramp ノードは F5 BIG-IP® ホストがクラスターネットワーク全体にアクセスする際に使用するゲートウェイのロールを引き継ぎます。
以下は、F5 BIG-IP® ホストと指定された Ramp ノード間で ipip トンネルを確立する例です。
F5 BIG-IP® ホスト側:
以下の変数を設定してください。
F5_IP=10.3.89.66 RAMP_IP=10.3.89.89 TUNNEL_IP1=10.3.91.216 CLUSTER_NETWORK=10.128.0.0/14
# F5_IP=10.3.89.66
1 # RAMP_IP=10.3.89.89
2 # TUNNEL_IP1=10.3.91.216
3 # CLUSTER_NETWORK=10.128.0.0/14
4 Copy to Clipboard Copied! Toggle word wrap Toggle overflow 古い route、self、tunnel および SNAT pool を削除します。
tmsh delete net route $CLUSTER_NETWORK || true tmsh delete net self SDN || true tmsh delete net tunnels tunnel SDN || true tmsh delete ltm snatpool SDN_snatpool || true
# tmsh delete net route $CLUSTER_NETWORK || true # tmsh delete net self SDN || true # tmsh delete net tunnels tunnel SDN || true # tmsh delete ltm snatpool SDN_snatpool || true
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 新規の tunnel、self、route および SNAT pool を作成し、この SNAT pool を仮想サーバーで使用します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
Ramp ノード:
以下で、永続性のない設定が作成されます。 つまり、ramp ノードまたは openvswitch サービスを再起動すると、この設定はなくなります。
以下の変数を設定してください。
F5_IP=10.3.89.66 TUNNEL_IP1=10.3.91.216 TUNNEL_IP2=10.3.91.217 CLUSTER_NETWORK=10.128.0.0/14
# F5_IP=10.3.89.66 # TUNNEL_IP1=10.3.91.216 # TUNNEL_IP2=10.3.91.217
1 # CLUSTER_NETWORK=10.128.0.0/14
2 Copy to Clipboard Copied! Toggle word wrap Toggle overflow 古いトンネルを削除します。
ip tunnel del tun1 || true
# ip tunnel del tun1 || true
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 適切な L2 接続インターフェイス (たとえば、eth0) を使用して、Ramp ノードで ipip トンネルを作成します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow SDN サブネットの未使用の IP を使用してトンネル IP を SNAT します。
source /run/openshift-sdn/config.env tap1=$(ip -o -4 addr list tun0 | awk '{print $4}' | cut -d/ -f1 | head -n 1) subaddr=$(echo ${OPENSHIFT_SDN_TAP1_ADDR:-"$tap1"} | cut -d "." -f 1,2,3) export RAMP_SDN_IP=${subaddr}.254
# source /run/openshift-sdn/config.env # tap1=$(ip -o -4 addr list tun0 | awk '{print $4}' | cut -d/ -f1 | head -n 1) # subaddr=$(echo ${OPENSHIFT_SDN_TAP1_ADDR:-"$tap1"} | cut -d "." -f 1,2,3) # export RAMP_SDN_IP=${subaddr}.254
Copy to Clipboard Copied! Toggle word wrap Toggle overflow この
RAMP_SDN_IP
を追加のアドレスとして tun0 (ローカル SDN のゲートウェイ) に割り当てます。ip addr add ${RAMP_SDN_IP} dev tun0
# ip addr add ${RAMP_SDN_IP} dev tun0
Copy to Clipboard Copied! Toggle word wrap Toggle overflow SNAT の OVS ルールを変更します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 高可用性を実現するように Ramp ノードを設定する予定がない場合は、必要に応じて、Ramp ノードをスケジュール対象外としてマークします。以下のセクションに従う予定や、高可用性を備えた Ramp ノードを作成する予定がある場合は、この手順を省略してください。
oc adm manage-node <ramp_node_hostname> --schedulable=false
$ oc adm manage-node <ramp_node_hostname> --schedulable=false
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
35.3.1. 高可用性を備えた Ramp ノードの設定 リンクのコピーリンクがクリップボードにコピーされました!
keepalived を内部で使用する OpenShift Container Platform の ipfailover 機能を使用することで、F5 BIG-IP® の観点から Ramp ノードの高可用性を確保することができます。これを実行するには、まず同じ L2 サブネット上の 2 つのノード (たとえば、ramp-node-1 および ramp-node-2) を起動します。
次に、仮想 IP ( VIP) を使用するために未割り当ての IP アドレスを同じサブネット内から選択します。この IP アドレスは、F5 BIG-IP® でトンネルを設定するときに使用する RAMP_IP
変数として設定されます。
たとえば、Ramp ノードに対して使用するサブネットは 10.20.30.0/24 とし、10.20.30.2 を ramp-node-1 に、10.20.30.3 を ramp-node-2 に割り当てているとします。VIP については、同じ 10.20.30.0/24 サブネットから未割り当てのアドレスを選択します (例: 10.20.30.4)。次に、ipfailover を設定するために、両方のノードに f5rampnode などのラベルでマークを付けします。
oc label node ramp-node-1 f5rampnode=true oc label node ramp-node-2 f5rampnode=true
$ oc label node ramp-node-1 f5rampnode=true
$ oc label node ramp-node-2 f5rampnode=true
ipfailover ドキュメントで説明されているのと同様に、ここでサービスアカウントを作成し、そのアカウントを特権付き SCC に追加する必要があります。最初に、f5ipfailover サービスアカウントを作成します。
oc create serviceaccount f5ipfailover -n default
$ oc create serviceaccount f5ipfailover -n default
次に、f5ipfailover サービスを特権付き SCC に追加できます。default namespace の f5ipfailover を特権付き SCC に追加するには、以下を実行します。
oc adm policy add-scc-to-user privileged system:serviceaccount:default:f5ipfailover
$ oc adm policy add-scc-to-user privileged system:serviceaccount:default:f5ipfailover
最後に、選択した VIP (RAMP_IP
変数) と f5ipfailover サービスアカウントを使用して、先に設定した f5rampnode ラベルを使用して VIP を 2 つのノードに割り当て、ipfailover を設定します。
- 1
RAMP_IP
を設定する必要があるインターフェイス。
上記の設定を行うと、現在 VIP が割り当てられている Ramp ノードホストで障害が発生した場合に VIP (RAMP_IP
変数) が自動的に再割り当てされます。