【kubernetes/k8s概念】OVN SouthBound DB 及 ovn-sbctl 命令

2023-05-16

    OVN 南向数据库(OVN Southbound DB),南向数据库是系统的中心,客户端是上层的 ovn-northd 和下层运行在每一个传输节点的 ovn-controller。南向数据库包括三类数据,物理网络表 PN 指定了怎么到达 hepervisor 和其他节点, 逻辑网络表 LN,表述了涉及逻辑数据流的逻辑网络,Binding 表连接逻辑网络组件到物理网络,hypervisor 填充 PN 和 Port_Binding 表,而 ovn-northd 填充 LN 表。
 

1. OVN Southbound DB table

    OVN Southbound DB 包括如下表:

Table Purpose
SB_GLOBALSouthbound configuration
ChassisPhysical Network Hypervisor and Gateway Information
Chassis_PrivateChassis Private
EncapEncapsulation Types
Address_SetAddress Sets
Port_Group        Port Groups
Logical_FlowLogical Network Flows
Logical_DP_GroupLogical Datapath Groups
Multicast_GroupLogical Port Multicast Groups
Datapath_BindingPhysical-Logical Datapath Bindings
Port_BindingPhysical-Logical Port Bindings
MAC_BindingIP to MAC bindings
Gateway_ChassisGateway_Chassis configuration.
Load_BalancerLoad_Balancer configuration

   1.1 Csassis

    在物理网络中每一行表示一个 hypervisor 或者网关,每一个 chassis 通过 ovn-controller/ovn-controller-vtep 添加和更新自己的行,并保留剩余行的拷贝来确定如何访问其他的 hppervisor。

# ovn-sbctl list Chassis  
_uuid               : 1acbcc6e-f903-428f-85f9-7a8805da8722
encaps              : [f6cf28fe-296a-4bb9-b6a3-f175bc6a3c22]
external_ids        : {datapath-type="", iface-types="bareudp,erspan,geneve,gre,gtpu,internal,ip6erspan,ip6gre,lisp,patch,stt,system,tap,vxlan", is-interconn="false", ovn-bridge-mappings="", ovn-chassis-mac-mappings="", ovn-cms-options="", ovn-enable-lflow-cache="true", ovn-monitor-all="false"}
hostname            : master1
name                : "e072d92a-7026-4a3b-9734-a0a8f9a0a9c8"
nb_cfg              : 0
other_config        : {datapath-type="", iface-types="bareudp,erspan,geneve,gre,gtpu,internal,ip6erspan,ip6gre,lisp,patch,stt,system,tap,vxlan", is-interconn="false", ovn-bridge-mappings="", ovn-chassis-mac-mappings="", ovn-cms-options="", ovn-enable-lflow-cache="true", ovn-monitor-all="false"}

   1.2 Encap

   保存着 tunnel 的类型和 tunnel endpoint IP 地址    

# ovn-sbctl list Encap   
_uuid               : f6cf28fe-296a-4bb9-b6a3-f175bc6a3c22
chassis_name        : "e072d92a-7026-4a3b-9734-a0a8f9a0a9c8"
ip                  : "192.168.122.66"
options             : {csum="false"}
type                : geneve

   1.3 Logical_Flow

    每一行代表一个逻辑流,ovn-northd 根据 OVN Northbound DB 中的 L2 和 L3 拓扑填充的翻译逻辑流,每一个 hypervisor 通过 ovn-controller 将逻辑流转换为特定于其 hypervisor 的 OpenFlow 流,并将它们应用到 Open vSwitch 中。

_uuid               : 5abfd6b3-4d6f-49a0-a416-11e3d71045a5
actions             : "eth.dst = eth.src; eth.src = xreg0[0..47]; arp.op = 2; /* ARP reply */ arp.tha = arp.sha; arp.sha = xreg0[0..47]; arp.tpa <-> arp.spa; outport = inport; flags.loopback = 1; output;"
external_ids        : {source="ovn-northd.c:8580", stage-hint="39d6ff86", stage-name=lr_in_ip_input}
logical_datapath    : 1922ff07-efaa-4519-9449-a694d5965a16
logical_dp_group    : []
match               : "inport == \"test-vpc-1-net1\" && arp.op == 1 && arp.tpa == 30.0.1.1 && arp.spa == 30.0.1.0/24"
pipeline            : ingress
priority            : 90
table_id            : 3
hash                : 0

   1.4 Datapath_Binding

_uuid               : 66685c84-f73a-493a-8027-75213ad45635
external_ids        : {logical-switch="658a1f12-e95b-4503-87e8-df263c212c9e", name=ovn-default}
load_balancers      : [2b56dfde-6859-45ee-b11a-d992726bdea9, 81f2f8ad-62b3-4461-b838-7afa763cfe16, 837a19e1-480d-412e-b1e0-df36eae7b221, a2836e36-9e26-42a3-998d-38fd31a54007]
tunnel_key          : 3

_uuid               : c527f390-4329-4197-9e36-c1abc65179dc
external_ids        : {logical-switch="3e3d9065-34af-4996-af01-8b76a6c7385b", name=join}
load_balancers      : []
tunnel_key          : 2

2. ovn-sbctl 命令

ovn-sbctl [options] -- [options] command [args] [--  [options]  command
       [args]]...

   2.1 OVN_Southbound 命令

    ovn-sbctl init

    ovn-sbctl show

   2.2 Chassis 命令

    ovn-sbctl [--may-exist] chassis-add chassis encap-type encap-ip

    ovn-sbctl [--if-exists] chassis-del chassis

   2.3 Port binding 命令

    ovn-sbctl [--may-exist] lsp-bind logical-port chassis

    ovn-sbctl [--if-exists] lsp-unbind logical-port

   2.4 Logical Flow 命令

    ovn-sbctl [--uuid] [--ovs[=remote]] [--stats] [--vflows] lflow-list [logical- datapath] [lflow...]

    ovn-sbctl [--uuid] dump-flows [logical-datapath]

    ovn-sbctl lflow-list 命令来查看完整的 logical flow

    

    ovn-trace需要两个参数: ovn-trace DATAPATH MICROFLOW 

     DATAPATH 标识了sample packet 开始进入的 logical datapath(logical switch 或者 logical router)。MICROFLOW 描述了模拟的 sample packet。具体详见 ovn-trace(8) man page。

参考:

  https://www.ovn.org/support/dist-docs/ovn-sb.5.txt

  https://www.ovn.org/support/dist-docs/ovn-sbctl.8.txt

  

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【kubernetes/k8s概念】OVN SouthBound DB 及 ovn-sbctl 命令 的相关文章

  • Prometheus - 监控容器中的命令输出

    我需要监控 eks 集群中具有 nfs 挂载路径的许多旧容器 使用 nfs client helm 图表映射容器 i 中的 nfs 目录 我需要监视我的安装路径何时由于某种原因丢失 而我发现做到这一点的唯一方法是在容器中执行命令 bin b
  • 从 pod 连接到其他 pod

    基本上 我有一个部署 它创建了 3 个自动扩展的容器 PHP FPM NGINX 和包含应用程序的容器 所有这些都设置了机密 服务和入口 该应用程序还在 PHP FPM 和 NGINX 之间共享项目 因此一切都已设置完毕 由于我想使用 K8
  • Pod 清单写入 Deployment Manifest

    在 Kubernetes 中 将正在运行的 pod 清单转换为具有 x 个副本的部署的简单方法是什么 我尝试获取清单 k get po xyz o yaml gt po1 yaml 然后编辑 yaml 并与部署清单匹配 但这似乎并不容易 我
  • 通过流式传输将分段文件上传到 Amazon S3 时内存使用率过高?

    我的 Java Spring 应用程序中的以下方法直接将文件流式传输并上传到 Amazon S3 存储桶 我研究过 使用流将使上传大文件 对于我的用例 gt 100MB 视频 更加内存有效 当使用 25MB 文件测试该方法时 Kuberne
  • 如何从 kubernetes 集群内部访问主机的 localhost

    在此应用程序中 nodejs pod 在 kubernetes 内部运行 而 mongodb 本身作为 localhost 位于主机外部 这确实不是一个好的设计 但它只适用于开发环境 在生产中 将有一个单独的 mongodb 服务器 因为这
  • 在 Kubernetes API 中启用 CORS

    有没有办法在 Kubernetes API 上启用 CORS 以便我可以使用不同的域向 Kubernetes API 发送 ajax 请求 通过将 cors allowed origins http 参数添加到 etc default ku
  • 一个持久卷是否可以被多个持久卷声明消耗?

    假设一个 PV 可以被多个 PVC 消耗并且每个 pod 实例需要一个 PVC 绑定 这样的假设是否正确 我这么问是因为我创建了一个 PV 然后创建了一个具有不同尺寸要求的 PVC 例如 kind PersistentVolume apiV
  • 如何使用 hostPath 将单个文件映射到 kubernetes pod 中?

    我有一个自己的 nginx 配置 home ubuntu workspace web conf由脚本生成 我更喜欢把它放在下面 etc nginx conf d除了default conf 下面是nginx yaml apiVersion
  • Grafana/prometheus 中没有 kafka 指标

    我成功部署了 Helm Chart普罗米修斯操作员 https github com coreos prometheus operator tree master helm prometheus operator kube 普罗米修斯 ht
  • Kubernetes 1.8 支持的 Docker 版本

    我要将我的 Kubernetes 集群升级到该版本1 8 7 有谁知道哪个 docker 版本与其最兼容 这是我在 Kubernetes 官方页面上找到的 但我想它可能是针对最新的 k8s 版本的 1 9 在每台计算机上安装 Docker
  • Kubernetes Pod 已终止 - 退出代码 137

    我需要一些关于 k8s 1 14 和在其上运行 gitlab 管道所面临的问题的建议 许多作业都会抛出退出代码 137 错误 我发现这意味着容器突然终止 集群信息 库伯内特版本 1 14 使用的云 AWS EKS 节点 C5 4xLarge
  • 使大型静态数据文件可供 kubernetes pod 使用

    我有一些相当大的 UTF 8 数据文件 pod 需要在启动时加载到内存中 从几百 KB 到大约 50 MB 该项目 包括 helm 图表 是开源的 但其中一些文件不是开源的 否则我可能只会将它们包含在图像中 我最初的想法是创建配置映射 但我
  • 从 celery 工作人员到普罗米修斯的自定义指标

    我有一些 celery 工作人员在 kubernetes 下的容器中运行 它们不会由 celery 自动缩放 并且每个都在单个进程中运行 即没有多处理 我想从他们那里获取一堆不同的指标到普罗米修斯中 我研究过 celery promethe
  • Istio 允许所有出口流量

    如何允许 Istio 的所有出站流量 我尝试了以下方法 禁用出口网关并 使用 set global proxy includeIPRanges 0 0 0 0 0 0 0 0 0 0 绕过 sidecar 所有选项都不起作用 值得一提的是我
  • Kubernetes - 服务之间的通信

    我目前正在开发 kubernetes 集群 集群工作正常 我需要在不使用代理的情况下建立服务之间的通信 例如我有以下服务 worker app1 app2 app3 Worker 需要直接通过 SSH 登录应用程序容器并执行一些命令 在 d
  • 如何使用 Prometheus Alert Manager 在 Kubernetes 中触发警报

    我在集群中设置了 kube prometheus https github com coreos prometheus operator tree master contrib kube prometheus https github co
  • Podman:如何解析使用 Kubernetes YAML 部署的 pod 的主机名

    我正在使用 podman 4 5 dev 我使用以下方式部署了两个 Pod podman kube 播放 foo yaml podman kube play bar yaml 我在文件中指定了 pod 的主机名 但它们不会在容器内得到解析
  • Spring OAuth2 Keycloak Kubernetes 内部/外部访问

    我在 Kubernetes 集群内配置了 Keycloak 10 0 3 服务器 keycloak 服务器必须处理外部用户的身份验证 使用外部 url 并处理用于 Spring 微服务通信的 oauth2 令牌 然后Web应用程序Sprin
  • 有没有办法用Lettuce自动发现Redis集群中新的集群节点IP

    我有一个Redis集群 3主3从 运行在一个库伯内斯簇 该集群通过Kubernetes 服务 Kube 服务 我将我的应用程序服务器连接到 Redis 集群 使用Kube 服务作为 URI 通过 Redis 的 Lettuce java 客
  • 入口和 SSL 直通

    我最近一直在使用 nginxdemo nginx ingress 控制器 据我了解 该控制器无法执行 SSL 直通 我的意思是 将客户端证书一直传递到后端服务进行身份验证 因此我一直通过标头传递客户端主题 DN 最终 我更喜欢 SSL 直通

随机推荐