8455澳门新

8455澳门新 7
8455澳门新TOPSHOP中国大陆首家门店入驻老佛爷百货
8455网站 2
8455网站达令APP:粉丝经济与产品品质成原始驱动力

8455网站OpenStack网络配置设计

  • 四月 17, 2020
  • 首页
  • 没有评论

美团云入选Top100年度技术创新案例

• 作者 庞杰 •
2015年12月10日17:34 • 速途网

  Top100summit是科技界一年一度的案例研究峰会,每年甄选有学习价值的100个技术创新或研发管理实践,分享本年度最值得总结、盘点的实践启示。12月5-7日,Top100summit案例研究峰会在北京国家会议中心隆重举办。美团云作为领先的O2O电商云和大数据解决方案提供商,入选TOP100年度技术创新案例。美团网高级技术专家王昕溥在大会上发表了以《软硬结合,新旧并举》为主题的演讲,揭秘美团云网络演化进程。

  王昕溥讲到,似乎提到美团大家联想到的只是团购,但美团早已不是单纯的团购,更有猫眼电影、机票、酒店、外卖等丰富的业务。同时,总有人会问美团为什么要做云?做好电商才是美团该走的路。实则不然。电商拥有的大数据是天然做云优势,数据在高峰期的波动也使得电商在资源弹性调度方面有一定的积累。而美团早已在2012年开始逐步创建自己的云平台,2013年5对正式对外推出公有云服务。同年7月,美团所有业务迁移至美团云平台上。至今,美团云已创建多年,在大数据分析服务上有了很深的积累,希望将此经验分享给大家。

  

8455网站 1

  美团云没有完全选用OpenStack,而是决定基于OpenStack自研云平台。原因在于当时OpenStack并不成熟,例如需要软件网关在VM上,网络模式配置比较死板,无法满足美团业务的需求。现在看来,因祸得福。由于OpenStack偏向私有云,如果当初完全基于OpenStack,现在做公有云将比较困难。但美团云选择自研云平台,结合自身业务,在OpenStack的基础上不断加入自研的策略,现如今平稳地支撑着所有业务。

  美团私有云研发目标除自研外还包括:资源云化和减少性能损耗。这需要做到快速交付、灵活地调整以及对访问控制和资源隔离不做太多要求。办公云的目标是动态地开发测试资源、从计费系统和公有云的预发环境入手试水公有云。而早期公有云的目标在于:纯软解决方案,底层采用VLAN,通过OVS控制器对用户进行隔离;因为当时仅为千兆网络,因此对软件性能要求不高。由此可预想到早期公有云存在着诸多问题。首先,内外网单连线,任何地方不稳定都将导致重大问题,若为三根网线,成本则太高;交换机对VLAN的支持能力限制了网络规模的扩展,用户数量受到限制;软件隔离占用宿主机计算资源;无法实现用户自定义网络,灵活性低。

  经过不断地改进,现美团新公有云网络架构得到全面升级。

  首先,从物理链路来看,实现万兆互联、双机冗余,管理网做粘接,用户的内外网全部覆盖在管理网上。通过VLAN隔离用户,可自定义网络,灵活性大大提高。并且,拥有浮动IP、负载均衡、对象存储、块存储、RDS、Redis等丰富的产品。具体来看,采用10G
Base-T电口万兆网络。而网络一分为二:overlay网络和underlay网络。这意味着不再受限于物理上的连接和端口数量,可以按照资源池的概念来分配网络资源。而Underlay网络作为整个SDN框架的基础,充分吸取和延续了过去长期积累的物理网络优势。同时,核心机柜封闭冷通道,此举大大降低了成本,同时方便了运维。

  其次,网关、主机网络、控制3方面性能释放。浮动IP网关、负载均衡网关、DDos清洗设备等全面DPDK化,64字节小包20G线速,并发1000w链接情况下新建连接100w/s。主机上又是如何充分释放万兆互联呢?在曾经V1.1版本上千兆仍可行,但万兆不行。升级到V2.3后平台创建能够满足要求,但利用率仅为20-30%。而升级到V2.4V,支持DPDK,进一步提升单流转发性能。控制上早期选择有iptables,主要选用OVS控制器对数据包进行过滤和处理。但存在需要配置或更新大量规则和难以实现更灵活控制的问题。后通过VXLAN对用户进行隔离、VNI内数据包不隔离、OFFLOAD
VXLAN的封装解封装到交换机上。

  目前,美团云更多地采用自动化运维,将过去长期通过debug或diag等手段去查看改为,通过openflow或者netconf等通信手段提取到控制器上,进一步整理和分析。未来,美团云将在此基础上不断进行架构升级与技术创新,软硬结合,新旧并举,大幅提高运维效率,为用户提供更优质的公有云服务。

关于 OVN 和 OVS
的介绍可以参考之前的分享《灵雀云开源Kube-OVN网络组件,增强Kubernetes网络功能》。目前
Kube-OVN 已经在 GitHub 开源
star 做贡献。

OpenStack提供了丰富的网络配置环境,本文介绍设计云系统是对于网络部分需求的考虑和设计。

为什么又要做一个网络插件

如果这次是首次在你的组织中部署云系统,在阅读完本章节后请和你的网络运维团队进行沟通,以便了解现有网络状况。云系统使用的网络同普通系统所使用的网络部署方式不同,且有可能在部署时对于网络的连接性和网络策略造成影响。

我们之所以要自己动手来做,有很多现实原因的考虑:

比如:组成云系统的服务器和云上运行的虚拟机实例所需要用的IP地址资源就需要事先进行妥善规划和准备;云系统网络中所涉及到的代理,防火墙也需要进行相应的研究。

1、最主要的是现有开源方案很难满足我们客户的需求,例如子网划分,IP固定,QoS,VLAN
隔离,流量镜像等等这种在传统网络里很常见的功能在绝大部分的开源网络方案里都是缺失的。造成的结果是,真正落地的时候会发现没有一个开源网络方案能用,只能不断的和网络部、系统部、应用部各个部门扯皮,割舍掉原有的一些网络功能来上容器。我们希望能通过技术的手段丰富现有的容器网络能力,来帮助客户更顺利的落地容器。

网络管理

2、从我们自身维护容器云的角度来看,容器平台网络相关的问题是最难排查的。一个网络不通的问题可能会涉及
Pod
网络、CNI、Service、Iptables、IPVS、Ingress、DNS、NetworkPolicy、Loadbalancer
等等多个组件,流量的分散导致故障十分难以排查,并且需要运维人员掌握很多组件的原理。我们希望能够把网络流量的数据面进行统一,不要再分散到各个组件上,降低维护方面的复杂度。

网络有效管理通常是一个重要的考虑项目(常见的如:分散的交换机和网络接口)。通过将系统管理和监控产生流量和实际云系统用户流量进行分流的网络管理方式可以减少对于用户使用的影响。

3、经过调研我们认为 OVN/OVS 这套网络组件功能上比较齐全,能够实现
OpenStack 的所有网络功能,那么对 Kubernetes
的网络来说能力其实是大幅溢出的,可以实现很多高级功能。此外 OVS
已经是经久考验的虚拟交换机,稳定性是很有保证的,性能方面也有各种 DPDK
和硬件加速方案来托底,真正到要性能的时候我们有应对的方案。此外我们了解到的一些公有容器云厂商内部其实也是用的
OVN 来做容器网络,我们也不算第一个烈士。

对于OpenStack内部组件则建议使用私有网络进行通讯,如:消息队列,OpenStack计算节点。VLAN非常适合于这种私有网络的场景。

综合这些因素我们决定自己开发一个基于 OVN 的网络方案,也就是 Kube-OVN
。一方面能够很好满足客户和我们自己的需求,另一方面开源出来也能帮助社区一同进步。

公共访问选项

Kube-OVN 的设计原则和思路

对于云系统中虚拟机实例有两种的IP地址分配策略:固定IP和动态IP。固定IP策略是在虚拟机实例启动时分配并绑定一个固定IP地址,而动态IP策略则可能在用户的不同操作时IP地址发生变更。这两种IP策略按照需求同时可用于共有和私有网络。

1、平移 OpenStack 网络的概念和功能到 Kubernetes。OpenStack
的网络已经发展了很多年,很多设计和概念也基本成了 SDN
的标准。我们希望能通过 OVN
不仅仅是引入一些高级功能,还能引入一些比较成熟的网络概念,像
VPC、Subnet、多租户、FIP、SecurityGroup 等等,从整体上增强 Kubernetes
网络的能力。

OpenStack必须使用固定IP地址,而动态IP地址则不是必须的。常见的2种动态IP的应用场景是:对于公网IP地址有限的私有云环境,可提供外网对于私有云的访问;或对于公有云用户可以有一个静态IP来访问云资源,而在云系统中实际对应的实例已迁移或升级。

2、统一网络的数据平面,我们希望把 Kubernetes
作为网络的控制平面,所有数据平面的功能都能通过 OVN 来实现,包括
Service、DNS、NetworkPolicy 都通过 OVN 来实现,简化之后的维护工作。

固定IP地址可以是私有云中的内网IP,也可以是公有云中的公网IP。当虚拟机实例终止后,对应的固定IP地址就被系统回收。需要注意的是刚开始使用云系统的用户可能会对固定IP地址的消失产生困惑。

3、尽可能覆盖其他开源网络方案的功能。对我们来说也不希望同时支持多个网络插件,每个客户都不一样,这样对我们成本也很高。我们自己希望有这么一个跟水桶机一样的网络方案要的功能都覆盖了,还能有些特色,这样是最好的。

IP地址规划

4、尽可能的易于安装使用。OVN、OVS
这套东西本身的安装和使用都还是比较复杂,门槛比较高我们希望能进行简化,降低用户使用的门槛。方便交付,也方便更好的推广。

OpenStack环境可能会需要很多子网,且每个子网间运行不同的服务。IP地址规划可以对于网络分隔和扩展提供更好的帮助。控制类服务同时需要公网和私网IP地址,可参见之前提到的虚拟机公网配置的选项。

Kube-OVN 的整体架构和功能实现

IP地址规划可以分解成以下部分:

8455网站 2

  1. 子网路由:子网数据包通过专用路由或nova-network服务进行通讯
  2. 控制服务的公开接口:swift-proxy, nova-api,
    glance-api和horizon的公用访问,可以指向单台服务器也可在负载均衡之后。
  3. 对象存储集群内部通讯:在对象/账号/容器的服务之间的通讯和代理服务的内部接口使用的私有网络上的通讯。
  4. 计算和存储通讯:临时存储和对象存储对于计算节点来说是外部服务,需要网络进行连接通讯。
  5. 外部远程管理:如果专用的外部远程控制器用于管理服务器,通常采用分隔的网络。
  6. 内部远程管理:通常计算或存储节点需要额外的网络接口(如
    1G接口)用于系统管理或监控工具访问服务器。
  7. 未来扩展的预留空间:添加新的面向公开的控制服务,或是更多的虚拟机实例的IP需要在你的计划中。

先看一下组件的架构,Kube-OVN 自身的安装 yaml 里包含了 OVN 和 OVS
的安装和配置,Kube-OVN 自身的逻辑主要集中在图中蓝色的部分
kube-ovn-controller,kube-ovn-cni 和
kube-ovn-cniserver。其中最主要的逻辑在 kube-ovn-controller
可以看成是一个 Kubernetes 资源的控制器,它会 watch Kubernetes
内所有和网络相关的资源变化,例如 Pod、Node、Namespace、Service、Endpoint
和 NetworkPolicy。每当资源发生变化 kube-ovn-controller
会计算预期的状态,并将网络对应的变化翻译成 OVN
北向数据库的资源对象。同时 kube-ovn-controller
会将配置具体网络的信息,例如分配的 IP、Mac、网关等信息再以 Annotation
的方式回写到 Kubernetes 的资源里,方便后续的处理。

比如:在私有IP段172.22.42.0/24 and
172.22.87.0/26上部署了OpenStack的计算和对象存储服务,可按照如下方式进行配置:

kube-ovn-cni 本身是很薄的一层,主要工作是适配 CNI 的协议和 Kubelet
对接,将标准的 cni add/del 命令发送到每台机器上的 kube-ovn-cniserver
进行后续处理。而 kube-ovn-cniserver 会根据传入的参数反查 Kubernetes
中资源对应的 Annotation,操作每台机器上的 OVS 以及容器网络。

172.22.42.0/24 172.22.42.1 – 172.22.42.3 – 子网路由 172.22.42.4 – 172.22.42.20 – 预留 172.22.42.21 – 172.22.42.104 – 计算节点远程控制器 172.22.42.105 – 172.22.42.188 – 计算节点管理接口 172.22.42.189 – 172.22.42.208 – Swift proxy远程控制器 172.22.42.209 – 172.22.42.228 – Swift proxy管理接口 172.22.42.229 – 172.22.42.252 – Swift storage servers远程控制器 172.22.42.253 – 172.22.42.254 – 预留 172.22.87.0/26: 172.22.87.1 – 172.22.87.3 – 子网路由 172.22.87.4 – 172.22.87.24 – Swift proxy server内部接口 172.22.87.25 – 172.22.87.63 – Swift object server内部接口

举一个创建 Pod 的例子,Pod 下发到 apiserver 后 kube-ovn-controller 会
watch 的新生成了一个 Pod,然后调用 ovn-nb
的接口去创建一个虚拟交换机接口,成功后将 OVN 分配的 IP、Mac、GW
等信息反写到这个 Pod 的 Annotation 中。接下来 kubelet 创建 Pod 时会调用
kube-ovn-cni,kube-ovn-cni 将信息传递给 kube-ovn-cniserver。CNIServer
会反查 Pod 的 Annotation 获得具体的 IP 和 Mac 信息来配置本地的 OVS
和容器网卡,完成整个工作流。其他的 Service、NetworkPolicy
的流程也是和这个类似的。

也可以使用公网IP地址实现类似方式,建议使用较大范围段的IP地址。需要注意的是有些Openstack网络配置下,虚拟机实例的公网IP地址是分配给了nova-compute主机。

Kube-OVN 实现的网络模型

网络拓扑

8455网站 3

OpenStack提供了几种网络管理方式,每种各自有自己的优缺点。选择不同的网络管理管理方式会影响到你网络拓扑,所以需要谨慎选择合适方式。
方式 Flat 优点:及其简单,不需要DHCP广播
缺点:需要在虚拟机实例中进行文件注入,仅限于有限的Linux发行版,配置困难,不推荐
FlatDHCP 优点:配置相对简单,标准网络协议,可用于任意操作系统
缺点:需要有自己的DHCP广播域 VlanManager
优点:每个租户可以隔离在自己的VLAn中
缺点:配置较复杂,需要有自己的DHCP广播域,需要需要许多VLAN配置传输端口,有VLAN数量限制,交换机需要支持802.1q
VLAN tagging FlatDHCP Multi-host 优点:网络故障可按照虚拟机进行隔离
缺点:配置复杂 HA 优点:running on the hypervisor
affected.(不知道什么意思?主机上运行,可迁移?),DHCP通讯可以隔离在单个主机,网络流量可以分布到不同的计算节点上
缺点:默认计算节点需要分配公网IP地址,在线扩展时在网络部分需要特别小心的修改配置

Flannel 和很多网络的实现上都是一个 Node
一个子网,我们发现这种子网模型很不灵活,而且也很难扩展。因此在 Kube-OVN
里我们采用了一个 Namespace
一个子网的模型,子网是可以跨节点的这样比较符合用户的预期和管理。每个子网对应着
OVN 里的一个虚拟交换机,LB、DNS 和 ACL
等流量规则现在也是应用在虚拟交换机上,这样方便我们之后做更细粒度的权限控制,例如实现
VPC,多租户这样的功能。

VLANs

所有的虚拟交换机目前会接在一个全局的虚拟路由器上,这样可以保证默认的容器网络互通,未来要做隔离也可以很方便的在路由层面进行控制。此外还有一个特殊的
Node 子网,会在每个宿主机上添加一块 OVS 的网卡,这个网络主要是把 Node
接入容器网络,使得主机和容器之间网络可以互通。需要注意的是这里的虚拟交换机和虚拟路由器都是逻辑上的,实现中是通过流表分布在所有的节点上的,因此并不存在单点的问题。

VLAN的配置可以从简单到复杂。使用VLAN可以使每个项目有有自己的子网且网络广播可以同其他的项目分隔开。为了让OpenStack更好的使用VLAN,需要将VLAN进行划分(每个项目一个VLAN)且每个计算节点连接的交换机端口都需要绑定到VLAN的传输端口(trunck
port)。

网关负责访问集群外部的网络,目前有两种实现,一种是分布式的,每台主机都可以作为运行在自己上面的
Ood 的出网节点。另一种是集中式的,可以一个 Namespace
配置一个网关节点,作为当前 Namespace 里的 Pod
出网所使用的网关,这种方式所有出网流量用的都是特定的 IP nat
出去的,方便外部的审计和防火墙控制。当然网关节点也可以不做 nat
这样就可以把容器 IP 直接暴露给外网,达到内外网络的直连。

比如:你的云预计需要支持最多100个项目,选择一个当前网络架构中没有使用的VLAN范围(如:VLAN
200 –
299),然后配置OpenStack使用该VLAN范围且交换机端口允许该范围的VLAN进行通讯。

Kube-OVN 功能实现

多个网络接口

首先是子网,子网是 Kube-OVN 中最为重要的一个概念,涉及到之后的 IP
分配,ACL 以及未来的 VPC 等功能。实现上每个子网对应 OVN
中的一个虚拟交换机,对应 Kubernetes 中的一个 Namespace,我们可以通过给
Namespace 加 Annotation 的方式来配置一个虚拟交换机。子网里可以配置基础的
CIDR,Gateway,保留 IP 段,以及一些基本的 ACL,这些都可以用 OVN
自身提供的能力。

OpenStack可以支持将多个网络接口分配给一个虚拟机实例。虽然这是一个不常用的高级特性,但通过简单配置就可支持。需要注意的是第二个网络接口使用整个子网或VLAN,对于可支持的项目数会减少。

8455网站 4

多主机和单主机网络

然后是 IP 分配。Kube-OVN 现在支持随机分配和固定 IP
分配。随机分配比较简单,可以使用 OVN 提供的 dynamic addresses
能力,自动分配一个当前子网内不冲突的 IP/Mac。固定 IP
我们采用了一个额外的 annoation ip_pool,Pod 在启动时 controller 会跳过
OVN 的自动分配根据 ip_pool 内的 IP 选择一个未被占用的地址分配给
Pod。对于 Deployment Pod 启停会产生 IP 的释放和再分配的过程。表面上看
Deployment 下面的几个 Pod 一直用固定的
IP,但实际上是一个动态变化,最中表现出来使用固定 IP 的过程。

nova-network服务可以运行在多主机或单主机模式下。多主机网络模式就是每个计算节点上都运行一份nova-network服务,该服务就作为相同节点上虚拟机实例连接Internet的网关。同时,计算节点也为本机的虚拟机实例提供了动态IP和安全组(Security
Groups)。单主机网络模式是使用集中的服务器,如:云控制器,独立运行nova-network服务。所有计算节点都将虚拟机实例的网络通讯转发到云控制器,云控制器负责连接到Internet。云中的所有计算节点上所有的虚拟机实例使用的动态IP和安全组(Security
Groups)都是由云控制器支持。

8455网站 5

这两种模式各有优缺点。单主机网络模式有单点故障的缺点,当云控制器发生故障,所有虚拟机实例都无法进行网络通讯。而多主机网络模式则没有这个问题,但多主机模式下需要每个计算节点都有一个公网IP用于连接Internet。当没有足够的公网IP地址时,则无法使用多主机网络模式。

之后是 QoS,通过 QoS 可以控制容器的 Ingress 和 Egress 带宽,我们可以通过
Pod 的 Annotation 来动态控制容器带宽。实现上我们最早计划使用 OVN 的 QoS
能力,但是实际使用时发现 OVN 的 QoS
这块存在问题,无法控制同主机内的流量,因此最终使用的是 OVS 自身的
ingress_policing_rate 和 Port QoS 来实现带宽控制。

网络服务

8455网站 6

OpenStack和其他网络应用一样会应用很多标准服务,比如:DNS和NTP

网关这里 OVN
本身提供了网关的能力,但是对网络有额外的需求需要用到一块单独的网卡做
Overlay 网络的
offload,使用上有些限制因此我们并没有采用。我们最终的实现是使用了 OVN
中的策略路由,将访问外网的流量路由到特定节点,再通过 Iptable 做 Masq
自己实现了一套从网关出网的逻辑。这种方案的好处是对网络没有额外的需求,我们在公有云上都可以使用这种网关模式。当然在具体落地时也可以根据场景替换成性能较好的
OVN Gateway 方式。

NTP

8455网站 7

时间同步是确保OpenStack各个组件能正常工作的一个关键因素。虚拟机实例中的调度,对象存储中的对象复制和日志中的时间戳匹配都必须要有正确的时间。

流量镜像。对容器流量进行抓包是件很繁琐的事情,好在 OVS
本身有流量镜像的功能,Kube-OVN 会在每台主机上创建一块 mirror0
的网卡,并设置镜像规则,将该主机上所有的容器流量复制一份到 mirror0
网卡。这样我们只需要 tcpdump -i mirror0
就可以捕获到这台主机上所有的容器网络流量了。方便之后的应用层面的监控和审计。

所有运行OpenStack组件的服务器都需要能访问适合的NTP服务。你可以通过在本地搭建一个NTP服务或者是使用公用的NTP服务。通过访问

8455网站 8

DNS

还有一些其他的功能。例如用 OVN 的 LB 代替 kube-proxy,用 ACL 来实现
NetworkPolicy 还有 OVN 的高可用等等,感兴趣的可以爬一下 Kube-OVN 的
release note 看看还有什么隐藏功能。

除了在安装nova-network服务器上有运行dnsmasq之外,OpenStack目前并不提供DNS服务。你可以考虑提供一个动态DNS服务用于虚拟机实例更新DNS记录指向新的IP地址,也可以提供正向或逆向的DNS同虚拟机实例IP地址的映射,如:vm-203-0-113-123.example.com。

这些看上去功能都比较复杂,但实际使用还是比较简单的在对应的资源上打
Annotation 就可以了。此外即使不做任何配置,Kube-OVN
会带一个默认的子网,默认的分布式网关,以及内置的 Service 和
NetworkPolicy 实现,完全可以当一个增强版本的 Flannel 来用。

在Ubuntu 12.10 上安装部署Openstack

近期工作和未来发展

Ubuntu 12.04 OpenStack Swift单节点部署手册

1、IPv6 的支持,这是我们客户方面比较急迫的一个需求,由于工信部的 IPv6
推广计划,对 IPv6 的需求也越来越多,同时借这个机会我们会对 Kube-OVN
现有的子网进行重新的设计,可能会抽象出一个 CRD 来做更复杂的控制。

MySQL服务器的HA集群之Corosync+DRBD+Pacemaker实现

2、监控 /tracing 工具的集成。传统网络工程有很多不错的网络检测工具例如
IPFIX、sFlow 和
NetFlow,我们未来会将这些工具加进来丰富网络的功能。此外借助流量镜像的能力我们也可以做一些应用层的流量分析和监控。

MySQL服务器的HA集群之Corosync+DRBD+Pacemaker实现-上篇

3、性能优化和 DPDK 的支持,主要是为了消除客户对 OVS
性能的担心。我们和社区内的一些人进行过交流,在使用 DPDK
后即使是小包也可以打满万兆网卡,因此性能方面还是很有前途的。

MySQL服务器的HA集群之Corosync+DRBD+Pacemaker实现-下篇

现在项目已经开源在 ,欢迎大家来 star
给作者打打气,也欢迎感兴趣的个人和公司都能参与进来,大家一块来完善这个项目。

如果这次是首次在你的组织中部署云系统,在…

Q&A

Q:能说说组件 kube-ovn-cni 具体是做什么的?OVN 本身不是已经是 OVS
的控制面了么?

A:其实做的是容器网卡和 OVS 的对接,OVN 那边生成了 port 的信息,需要
kube-ovn-cni 把这个信息同步到 OVS 和容器网卡。

Q:能讲讲 Kube-OVN 负载均衡和会话保持是怎么做的吗?已经支持哪些策略?

A:目前的负载均衡用的是 OVN 的 L2
Loadbalancer,这一块的负载均衡还比较简单只支持 IP Hash。

Q:多租户 /VPC 模式下是否可以互相之间网段冲突,如何实现 livenessProbe?

A:这块暂时还不支持,主要是 kubelet 是在主机的 network namespace 进行
probe,其实可以改 kubelete 代码进入到对应容器的 ns 再 probe
就可以了,但是这块需要 upstream 来进行支持,自己魔改现在倒也是个方案。

Q:Kubernetes
的业务使用本身就是有局限的,这种无限制扩大虚拟网络的做法,基于业务风险和成本来讲,真的很勇敢,如果原有的
Kubernetes 生态被改掉了,怎么保证开源的东西可以业务延续?

A:这个问题有点大,我们现在看到的趋势还是 Kubernetes
不断的发展,各个业务都在往 Kubernetes 走,我们做这个其实也希望能尽量和
Upstream 同步,并且之后可以去影响 Upstream。还有很多复杂的功能,比如
IPv4/IPv6 的双栈,多租户我们暂时也还没开始,也是因为 Upstream
现在对这块的支持还不好。

Q:和 的区别是什么?

A:ovn-kubernetes 我们之前调研主要问题在于他们是和 Flannel
类似的一个节点一个子网的模型,再就是看他们的代码过程中发现控制平面存在着丢消息的隐患。最后看到网络模型和控制平面都要改,工作量太大了我们就自己从头来了。

Q:使用 Flow 负载均衡器的性能怎么样,是否适合上生产环境?

A:大部分的 Flow 性能问题都可以用 DPDK
来解决,我们之前问过一些公有云的厂商性能方面是可以的,但是可能功能方面有些简单。

Q:使用 OVS 对 Host 机器的性能压迫有多大?

A:我们目前看来还好,OVS 本身带 cache
的机制,主要还是业务对性能用的比较多一些。

Q:kube-ovn-controller 如果来不及写入 podIP 这些信息,CNI
插件获取不到分配的 IP 信息,会不会导致 Pod 创建失败,还有 ovn-cni
是能过什么协议和 ovn-cni-server 进行协作的?

A:来不及写入的情况下 CNIServer 会重试等待 annotation
ready,如果超时的话会失败等 kubelet 下次调用 CNI 的时候重新获取信息。CNI
和 CNIServer 现在是通过一个本机的 socket 走 http 协议进行通信。

Q:DPDK 怎么满足需求?使用容器,可以用 DPDK 加速么?

A:DPDK 主要做 OVS 的流表加速,社区由 ovs-dpdk 的
binding,容器相当于用的是 OVS 的网卡,这样 DPDK 就可以加速容器的网络。

Q:在没有硬件交换机的情况,这个网络插件怎么利用虚拟机模拟交换机呢?

A:还是要有硬件交换机做物理上的网络连通的,虚拟交换机是在机器中用软件的方式来模拟交换机的行为,这样一台机器上的多个容器或者虚拟机就好像接在了一个物理交换机上。

相关文章

No Comments, Be The First!
近期评论
    功能
    网站地图xml地图