Red Hat Training
A Red Hat training course is available for OpenShift Container Platform
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&
gt;(用于来自该节点的 VXLAN 流量)和另一流(包括操作set_field:<node_IP_address>->tun_dst
)匹配的流(用于向该节点传出的 VXLAN 流量)。 -
每个本地 pod 都应该有与
arp_spa=<pod_IP_address
> 和arp_tpa=<pod_IP_address
>(用于该 pod 的传入和传出 IP 流量)匹配的流,以及与nw_IP_address
> 和nw_dst=<pod_IP_address
>(用于该 pod 的传入和传出 IP 流量)匹配的流。
如果缺少流,请查看 第 39.10 节 “读取日志” 部分。
39.7.4.1. iptables
配置是否正确?
检查 iptables-save
的输出,确保您未过滤流量。但是,OpenShift Container Platform 在正常操作过程中设置 iptables 规则,因此无法意外地看到相关的条目。