kube-OVN总体架构

这篇具有很好参考价值的文章主要介绍了kube-OVN总体架构。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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

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

1. 组件介绍

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

  • 上游 OVN/OVS 组件。
  • 核心控制器和 Agent。
  • 监控,运维工具和扩展组件。
    kube-OVN总体架构

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 插件,可以快速运行常见运维操作文章来源地址https://www.toymoban.com/news/detail-411651.html

到了这里,关于kube-OVN总体架构的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • kube-proxy源码阅读

    通过阅读kube-proxy的源码可以将proxy的主要逻辑总结为下图所示: 首先顺着代码阅读到ProxyServer-Run()函数,这里是kube-proxy启动的主逻辑,启动了两个server,分别是: 每个服务都是通过定时任务保证服务存活: 然后通过informer机制的list/watch感知services(被观察者)和endpoints(被

    2024年02月11日
    浏览(54)
  • kube-proxy代理模式详解

    kube-proxy代理模式详解 kube-proxy当前支持以下几种代理模式: 1、userspace:最早的负载均衡方案,它在用户空间监听一个端口,所有服务通过iptables转发到这个端口,然后在其内部负载均衡到实际的Pod。该方式最主要的问题是效率低,有明显的性能瓶颈,不再推荐使用。 比如说

    2024年02月12日
    浏览(42)
  • Kubernetes 漫游:kube-scheduler

    什么是 kube-scheduler ? Kubernetes 集群的核心组件之一,它负责为新创建的 Pods 分配节点。它根据多种因素进行决策,包括: 资源需求和限制 :考虑每个 Pod 请求的资源量(如 CPU 和内存)以及节点上可用的资源。 亲和性和反亲和性规则 :根据 Pod 的亲和性设置选择最适合的节点

    2024年02月05日
    浏览(47)
  • kube-apiserver限流机制原理

    本文分享自华为云社区《kube-apiserver限流机制原理》,作者:可以交个朋友。 apiserver是kubernetes中最重要的组件,一旦遇到恶意刷接口或请求量超过承载范围,apiserver服务可能会崩溃,导致整个kubernetes集群不可用。所以我们需要对apiserver做限流处理来提升kubernetes的健壮性。

    2024年04月08日
    浏览(32)
  • 记录k8s kube-controller-manager-k8s-master kube-scheduler-k8s-master重启

    1、报错如下 I0529 01:47:12.679312       1 event.go:307] \\\"Event occurred\\\" object=\\\"k8s-node-1\\\" fieldPath=\\\"\\\" kind=\\\"Node\\\" apiVersion=\\\"v1\\\" type=\\\"Normal\\\" reason=\\\"CIDRNotAvailable\\\" message=\\\"Node k8s-node-1 status is now: CIDRNotAvailable\\\" E0529 01:48:44.516760       1 controller_utils.go:262] Error while processing Node Add/Delete: failed to allocate cid

    2024年02月09日
    浏览(45)
  • kube-promethues配置钉钉告警

    前置:k8s部署kube-promethues 打开钉钉的智能群助手,点击添加机器人 选择自定义机器人 勾选加签,复制后保存 复制webhook地址后点击保存 prometheus-webhook-dingtalk是一个开源的钉钉告警的插件,目前最新版停留于v2.1.0 该文件是 用来顶替原本kube-promethues部署时的,alertmanager的配置

    2024年02月07日
    浏览(37)
  • calico-kube-controllers 启动失败处理

    calico-kube-controllers 异常,不断重启 日志信息如下 定位问题在这里 Failed to write status error=open /status/status.json: permission denied 进入容器检查目录 尝试进入容器,但是该容器居然没 cat , ls 等常规命令,无法查看容器问题 检查配置 查看pod的配置,对比其它集群,没任何问题,一样

    2024年02月03日
    浏览(25)
  • 云计算基础设施总体架构介绍

    云计算基础设施是指由硬件资源和资源抽象控制组件构成的支撑云计算的基础设施,包括为云服务客户提供计算资源、存储资源、网络资源、安全资源所需的软硬件设备及云管理平台。云计算基础设施总体架构如图1 所示。 图1 云计算基础设施总体架构  资源池包括计算资源

    2024年02月11日
    浏览(40)
  • k8s kube-proxy详解

    kube-proxy是kubernetes中网络核心组件,实现了服务暴露和转发等网络功能。kube-proxy支持userspace,ipvs和iptables三种代理模式。userspace性能问题较严重,基本不再使用,应用最多的是iptables和ipvs模式。 kube-proxy 以daemonset的方式运行在每个Node计算节点上,负责Pod网络代理, 它会定时通

    2024年02月10日
    浏览(60)
  • 【kubernetes】部署kubelet与kube-proxy

    前言 :二进制部署kubernetes集群在企业应用中扮演着非常重要的角色。无论是集群升级,还是证书设置有效期都非常方便,也是从事云原生相关工作从入门到精通不得不迈过的坎。通过本系列文章,你将从虚拟机准备开始,到使用二进制方式从零到一搭建起安全稳定的高可用

    2024年02月10日
    浏览(60)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包