下图显示了 OVN-Kubernetes 架构。
关键组件包括:
**云管理系统 (CMS)** - OVN 的特定于平台的客户端,提供用于 OVN 集成的特定于 CMS 的插件。该插件将存储在 CMS 配置数据库中(以 CMS 特定格式)的云管理系统的逻辑网络配置概念转换为 OVN 可理解的中间表示形式。
**OVN 北向数据库 (nbdb
) 容器** - 存储由 CMS 插件传递的逻辑网络配置。
**OVN 南向数据库 (sbdb
) 容器** - 存储每个节点上 Open vSwitch (OVS) 系统的物理和逻辑网络配置状态,包括绑定它们的表。
**OVN 北向守护进程 (ovn-northd
)** - 这是 nbdb
容器和 sbdb
容器之间的中间客户端。它将从 nbdb
容器获取的基于传统网络概念的逻辑网络配置转换为 sbdb
容器中的逻辑数据路径流。ovn-northd
守护进程的容器名为 northd
,它在 ovnkube-node
Pod 中运行。
**ovn-controller** - 这是与 OVS 和虚拟机管理程序交互的 OVN 代理,用于 sbdb
容器所需的任何信息或更新。ovn-controller
从 sbdb
容器读取逻辑流,将其转换为 OpenFlow
流,并将其发送到节点的 OVS 守护进程。容器名为 ovn-controller
,它在 ovnkube-node
Pod 中运行。
OVN northd、北向数据库和南向数据库在集群中的每个节点上运行,主要包含和处理特定于该节点的信息。
OVN 北向数据库包含云管理系统 (CMS) 传递的逻辑网络配置。OVN 北向数据库包含网络的当前期望状态,呈现为逻辑端口、逻辑交换机、逻辑路由器等的集合。ovn-northd
(northd
容器) 连接到 OVN 北向数据库和 OVN 南向数据库。它将基于传统网络概念的逻辑网络配置(来自 OVN 北向数据库)转换为 OVN 南向数据库中的逻辑数据路径流。
OVN 南向数据库包含网络的物理和逻辑表示以及将它们链接在一起的绑定表。它包含节点的底盘信息以及连接集群中其他节点所需的远程中转交换机端口等结构。OVN 南向数据库还包含所有逻辑流。逻辑流与在每个节点上运行的 ovn-controller
进程共享,ovn-controller
将其转换为 OpenFlow
规则以编程 Open vSwitch
(OVS)。
Kubernetes 控制平面节点在不同的节点上包含两个 ovnkube-control-plane
Pod,它们为集群中的每个节点执行中央 IP 地址管理 (IPAM) 分配。在任何给定时间,只有一个 ovnkube-control-plane
Pod 是领导者。
查找在 OVN-Kubernetes 项目中运行的资源和容器对于帮助您理解 OVN-Kubernetes 网络实现非常重要。
以具有 cluster-admin
角色的用户身份访问集群。
已安装 OpenShift CLI (oc
)。
运行以下命令以获取 OVN-Kubernetes 项目中的所有资源、端点和 ConfigMap
$ oc get all,ep,cm -n openshift-ovn-kubernetes
Warning: apps.openshift.io/v1 DeploymentConfig is deprecated in v4.14+, unavailable in v4.10000+
NAME READY STATUS RESTARTS AGE
pod/ovnkube-control-plane-65c6f55656-6d55h 2/2 Running 0 114m
pod/ovnkube-control-plane-65c6f55656-fd7vw 2/2 Running 2 (104m ago) 114m
pod/ovnkube-node-bcvts 8/8 Running 0 113m
pod/ovnkube-node-drgvv 8/8 Running 0 113m
pod/ovnkube-node-f2pxt 8/8 Running 0 113m
pod/ovnkube-node-frqsb 8/8 Running 0 105m
pod/ovnkube-node-lbxkk 8/8 Running 0 105m
pod/ovnkube-node-tt7bx 8/8 Running 1 (102m ago) 105m
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/ovn-kubernetes-control-plane ClusterIP None <none> 9108/TCP 114m
service/ovn-kubernetes-node ClusterIP None <none> 9103/TCP,9105/TCP 114m
NAME DESIRED CURRENT READY UP-TO-DATE AVAILABLE NODE SELECTOR AGE
daemonset.apps/ovnkube-node 6 6 6 6 6 beta.kubernetes.io/os=linux 114m
NAME READY UP-TO-DATE AVAILABLE AGE
deployment.apps/ovnkube-control-plane 3/3 3 3 114m
NAME DESIRED CURRENT READY AGE
replicaset.apps/ovnkube-control-plane-65c6f55656 3 3 3 114m
NAME ENDPOINTS AGE
endpoints/ovn-kubernetes-control-plane 10.0.0.3:9108,10.0.0.4:9108,10.0.0.5:9108 114m
endpoints/ovn-kubernetes-node 10.0.0.3:9105,10.0.0.4:9105,10.0.0.5:9105 + 9 more... 114m
NAME DATA AGE
configmap/control-plane-status 1 113m
configmap/kube-root-ca.crt 1 114m
configmap/openshift-service-ca.crt 1 114m
configmap/ovn-ca 1 114m
configmap/ovnkube-config 1 114m
configmap/signer-ca 1 114m
集群中的每个节点都有一个 ovnkube-node
Pod。ovnkube-config
配置映射包含 OpenShift Container Platform OVN-Kubernetes 配置。
通过运行以下命令列出 ovnkube-node
Pod 中的所有容器
$ oc get pods ovnkube-node-bcvts -o jsonpath='{.spec.containers[*].name}' -n openshift-ovn-kubernetes
ovn-controller ovn-acl-logging kube-rbac-proxy-node kube-rbac-proxy-ovn-metrics northd nbdb sbdb ovnkube-controller
ovnkube-node
Pod 由多个容器组成。它负责托管北向数据库 (nbdb
容器)、南向数据库 (sbdb
容器)、北向守护进程 (northd
容器)、ovn-controller
和 ovnkube-controller
容器。ovnkube-controller
容器监视 Pod、出站 IP、命名空间、服务、端点、出站防火墙和网络策略等 API 对象。它还负责为该节点的可用子网池分配 Pod IP。
通过运行以下命令列出 ovnkube-control-plane
Pod 中的所有容器
$ oc get pods ovnkube-control-plane-65c6f55656-6d55h -o jsonpath='{.spec.containers[*].name}' -n openshift-ovn-kubernetes
kube-rbac-proxy ovnkube-cluster-manager
ovnkube-control-plane
Pod 具有一个容器 (ovnkube-cluster-manager
),该容器驻留在每个 OpenShift Container Platform 节点上。ovnkube-cluster-manager
容器为集群中的每个节点分配 Pod 子网、中转交换机子网 IP 和连接交换机子网 IP。kube-rbac-proxy
容器监视 ovnkube-cluster-manager
容器的指标。
每个节点都由在该节点上的 ovnkube-node
Pod 中运行的 ovnkube-controller
容器控制。要理解 OVN 逻辑网络实体,您需要检查在该节点上的 ovnkube-node
Pod 内作为容器运行的北向数据库,以查看您要查看的节点中有哪些对象。
以具有 cluster-admin
角色的用户身份访问集群。
已安装 OpenShift CLI (oc
)。
步骤
要在集群中运行 ovn |
运行以下命令列出 Pod:
$ oc get po -n openshift-ovn-kubernetes
NAME READY STATUS RESTARTS AGE
ovnkube-control-plane-8444dff7f9-4lh9k 2/2 Running 0 27m
ovnkube-control-plane-8444dff7f9-5rjh9 2/2 Running 0 27m
ovnkube-node-55xs2 8/8 Running 0 26m
ovnkube-node-7r84r 8/8 Running 0 16m
ovnkube-node-bqq8p 8/8 Running 0 17m
ovnkube-node-mkj4f 8/8 Running 0 26m
ovnkube-node-mlr8k 8/8 Running 0 26m
ovnkube-node-wqn2m 8/8 Running 0 16m
可选:要列出包含节点信息的 Pod,请运行以下命令:
$ oc get pods -n openshift-ovn-kubernetes -owide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
ovnkube-control-plane-8444dff7f9-4lh9k 2/2 Running 0 27m 10.0.0.3 ci-ln-t487nnb-72292-mdcnq-master-1 <none> <none>
ovnkube-control-plane-8444dff7f9-5rjh9 2/2 Running 0 27m 10.0.0.4 ci-ln-t487nnb-72292-mdcnq-master-2 <none> <none>
ovnkube-node-55xs2 8/8 Running 0 26m 10.0.0.4 ci-ln-t487nnb-72292-mdcnq-master-2 <none> <none>
ovnkube-node-7r84r 8/8 Running 0 17m 10.0.128.3 ci-ln-t487nnb-72292-mdcnq-worker-b-wbz7z <none> <none>
ovnkube-node-bqq8p 8/8 Running 0 17m 10.0.128.2 ci-ln-t487nnb-72292-mdcnq-worker-a-lh7ms <none> <none>
ovnkube-node-mkj4f 8/8 Running 0 27m 10.0.0.5 ci-ln-t487nnb-72292-mdcnq-master-0 <none> <none>
ovnkube-node-mlr8k 8/8 Running 0 27m 10.0.0.3 ci-ln-t487nnb-72292-mdcnq-master-1 <none> <none>
ovnkube-node-wqn2m 8/8 Running 0 17m 10.0.128.4 ci-ln-t487nnb-72292-mdcnq-worker-c-przlm <none> <none>
导航到 Pod 中以查看北向数据库,请运行以下命令:
$ oc rsh -c nbdb -n openshift-ovn-kubernetes ovnkube-node-55xs2
运行以下命令以显示北向数据库中的所有对象:
$ ovn-nbctl show
输出太长,无法在此处列出。列表包括 NAT 规则、逻辑交换机、负载均衡器等。
您可以使用以下一些可选命令缩小范围并关注特定组件:
运行以下命令以显示逻辑路由器的列表:
$ oc exec -n openshift-ovn-kubernetes -it ovnkube-node-55xs2 \
-c northd -- ovn-nbctl lr-list
45339f4f-7d0b-41d0-b5f9-9fca9ce40ce6 (GR_ci-ln-t487nnb-72292-mdcnq-master-2)
96a0a0f0-e7ed-4fec-8393-3195563de1b8 (ovn_cluster_router)
从输出中可以看到,每个节点上都有一个路由器,还有一个 |
运行以下命令以显示逻辑交换机的列表
$ oc exec -n openshift-ovn-kubernetes -it ovnkube-node-55xs2 \
-c nbdb -- ovn-nbctl ls-list
bdd7dc3d-d848-4a74-b293-cc15128ea614 (ci-ln-t487nnb-72292-mdcnq-master-2)
b349292d-ee03-4914-935f-1940b6cb91e5 (ext_ci-ln-t487nnb-72292-mdcnq-master-2)
0aac0754-ea32-4e33-b086-35eeabf0a140 (join)
992509d7-2c3f-4432-88db-c179e43592e5 (transit_switch)
从输出中可以看到,每个节点都有一个 ext 交换机,以及带有节点名称本身的交换机和一个连接交换机。 |
运行以下命令以显示负载均衡器的列表
$ oc exec -n openshift-ovn-kubernetes -it ovnkube-node-55xs2 \
-c nbdb -- ovn-nbctl lb-list
UUID LB PROTO VIP IPs
7c84c673-ed2a-4436-9a1f-9bc5dd181eea Service_default/ tcp 172.30.0.1:443 10.0.0.3:6443,169.254.169.2:6443,10.0.0.5:6443
4d663fd9-ddc8-4271-b333-4c0e279e20bb Service_default/ tcp 172.30.0.1:443 10.0.0.3:6443,10.0.0.4:6443,10.0.0.5:6443
292eb07f-b82f-4962-868a-4f541d250bca Service_openshif tcp 172.30.105.247:443 10.129.0.12:8443
034b5a7f-bb6a-45e9-8e6d-573a82dc5ee3 Service_openshif tcp 172.30.192.38:443 10.0.0.3:10259,10.0.0.4:10259,10.0.0.5:10259
a68bb53e-be84-48df-bd38-bdd82fcd4026 Service_openshif tcp 172.30.161.125:8443 10.129.0.32:8443
6cc21b3d-2c54-4c94-8ff5-d8e017269c2e Service_openshif tcp 172.30.3.144:443 10.129.0.22:8443
37996ffd-7268-4862-a27f-61cd62e09c32 Service_openshif tcp 172.30.181.107:443 10.129.0.18:8443
81d4da3c-f811-411f-ae0c-bc6713d0861d Service_openshif tcp 172.30.228.23:443 10.129.0.29:8443
ac5a4f3b-b6ba-4ceb-82d0-d84f2c41306e Service_openshif tcp 172.30.14.240:9443 10.129.0.36:9443
c88979fb-1ef5-414b-90ac-43b579351ac9 Service_openshif tcp 172.30.231.192:9001 10.128.0.5:9001,10.128.2.5:9001,10.129.0.5:9001,10.129.2.4:9001,10.130.0.3:9001,10.131.0.3:9001
fcb0a3fb-4a77-4230-a84a-be45dce757e8 Service_openshif tcp 172.30.189.92:443 10.130.0.17:8440
67ef3e7b-ceb9-4bf0-8d96-b43bde4c9151 Service_openshif tcp 172.30.67.218:443 10.129.0.9:8443
d0032fba-7d5e-424a-af25-4ab9b5d46e81 Service_openshif tcp 172.30.102.137:2379 10.0.0.3:2379,10.0.0.4:2379,10.0.0.5:2379
tcp 172.30.102.137:9979 10.0.0.3:9979,10.0.0.4:9979,10.0.0.5:9979
7361c537-3eec-4e6c-bc0c-0522d182abd4 Service_openshif tcp 172.30.198.215:9001 10.0.0.3:9001,10.0.0.4:9001,10.0.0.5:9001,10.0.128.2:9001,10.0.128.3:9001,10.0.128.4:9001
0296c437-1259-410b-a6fd-81c310ad0af5 Service_openshif tcp 172.30.198.215:9001 10.0.0.3:9001,169.254.169.2:9001,10.0.0.5:9001,10.0.128.2:9001,10.0.128.3:9001,10.0.128.4:9001
5d5679f5-45b8-479d-9f7c-08b123c688b8 Service_openshif tcp 172.30.38.253:17698 10.128.0.52:17698,10.129.0.84:17698,10.130.0.60:17698
2adcbab4-d1c9-447d-9573-b5dc9f2efbfa Service_openshif tcp 172.30.148.52:443 10.0.0.4:9202,10.0.0.5:9202
tcp 172.30.148.52:444 10.0.0.4:9203,10.0.0.5:9203
tcp 172.30.148.52:445 10.0.0.4:9204,10.0.0.5:9204
tcp 172.30.148.52:446 10.0.0.4:9205,10.0.0.5:9205
2a33a6d7-af1b-4892-87cc-326a380b809b Service_openshif tcp 172.30.67.219:9091 10.129.2.16:9091,10.131.0.16:9091
tcp 172.30.67.219:9092 10.129.2.16:9092,10.131.0.16:9092
tcp 172.30.67.219:9093 10.129.2.16:9093,10.131.0.16:9093
tcp 172.30.67.219:9094 10.129.2.16:9094,10.131.0.16:9094
f56f59d7-231a-4974-99b3-792e2741ec8d Service_openshif tcp 172.30.89.212:443 10.128.0.41:8443,10.129.0.68:8443,10.130.0.44:8443
08c2c6d7-d217-4b96-b5d8-c80c4e258116 Service_openshif tcp 172.30.102.137:2379 10.0.0.3:2379,169.254.169.2:2379,10.0.0.5:2379
tcp 172.30.102.137:9979 10.0.0.3:9979,169.254.169.2:9979,10.0.0.5:9979
60a69c56-fc6a-4de6-bd88-3f2af5ba5665 Service_openshif tcp 172.30.10.193:443 10.129.0.25:8443
ab1ef694-0826-4671-a22c-565fc2d282ec Service_openshif tcp 172.30.196.123:443 10.128.0.33:8443,10.129.0.64:8443,10.130.0.37:8443
b1fb34d3-0944-4770-9ee3-2683e7a630e2 Service_openshif tcp 172.30.158.93:8443 10.129.0.13:8443
95811c11-56e2-4877-be1e-c78ccb3a82a9 Service_openshif tcp 172.30.46.85:9001 10.130.0.16:9001
4baba1d1-b873-4535-884c-3f6fc07a50fd Service_openshif tcp 172.30.28.87:443 10.129.0.26:8443
6c2e1c90-f0ca-484e-8a8e-40e71442110a Service_openshif udp 172.30.0.10:53 10.128.0.13:5353,10.128.2.6:5353,10.129.0.39:5353,10.129.2.6:5353,10.130.0.11:5353,10.131.0.9:5353
从这个截断的输出中可以看到,有很多OVN-Kubernetes负载均衡器。OVN-Kubernetes中的负载均衡器是服务的表示。 |
运行以下命令以显示命令ovn-nbctl
可用的选项
$ oc exec -n openshift-ovn-kubernetes -it ovnkube-node-55xs2 \
-c nbdb ovn-nbctl --help
下表描述了可与ovn-nbctl
一起使用的命令行参数,用于检查北向数据库的内容。
在您想要查看其内容的Pod中打开远程shell,然后运行 |
参数 | 描述 |
---|---|
|
从特定节点看到的北向数据库内容概述。 |
|
显示与指定的交换机或路由器相关的详细信息。 |
|
显示逻辑路由器。 |
|
使用 |
|
显示指定路由器的网络地址转换详细信息。 |
|
显示逻辑交换机 |
|
使用 |
|
获取逻辑端口的类型。 |
|
显示负载均衡器。 |
每个节点都由在该节点上的 ovnkube-node
Pod 中运行的 ovnkube-controller
容器控制。要理解 OVN 逻辑网络实体,您需要检查在该节点上的 ovnkube-node
Pod 内作为容器运行的北向数据库,以查看您要查看的节点中有哪些对象。
以具有 cluster-admin
角色的用户身份访问集群。
已安装 OpenShift CLI (oc
)。
步骤
要在集群中运行 ovn |
运行以下命令列出Pod
$ oc get po -n openshift-ovn-kubernetes
NAME READY STATUS RESTARTS AGE
ovnkube-control-plane-8444dff7f9-4lh9k 2/2 Running 0 27m
ovnkube-control-plane-8444dff7f9-5rjh9 2/2 Running 0 27m
ovnkube-node-55xs2 8/8 Running 0 26m
ovnkube-node-7r84r 8/8 Running 0 16m
ovnkube-node-bqq8p 8/8 Running 0 17m
ovnkube-node-mkj4f 8/8 Running 0 26m
ovnkube-node-mlr8k 8/8 Running 0 26m
ovnkube-node-wqn2m 8/8 Running 0 16m
可选:要列出包含节点信息的 Pod,请运行以下命令:
$ oc get pods -n openshift-ovn-kubernetes -owide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
ovnkube-control-plane-8444dff7f9-4lh9k 2/2 Running 0 27m 10.0.0.3 ci-ln-t487nnb-72292-mdcnq-master-1 <none> <none>
ovnkube-control-plane-8444dff7f9-5rjh9 2/2 Running 0 27m 10.0.0.4 ci-ln-t487nnb-72292-mdcnq-master-2 <none> <none>
ovnkube-node-55xs2 8/8 Running 0 26m 10.0.0.4 ci-ln-t487nnb-72292-mdcnq-master-2 <none> <none>
ovnkube-node-7r84r 8/8 Running 0 17m 10.0.128.3 ci-ln-t487nnb-72292-mdcnq-worker-b-wbz7z <none> <none>
ovnkube-node-bqq8p 8/8 Running 0 17m 10.0.128.2 ci-ln-t487nnb-72292-mdcnq-worker-a-lh7ms <none> <none>
ovnkube-node-mkj4f 8/8 Running 0 27m 10.0.0.5 ci-ln-t487nnb-72292-mdcnq-master-0 <none> <none>
ovnkube-node-mlr8k 8/8 Running 0 27m 10.0.0.3 ci-ln-t487nnb-72292-mdcnq-master-1 <none> <none>
ovnkube-node-wqn2m 8/8 Running 0 17m 10.0.128.4 ci-ln-t487nnb-72292-mdcnq-worker-c-przlm <none> <none>
进入Pod查看南向数据库
$ oc rsh -c sbdb -n openshift-ovn-kubernetes ovnkube-node-55xs2
运行以下命令以显示南向数据库中的所有对象
$ ovn-sbctl show
Chassis "5db31703-35e9-413b-8cdf-69e7eecb41f7"
hostname: ci-ln-9gp362t-72292-v2p94-worker-a-8bmwz
Encap geneve
ip: "10.0.128.4"
options: {csum="true"}
Port_Binding tstor-ci-ln-9gp362t-72292-v2p94-worker-a-8bmwz
Chassis "070debed-99b7-4bce-b17d-17e720b7f8bc"
hostname: ci-ln-9gp362t-72292-v2p94-worker-b-svmp6
Encap geneve
ip: "10.0.128.2"
options: {csum="true"}
Port_Binding k8s-ci-ln-9gp362t-72292-v2p94-worker-b-svmp6
Port_Binding rtoe-GR_ci-ln-9gp362t-72292-v2p94-worker-b-svmp6
Port_Binding openshift-monitoring_alertmanager-main-1
Port_Binding rtoj-GR_ci-ln-9gp362t-72292-v2p94-worker-b-svmp6
Port_Binding etor-GR_ci-ln-9gp362t-72292-v2p94-worker-b-svmp6
Port_Binding cr-rtos-ci-ln-9gp362t-72292-v2p94-worker-b-svmp6
Port_Binding openshift-e2e-loki_loki-promtail-qcrcz
Port_Binding jtor-GR_ci-ln-9gp362t-72292-v2p94-worker-b-svmp6
Port_Binding openshift-multus_network-metrics-daemon-mkd4t
Port_Binding openshift-ingress-canary_ingress-canary-xtvj4
Port_Binding openshift-ingress_router-default-6c76cbc498-pvlqk
Port_Binding openshift-dns_dns-default-zz582
Port_Binding openshift-monitoring_thanos-querier-57585899f5-lbf4f
Port_Binding openshift-network-diagnostics_network-check-target-tn228
Port_Binding openshift-monitoring_prometheus-k8s-0
Port_Binding openshift-image-registry_image-registry-68899bd877-xqxjj
Chassis "179ba069-0af1-401c-b044-e5ba90f60fea"
hostname: ci-ln-9gp362t-72292-v2p94-master-0
Encap geneve
ip: "10.0.0.5"
options: {csum="true"}
Port_Binding tstor-ci-ln-9gp362t-72292-v2p94-master-0
Chassis "68c954f2-5a76-47be-9e84-1cb13bd9dab9"
hostname: ci-ln-9gp362t-72292-v2p94-worker-c-mjf9w
Encap geneve
ip: "10.0.128.3"
options: {csum="true"}
Port_Binding tstor-ci-ln-9gp362t-72292-v2p94-worker-c-mjf9w
Chassis "2de65d9e-9abf-4b6e-a51d-a1e038b4d8af"
hostname: ci-ln-9gp362t-72292-v2p94-master-2
Encap geneve
ip: "10.0.0.4"
options: {csum="true"}
Port_Binding tstor-ci-ln-9gp362t-72292-v2p94-master-2
Chassis "1d371cb8-5e21-44fd-9025-c4b162cc4247"
hostname: ci-ln-9gp362t-72292-v2p94-master-1
Encap geneve
ip: "10.0.0.3"
options: {csum="true"}
Port_Binding tstor-ci-ln-9gp362t-72292-v2p94-master-1
此详细输出显示了底盘以及连接到底盘的端口,在本例中是所有路由器端口以及任何运行类似主机网络的端口。任何Pod都使用源网络地址转换 (SNAT) 与更广泛的网络进行通信。它们的IP地址被转换为Pod运行所在的节点的IP地址,然后发送到网络。
除了底盘信息外,南向数据库还包含所有逻辑流,这些逻辑流随后被发送到每个节点上运行的ovn-controller
。ovn-controller
将逻辑流转换为OpenFlow规则,最终编程OpenvSwitch
,以便您的Pod可以遵循OpenFlow规则并离开网络。
运行以下命令以显示命令ovn-sbctl
可用的选项
$ oc exec -n openshift-ovn-kubernetes -it ovnkube-node-55xs2 \
-c sbdb ovn-sbctl --help
下表描述了可与ovn-sbctl
一起使用的命令行参数,用于检查南向数据库的内容。
在您想要查看其内容的Pod中打开远程shell,然后运行 |
参数 | 描述 |
---|---|
|
从特定节点看到的南向数据库内容概述。 |
|
列出指定端口的南向数据库内容。 |
|
列出逻辑流。 |
OVN是一个网络虚拟化解决方案。它创建逻辑交换机和路由器。这些交换机和路由器互连以创建任何网络拓扑。当您运行ovnkube-trace
并将日志级别设置为2或5时,OVN-Kubernetes逻辑组件将被公开。下图显示了OpenShift Container Platform中路由器和交换机的连接方式。
参与数据包处理的关键组件包括:
网关路由器(有时称为L3网关路由器)通常用于分布式路由器和物理网络之间。网关路由器及其逻辑补丁端口绑定到物理位置(非分布式)或底盘。此路由器上的补丁端口在ovn-南向数据库 (ovn-sbdb
) 中被称为l3gateway端口。
分布式逻辑路由器和其背后的逻辑交换机(虚拟机和容器连接到这些交换机)实际上驻留在每个虚拟机管理程序上。
连接本地交换机用于连接分布式路由器和网关路由器。它减少了分布式路由器上所需的IP地址数量。
带有补丁端口的逻辑交换机用于虚拟化网络堆栈。它们通过隧道连接远程逻辑端口。
带有localnet端口的逻辑交换机用于将OVN连接到物理网络。它们通过使用localnet端口将数据包桥接到直接连接的物理L2段来连接远程逻辑端口。
补丁端口表示逻辑交换机和逻辑路由器之间以及对等逻辑路由器之间的连接。单个连接在每个这样的连接点都有一个补丁端口对,每个连接点一个。
l3gateway端口是ovn-sbdb
中用于网关路由器的逻辑补丁端口的端口绑定条目。它们被称为l3gateway端口而不是补丁端口,只是为了说明这些端口像网关路由器本身一样绑定到底盘。
localnet端口存在于桥接的逻辑交换机上,允许从每个ovn-controller
实例连接到本地可访问的网络。这有助于模拟从逻辑交换机到物理网络的直接连接。逻辑交换机只能连接一个localnet端口。
在本地主机上安装network-tools
,以提供可用于调试OpenShift Container Platform集群网络问题的工具集合。
使用以下命令将network-tools
存储库克隆到您的工作站
$ git clone [email protected]:openshift/network-tools.git
更改到您刚刚克隆的存储库的目录
$ cd network-tools
可选:列出所有可用命令
$ ./debug-scripts/network-tools -h
通过运行network-tools
获取有关逻辑交换机和路由器的信息。
您已安装OpenShift CLI (oc
)。
您已以具有cluster-admin
权限的用户身份登录到集群。
您已在本地主机上安装network-tools
。
运行以下命令列出路由器
$ ./debug-scripts/network-tools ovn-db-run-command ovn-nbctl lr-list
944a7b53-7948-4ad2-a494-82b55eeccf87 (GR_ci-ln-54932yb-72292-kd676-worker-c-rzj99)
84bd4a4c-4b0b-4a47-b0cf-a2c32709fc53 (ovn_cluster_router)
运行以下命令列出localnet端口
$ ./debug-scripts/network-tools ovn-db-run-command \
ovn-sbctl find Port_Binding type=localnet
_uuid : d05298f5-805b-4838-9224-1211afc2f199
additional_chassis : []
additional_encap : []
chassis : []
datapath : f3c2c959-743b-4037-854d-26627902597c
encap : []
external_ids : {}
gateway_chassis : []
ha_chassis_group : []
logical_port : br-ex_ci-ln-54932yb-72292-kd676-worker-c-rzj99
mac : [unknown]
mirror_rules : []
nat_addresses : []
options : {network_name=physnet}
parent_port : []
port_security : []
requested_additional_chassis: []
requested_chassis : []
tag : []
tunnel_key : 2
type : localnet
up : false
virtual_parent : []
[...]
运行以下命令列出l3gateway
端口
$ ./debug-scripts/network-tools ovn-db-run-command \
ovn-sbctl find Port_Binding type=l3gateway
_uuid : 5207a1f3-1cf3-42f1-83e9-387bbb06b03c
additional_chassis : []
additional_encap : []
chassis : ca6eb600-3a10-4372-a83e-e0d957c4cd92
datapath : f3c2c959-743b-4037-854d-26627902597c
encap : []
external_ids : {}
gateway_chassis : []
ha_chassis_group : []
logical_port : etor-GR_ci-ln-54932yb-72292-kd676-worker-c-rzj99
mac : ["42:01:0a:00:80:04"]
mirror_rules : []
nat_addresses : ["42:01:0a:00:80:04 10.0.128.4"]
options : {l3gateway-chassis="84737c36-b383-4c83-92c5-2bd5b3c7e772", peer=rtoe-GR_ci-ln-54932yb-72292-kd676-worker-c-rzj99}
parent_port : []
port_security : []
requested_additional_chassis: []
requested_chassis : []
tag : []
tunnel_key : 1
type : l3gateway
up : true
virtual_parent : []
_uuid : 6088d647-84f2-43f2-b53f-c9d379042679
additional_chassis : []
additional_encap : []
chassis : ca6eb600-3a10-4372-a83e-e0d957c4cd92
datapath : dc9cea00-d94a-41b8-bdb0-89d42d13aa2e
encap : []
external_ids : {}
gateway_chassis : []
ha_chassis_group : []
logical_port : jtor-GR_ci-ln-54932yb-72292-kd676-worker-c-rzj99
mac : [router]
mirror_rules : []
nat_addresses : []
options : {l3gateway-chassis="84737c36-b383-4c83-92c5-2bd5b3c7e772", peer=rtoj-GR_ci-ln-54932yb-72292-kd676-worker-c-rzj99}
parent_port : []
port_security : []
requested_additional_chassis: []
requested_chassis : []
tag : []
tunnel_key : 2
type : l3gateway
up : true
virtual_parent : []
[...]
运行以下命令列出补丁端口
$ ./debug-scripts/network-tools ovn-db-run-command \
ovn-sbctl find Port_Binding type=patch
_uuid : 785fb8b6-ee5a-4792-a415-5b1cb855dac2
additional_chassis : []
additional_encap : []
chassis : []
datapath : f1ddd1cc-dc0d-43b4-90ca-12651305acec
encap : []
external_ids : {}
gateway_chassis : []
ha_chassis_group : []
logical_port : stor-ci-ln-54932yb-72292-kd676-worker-c-rzj99
mac : [router]
mirror_rules : []
nat_addresses : ["0a:58:0a:80:02:01 10.128.2.1 is_chassis_resident(\"cr-rtos-ci-ln-54932yb-72292-kd676-worker-c-rzj99\")"]
options : {peer=rtos-ci-ln-54932yb-72292-kd676-worker-c-rzj99}
parent_port : []
port_security : []
requested_additional_chassis: []
requested_chassis : []
tag : []
tunnel_key : 1
type : patch
up : false
virtual_parent : []
_uuid : c01ff587-21a5-40b4-8244-4cd0425e5d9a
additional_chassis : []
additional_encap : []
chassis : []
datapath : f6795586-bf92-4f84-9222-efe4ac6a7734
encap : []
external_ids : {}
gateway_chassis : []
ha_chassis_group : []
logical_port : rtoj-ovn_cluster_router
mac : ["0a:58:64:40:00:01 100.64.0.1/16"]
mirror_rules : []
nat_addresses : []
options : {peer=jtor-ovn_cluster_router}
parent_port : []
port_security : []
requested_additional_chassis: []
requested_chassis : []
tag : []
tunnel_key : 1
type : patch
up : false
virtual_parent : []
[...]