39.7.4. Open vSwitch (OVS) は正しく設定されているか ?
OVS Pod のいずれかで ovs-vsctl
および ovs-ofctl
コマンドを実行する必要があります。
OVS Pod を一覧表示するには、以下のコマンドを入力します。
$ oc get pod -n openshift-sdn -l app=ovs
両サイドで Open vSwitch ブリッジを確認します。<ovs_pod_name>
を OVS Pod のいずれかの名前に置き換えます。
$ oc exec -n openshift-sdn <ovs_pod_name> -- ovs-vsctl list-br br0
上記のコマンドは br0
を返すはずです。
OVS が認識するすべてのポートを一覧表示できます。
$ oc exec -n openshift-sdn <ovs_pod_name> -- ovs-ofctl -O OpenFlow13 dump-ports-desc br0 OFPST_PORT_DESC reply (OF1.3) (xid=0x2): 1(vxlan0): addr:9e:f1:7d:4d:19:4f config: 0 state: 0 speed: 0 Mbps now, 0 Mbps max 2(tun0): addr:6a:ef:90:24:a3:11 config: 0 state: 0 speed: 0 Mbps now, 0 Mbps max 8(vethe19c6ea): addr:1e:79:f3:a0:e8:8c config: 0 state: 0 current: 10GB-FD COPPER speed: 10000 Mbps now, 0 Mbps max LOCAL(br0): addr:0a:7f:b4:33:c2:43 config: PORT_DOWN state: LINK_DOWN speed: 0 Mbps now, 0 Mbps max
とくにアクティブなすべての Pod の vethX
デバイスがポートとして表示されるはずです。
次に、そのブリッジに設定されているフローを一覧表示します。
$ oc exec -n openshift-sdn <ovs_pod_name> -- ovs-ofctl -O OpenFlow13 dump-flows br0
ovs-subnet または ovs-multitenant プラグインのどちらを使用しているかに応じて結果は若干異なりますが、以下のような一般的な設定を確認することができます。
-
すべてのリモートノードには
tun_src=<node_IP_address>
に一致するフロー (ノードからの着信 VXLAN トラフィック) およびアクションset_field:<node_IP_address>->tun_dst
を含む別のフロー (ノードへの発信 VXLAN トラフィック) が設定されている必要があります。 -
すべてのローカル Pod には
arp_spa=<pod_IP_address>
およびarp_tpa=<pod_IP_address>
に一致するフロー (Pod の着信および発信 ARP トラフィック) と、nw_src=<pod_IP_address>
およびnw_dst=<pod_IP_address>
に一致するフロー (Pod の着信および発信 IP トラフィック) が設定されている必要があります。
フローがない場合は、「ログの読み取り」 セクションを参照してください。
39.7.4.1. iptables
設定に誤りがないか ?
iptables-save
の出力をチェックし、トラフィックにフィルターを掛けていないことを確認します。OpenShift Container Platform は通常の操作時に iptables ルールを設定するため、ここにエントリーが表示されていても不思議なことではありません。