第 4 章 使用 ovnkube-trace 追踪 Openflow
OVN 和 OVS 流量流可以在一个名为 ovnkube-trace 的单个实用程序中模拟。ovnkube-trace 工具运行 ovn-trace、ovs-appctl ofproto/trace 和 ovn-detrace,并在单个输出中关联这些信息。
您可以从专用容器执行 ovnkube-trace 二进制文件。对于 OpenShift Container Platform 4.7 后的版本,您还可以将该二进制文件复制到本地主机中,并从该主机执行它。
4.1. 在本地主机上安装 ovnkube-trace 复制链接链接已复制到粘贴板!
ovnkube-trace 工具跟踪在 OVN-Kubernetes 驱动的 OpenShift Container Platform 集群中点之间的任意 UDP 或 TCP 流量的数据包模拟。将 ovnkube-trace 二进制文件复制到本地主机,使其可以针对集群运行。
先决条件
-
已安装 OpenShift CLI(
oc)。 -
使用具有
cluster-admin权限的用户登陆到集群。
流程
使用以下命令创建 pod 变量:
$ POD=$(oc get pods -n openshift-ovn-kubernetes -l app=ovnkube-control-plane -o name | head -1 | awk -F '/' '{print $NF}')在本地主机上运行以下命令,从
ovnkube-control-planepod 复制二进制文件:$ oc cp -n openshift-ovn-kubernetes $POD:/usr/bin/ovnkube-trace -c ovnkube-cluster-manager ovnkube-trace注意如果您使用 Red Hat Enterprise Linux (RHEL) 8 运行
ovnkube-trace工具,您必须将文件/usr/lib/rhel8/ovnkube-trace复制到本地主机。运行以下命令,使
ovnkube-trace可执行:$ chmod +x ovnkube-trace运行以下命令,显示
ovnkube-trace可用的选项:$ ./ovnkube-trace -help预期输出
Usage of ./ovnkube-trace: -addr-family string Address family (ip4 or ip6) to be used for tracing (default "ip4") -dst string dest: destination pod name -dst-ip string destination IP address (meant for tests to external targets) -dst-namespace string k8s namespace of dest pod (default "default") -dst-port string dst-port: destination port (default "80") -kubeconfig string absolute path to the kubeconfig file -loglevel string loglevel: klog level (default "0") -ovn-config-namespace string namespace used by ovn-config itself -service string service: destination service name -skip-detrace skip ovn-detrace command -src string src: source pod name -src-namespace string k8s namespace of source pod (default "default") -tcp use tcp transport protocol -udp use udp transport protocol支持的命令行参数是熟悉的 Kubernetes 构造,如命名空间、Pod、服务,因此您不需要查找 MAC 地址、目标节点的 IP 地址或 ICMP 类型。
日志级别为:
- 0 (最小输出)
- 2 (显示 trace 命令结果的详细输出)
- 5 (调试输出)