kube-OVN总体架构

news2024/11/18 3:24:19

本文档将介绍 Kube-OVN 的总体架构,和各个组件的功能以及其之间的交互。

总体来看,Kube-OVN 作为 Kubernetes 和 OVN 之间的一个桥梁,将成熟的 SDN 和云原生相结合。 这意味着 Kube-OVN 不仅通过 OVN 实现了 Kubernetes 下的网络规范,例如 CNI,Service 和 Networkpolicy,还将大量的 SDN 领域能力带入云原生,例如逻辑交换机,逻辑路由器,VPC,网关,QoS,ACL 和流量镜像。

1. 组件介绍

Kube-OVN 的组件可以大致分为三类:

  • 上游 OVN/OVS 组件。
  • 核心控制器和 Agent。
  • 监控,运维工具和扩展组件。
    在这里插入图片描述

2.上游 OVN/OVS 组件

该类型组件来自 OVN/OVS 社区,并针对 Kube-OVN 的使用场景做了特定修改。 OVN/OVS 本身是一套成熟的管理虚机和容器的 SDN 系统,我们强烈建议 对 Kube-OVN 实现感兴趣的用户先去读一下 ovn-architecture(7) 来了解什么是 OVN 以及 如何和它进行集成。Kube-OVN 使用 OVN 的北向接口创建和调整虚拟网络,并将其中的网络概念映射到 Kubernetes 之内。

所有 OVN/OVS 相关组件都已打包成对应镜像,并可在 Kubernetes 中运行。
ovn-central
ovn-central Deployment 运行 OVN 的管理平面组件,包括 ovn-nb, ovn-sb, 和 ovn-northd。

  • ovn-nb: 保存虚拟网络配置,并提供 API 进行虚拟网络管理。kube-ovn-controller 将会主要和 ovn-nb 进行交互配置虚拟网络。
  • ovn-sb: 保存从 ovn-nb 的逻辑网络生成的逻辑流表,以及各个节点的实际物理网络状态。
  • ovn-northd:将 ovn-nb 的虚拟网络翻译成 ovn-sb 中的逻辑流表。

多个 ovn-central 实例会通过 Raft 协议同步数据保证高可用。

ovs-ovn
ovs-ovn 以 DaemonSet 形式运行在每个节点,在 Pod 内运行了 openvswitch, ovsdb, 和 ovn-controller。这些组件作为 ovn-central 的 Agent 将逻辑流表翻译成真实的网络配置。

3. 核心控制器和 Agent

该部分为 Kube-OVN 的核心组件,作为 OVN 和 Kubernetes 之间的一个桥梁,将两个系统打通并将网络概念进行相互转换。 大部分的核心功能都在该部分组件中实现。

  • kube-ovn-controller
    该组件为一个 Deployment 执行所有 Kubernetes 内资源到 OVN 资源的翻译工作,其作用相当于整个 Kube-OVN 系统的控制平面。 kube-ovn-controller 监听了所有和网络功能相关资源的事件,并根据资源变化情况更新 OVN 内的逻辑网络。主要监听的资源包括: Pod,Service,Endpoint,Node,NetworkPolicy,VPC,Subnet,Vlan,ProviderNetwork。

以 Pod 事件为例, kube-ovn-controller 监听到 Pod 创建事件后,通过内置的内存 IPAM 功能分配地址,并调用 ovn-central 创建 逻辑端口,静态路由和可能的 ACL 规则。接下来 kube-ovn-controller 将分配到的地址,和子网信息例如 CIDR,网关,路由等信息写会到 Pod 的 annotation 中。该 annotation 后续会被 kube-ovn-cni 读取用来配置本地网络。

  • kube-ovn-cni
    该组件为一个 DaemonSet 运行在每个节点上,实现 CNI 接口,并操作本地的 OVS 配置单机网络。

该 DaemonSet 会复制 kube-ovn 二进制文件到每台机器,作为 kubelet 和 kube-ovn-cni 之间的交互工具,将相应 CNI 请求 发送给 kube-ovn-cni 执行。该二进制文件默认会被复制到 /opt/cni/bin 目录下。

kube-ovn-cni 会配置具体的网络来执行相应流量操作,主要工作包括:

  1. 配置 ovn-controller 和 vswitchd。
  2. 处理 CNI add/del 请求:
  3. 创建删除 veth 并和 OVS 端口绑定。
  4. 配置 OVS 端口信息。
  5. 更新宿主机的 iptables/ipset/route 等规则。
  6. 动态更新容器 QoS.
  7. 创建并配置 ovn0 网卡联通容器网络和主机网络。
  8. 配置主机网卡来实现 Vlan/Underlay/EIP 等功能。
  9. 动态配置集群互联网关。

4. 监控,运维工具和扩展组件¶

该部分组件主要提供监控,诊断,运维操作以及和外部进行对接,对 Kube-OVN 的核心网络能力进行扩展,并简化日常运维操作。

  • kube-ovn-speaker
    该组件为一个 DaemonSet 运行在特定标签的节点上,对外发布容器网络的路由,使得外部可以直接通过 Pod IP 访问容器。

  • kube-ovn-pinger
    该组件为一个 DaemonSet 运行在每个节点上收集 OVS 运行信息,节点网络质量,网络延迟等信息,收集的监控指标可参考 Kube-OVN 监控指标。

  • kube-ovn-monitor
    该组件为一个 Deployment 收集 OVN 的运行信息,收集的监控指标

  • kubectl-ko
    该组件为 kubectl 插件,可以快速运行常见运维操作

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/63283.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

热销产品缺货,滞销产品积压?WMS系统如何打造智能仓储

仓库是企业物流系统中的一个关键环节,涵盖出库、入库、质检等各个流程。传统的仓储模式单一、反应迟钝,难以适应企业的数字化经营要求。 如何在最小的人力资源下,最大限度地发挥仓库的价值,在最小的成本下,最大限度地利…

【服务器数据恢复】Zfs文件系统误删除数据的数据恢复案例

服务器故障: 一台zfs文件系统服务器,运维人员误操作删了服务器上的数据,用户联系到我们数据恢复中心要求恢复数据。 服务器数据恢复过程: 1、服务器数据恢复工程师对故障服务器所有硬盘进行扇区级镜像备份,后续的数据…

Kafka核心技术与实战 04

Kafka 不再是一个单纯的消息引擎系统,而是能够实现精确一次(Exactly-once)处理语义的实时流处理平台。 Kafka版本 Apache Kafka,也称社区版 Kafka。优势在于迭代速度快,社区响应度高,使用它可以让你有更高…

美团一面:为什么线程崩溃崩溃不会导致 JVM 崩溃

网上看到一个很有意思的美团面试题:为什么线程崩溃崩溃不会导致 JVM 崩溃,这个问题我看了不少回答,但发现都没答到根上,所以决定答一答,相信大家看完肯定会有收获,本文分以下几节来探讨 线程崩溃&#xff0…

公众号美食文案怎么写?怎么写才能吸引人?

美食类公众号的文案还是比较难写的,毕竟文案没有图片那么直观,让用户看着就有食欲。 公众号美食文案怎么写?怎么写才能吸引人?怎么写才能在字里行间透露着美食的诱惑力? 作为一个有着十年丰富经验的文案人&#xff0c…

Java编程最常见的208道面试题,一文解析

相比与这些问题,我的这 208 道面试题具备以下优点: 披沙拣金提炼出每个 Java 模块中最经典的面试题;答案准确,每个题目都是我仔细校对过的;接近最真实的企业面试,题目实用有效果;难懂的题目&am…

SAP IDoc状态70 - This IDoc is saved as the original of an edited document.

SAP IDoc状态70 - This IDoc is saved as the original of an edited document. 根据SAP的标准逻辑,一个IDoc一旦被修改了,SAP系统会自动创建一个新的IDoc(状态70)来存储IDoc修改日志。 比如idoc # IDoc 208828452,由于库存不够,所…

SQL注入【SQLi-LABS Page-1(Basic Challenges Less1-Less22)】

文章目录前言sqlmapless-1(基于错误的GET单引号字符型注入)less-2(基于错误的GET整型注入)less-3(基于错误的GET单引号变形注入)less4(基于错误的GET双引号字符型注入)less5&#xf…

Docker的资源管理控制(CPU、内存、磁盘IO配额)

目录 一、CPU 资源控制 1、设置CPU使用率上限 (1)查看CPU使用率 (2)进行CPU压力测试 (3)设置CPU使用率 2、设置CPU资源占用比(设置多个容器时才有效) 3、设置容器绑定指定的CP…

word如何转化成pdf,最新图文教学,学会只需1分钟

​在日常生活中,我们经常会遇到需要将word文档转换成PDF格式的情况。那word如何转化成pdf呢?word文件转换成PDF并不难,只要你操作正确,就可以将其快速地转化成PDF。下面就给大家分享一下操作步骤吧。 一、第一步,打开需…

嵌入式开发--STM32硬件SPI驱动74HC595

本篇是硬件SPI口驱动74HC595。 IO口模拟时序软件驱动74HC595见这一篇文章:嵌入式开发–IO口扩展–74HC595 硬件连接如下: 只用了一个74HC595,如果需要多个74HC595级联,参考前面的链接,里面有电路,不需要额…

KubeEdge云原生边缘计算公开课02——云原生边缘计算千行百业核心应用

KubeEdge云原生边缘计算公开课02——云原生边缘计算千行百业核心应用张琦:云原生边缘计算产业发展现状与趋势展望——KubeEdge云原生边缘计算产业发展概述一、云原生边缘计算的产业场景1.云计算与边缘计算的对比2.传统的把边缘计算逐步向CloudNative技术演进3.传统本…

cookie加密解密和保证数据完整性(不被篡改)

cookie加密解密和保证数据完整性 AES-128-CBC加密算法 AES-128-CBC是一种分组对称加密算法,即用同一组key进行明文和密文的转换,以128bit为一组,128bit16Byte,意思就是明文的16字节为一组对应加密后的16字节的密文。 若最后剩余…

计算机SCI论文的摘要怎么写? - 易智编译EaseEditing

摘要第一部分的 1-3 句话必须让读者知道你为什么进行这项研究。 引导性句子既陈述了主要议题,也说明了问题。这样,读者的注意力被立刻抓住了。 下一个句子可以接着讲述这个领域缺乏什么样的信息,或者以前的研究者曾做了哪些努力来解决这个问…

你居然还去服务器上捞日志,搭个日志收集系统难道不香吗?

摘要 ELK日志收集系统进阶使用,本文主要讲解如何打造一个线上环境真实可用的日志收集系统。有了它,你就可以和去服务器上捞日志说再见了! ELK环境安装 ELK是指Elasticsearch、Kibana、Logstash这三种服务搭建的日志收集系统,具体…

序列化工具Protobuf在Idea中的配置和在java中的使用实例

一、什么是 protobuf ? 1、protobuf 来源? Protocal Buffers(简称protobuf)是谷歌的一项技术,用于结构化的数据序列化、反序列化。 由于protobuf是跨语言的,所以用不同的语言序列化对象后,生成一段字节码,…

5G无线技术基础自学系列 | 5G上下行解耦技术

素材来源:《5G无线网络规划与优化》 一边学习一边整理内容,并与大家分享,侵权即删,谢谢支持! 附上汇总贴:5G无线技术基础自学系列 | 汇总_COCOgsta的博客-CSDN博客 C-Band TDD系统拥有大带宽,…

Spring Boot 3.0 正式发布

导读Spring Boot 3.0 现已正式发布,此版本包含了 12 个月以来 151 个人的 5700 多次 commit 的工作结晶。这是自 4.5 年前发布 2.0 以来,Spring Boot 的第一次重大修订。它也是第一个支持 Spring Framework 6.0 和 GraalVM 的 Spring Boot GA 版本。 由于…

Windows10安装DM8-达梦数据库

目录1. 下载安装包1.1 点击官网下载DM8安装包1.2 安装包解压2. 安装数据库2.1 打开解压后的文件夹,双击打开该iso文件2.2 点击setup.exe进行安装2.3 选择语言2.4 执行安装向导2.5 数据库初始化3. SQL交互查询工具验证数据库安装4. 参考文档及简单的试炼5.DM管理工具…

System.UnauthorizedAccessException: 对路径“xxx”的访问被拒绝的解决办法

环境:.net、spring.core、C#、MVC、IIS 8、Windows server standard 2016 操作:读取本地文件夹 现象:爆出如标题异常,因为是在后台调用接口处理本地文件(夹),前端相关接口显示500 Internal Server Error。 简单理解…