为啥Underlay才是容器网络的最佳落地选择

导语:

几年前,当博云启动自研容器网络研发的时候,除了技术选型的考虑,我们对于先做 Underlay 还是 Overlay 网络也有过深度的讨论。当时的开源社区以及主流容器厂商,多数还是以 Overlay 网络方案为主,但在我们对众多客户真正需求的深入了解之后,发现部分客户对容器内外网络直通有着非常强烈的需求。思虑再三,我们决定还是先做 Underlay 网络(后来又做了Overlay)。随着行业与公司自身的发展,我们建设实施的项目越来越多,这让我们对容器网络的思考也越来越深入,从而观点也越来越清晰:

01 从需求出发,考虑容器网络方案

 

如上图所示,这是目前企业微服务容器化部署的典型场景,也是驱动我们做 Underlay网络的直接原因:

  1. 服务部署在Kubernetes集群内部(如图:服务1、服务2);
  2. 数据库、注册中心、Redis、MQ等组件部署在集群之外;
  3. 部分服务也可能部署在集群之外, 比如容器平台试用阶段(如图:服务3)

这些服务和组件,需要能直接互联互通。

如若需要满足以上需求,最简单有效的方案就是直接把 Kubernetes 内外网络打通,也就是采用 Underlay 网络模式。

当然,如上需求也有别的办法可以解决。比如,细化分析服务和组件间的流量,采用ingress、egress,包括改写应用代码等方式,在特定情况下,这也是可以用的。然而,一方面,这些都是特定场景下的特定解决方案,缺乏一定的通用性;另一方面,容易出现配置复杂、引入额外风险、出错难以定位等问题。远远没有通过Underlay网络直接将内外网打通这么简单有效。

还有另外的办法就是将所有服务和组件都放入Kubernetes集群内部,但是这种方案仍是针对特定场景的非通用方案,很难保证企业所有的应用都在一个Kubernetes集群里。

同样,对于容器内外网络直接互联互通的需求场景还有:

  1. 特定用途的Kubernetes集群对外提供服务。比如专门用作提供PaaS中间件服务的Kubernetes集群、专门用作CI/CD服务的Kubernetes集群、专门用作提供大数据服务的Kubernetes集群等;
  2. 跨多集群的服务/组件互联互通;
  3. 为了在试点阶段降低风险,部分服务跑在集群内、部分服务跑在集群外等场景。

02 与虚拟机对比,从容器本质考虑容器网络方案

在容器的应用实践过程中,除了应用场景,我们也从底层基础设施的角度对容器进行了持续的思考。

从基础设施的角度看容器:容器和虚拟机的本质都是一样的,是上层应用的承载基础设施。

因此,从底层角度看,对容器网络的需求跟虚拟机是一致的。那么,虚拟机网络的落地模式是怎样的呢?

如上图右侧部分所示,IaaS层的落地网络方案可以认为是有行业标准的,不管是基于VMware 还是 OpenStack,基本都是采用OVS(或类似OVS)的二层 Underlay 网络方案。

因此,从基础设施的角度往上看,容器网络采用跟 IaaS 类似的方案,即将虚拟机和容器放到同一个网络层面上,是最合理的选择。

PS:在公有云上,虚拟机都在VPC里,因此目前公有云的容器网络方案,也是主要采用将容器和虚拟机放到同一个VPC中,可以直接互联互通的方案。这也是对上述判断的典型证明。

同时,对于部分客户反馈的 Unberlay 网络占用 IP 地址过多的问题,从虚拟机和容器的对比角度,也可以获得合理的解释:如果使用虚拟机部署,占用 IP 地址数量与容器 Underlay 网络是一样的。IP 地址的数量是由应用数量决定的,使用容器并没有引入多余 IP 地址占用。另外,Ipv6已经开始规模落地,在Ipv6时代,IP 地址数量将不会是问题。

03 技术方案选型

容器典型的开源 Unberlay 网络选型方案有 Calico 和 MACVLAN,这两个方案的问题也比较明显:

Calico:需要在数据中心路由器(或三层交换机)打开 BGP 路由协议,而 BGP 是广域网的路由协议,一般在数据中心内部不会启动,低端三层交换机/路由器对齐的支持情况也有风险。

MACVLAN:几年前有部分客户采用此容器网络方案,MACVLAN最大的问题就是社区活跃度已经很低,一些问题长期没有在社区中解决。同时,面向未来的扩展性也比较差。

以上也是博云基于 OVS 自研 Underlay(也支持Overlay)网络的原因。

04 总结

在容器网络方案中,Overlay网络方案有着对底层网络要求低(落地过程不需要跟网络部门打交道)、落地容易、IP地址占用少等特点,也有自己适用的特性需求场景。但是随着越来越多的客户将 Kubernetes 和容器大规模应用到生产环境中,博云客户中选择使用 Underlay 网络模式的比例也越来越高。这让我们更加明确认识到:

内外直通的Underlay网络才是容器网络的正确打开方式。

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

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

相关文章

oracle用户编辑文件中文乱码

文章目录一、分析定位1. 现象2. 查看当前编码3. 配置文件现状二、解决方案2.1. 编辑配置文件2.2. 调整2.3. 刷新环境变量2.4. 效果图2.5. 配置文件源码一、分析定位 1. 现象 2. 查看当前编码 登录oracle用户,查看当前oracle用户下的编码 [oraclelocalhost ~]$ ec…

今年圣诞,麋鹿第一次请假

年末的圣诞节来啦~~! 但我们的圣诞老人为什么有点低落?? 是在愁信太多?没地儿放? 不会是看不懂我信上的“鬼画符”吧.. 难道是在忌惮空中的雾霾?哈哈~ 圣诞老人:o(╥﹏╥)o 不不不&#xf…

支付宝和微信的JSSDK发起支付

支付宝&#xff1a; 引入alipay的jsapi文件&#xff1a; <script src"https://a.alipayobjects.com/g/h5-lib/alipayjsapi/3.0.6/alipayjsapi.min.js"></script> 点击支付按钮调用的后台创建交易的接口&#xff0c;返回tradeNO this.API.trade_create…

高德网络定位算法的演进

1.导读 GPS定位精度高&#xff0c;且早已成为移动设备标配&#xff0c;但GPS也具有一些难以克服的缺陷&#xff0c;包括&#xff1a; 冷启动时间长。GPS启动时&#xff0c;需要进行搜星&#xff0c;锁定卫星信号&#xff0c;然后再进行位置技术&#xff0c;这个过程可能会达到…

获取当天日期、昨天日期

package com.gblfy.util;import org.junit.Test; import org.springframework.stereotype.Component;import java.text.SimpleDateFormat; import java.util.Date;Component public class DateDeal {//日期格式化static SimpleDateFormat simpleDateFormat new SimpleDateForm…

疫情之下网络安全如何保障?Akamai防护方案前来“保驾护航”

2020年春天&#xff0c;以5G、人工智能、云计算为代表的“新基建”蔚然成风&#xff0c;着眼国家数字经济体系建设&#xff0c;打造数字经济体系底座的“新基建”&#xff0c;无疑成为中国经济整体应对未来发展的核心方案。然而&#xff0c;面临“新基建”与企业数字化进程的突…

2020将至,谈谈中小企业创业的那些事儿

2019正迎来尾声&#xff0c;在创业这场轰轰烈烈的旅途中&#xff0c;有的人名利双收&#xff0c;有的人饱受非议。一入创业深似海&#xff0c;在创业赛道上&#xff0c;很多公司完成了从0到1&#xff0c;却死在从1到100的路上。而小程序的出现&#xff0c;让移动互联网创业走向…

axios从安装到使用的教程

安装axios: npm install --save axios 目录结构: 红框部分是接口文件&#xff1a; appApi.js是存放接口的文件 import Vue from vue import axios from axiosexport default {// 获取分类show_category: function () {return axios.post(/point-api-show_category);},// 获…

yarn全局安装vue/cli vue不是内部命令

yarn全局安装vue/cli vue不是内部命令 在使用 yarn global add vue/cli安装 vue/cli之后 执行vue --version 报错:‘vue’ 不是内部或外部命令&#xff0c;也不是可运行的程序 或批处理文件 解决方案&#xff1a; 命令行输入 yarn global bin 然后把得到的地址添加到环境变量…

嘘,这是手淘双11 GMV 暴涨的秘密

阿里妹导读&#xff1a;信息流作为手淘的一大流量入口&#xff0c;对手淘的浏览效率转化和流量分发起到至关重要的作用。在探索如何给用户推荐其喜欢的商品这条路上&#xff0c;我们首次将端计算大规模应用在手淘客户端&#xff0c;通过端侧丰富的用户特征数据和触发点&#xf…

vuex从安装到使用的教程

vuex的安装 npm install vuex --save或cnpm install vuex --save main.js引入vuex import Vue from vue import Vuex from vuex import store from ./vuex/storeVue.use(Vuex) vuex的目录结构和store.js的代码 store.js的代码&#xff08;异步和同步的代码均留下两个方法&am…

未来,仅凭几个前端工程师,就能 hold 住一家企业吗?

阿里妹导读&#xff1a;微前端架构旨在解决单体应用在一个相对长的时间跨度下&#xff0c;由于参与的人员、团队的增加&#xff0c;从一个普通应用演变成一个巨石应用(Frontend Monolith)&#xff0c;随之而来的应用不可维护问题。这类问题在企业级 Web 应用中尤为常见。今天&a…

报告显示,媒体行业已成撞库攻击常见目标

一项报告显示&#xff0c;在2018年1月到2019年12月间&#xff0c;全球媒体行业共遭受了170亿次撞库攻击。 这份名为《Akamai 2020年互联网状况/媒体行业中的撞库攻击》的报告还发现&#xff0c;在报告期间内观察到的880亿起撞库攻击中&#xff0c;有20%针对的是媒体公司。 该…

yarn : 无法加载文件 C:\Users\Administrator\AppData\Roaming\npm\yarn.ps1,因为在此系统上禁止运行脚本

文章目录1. 现象2. 授权安全策略3. 重新执行命令1. 现象 2. 授权安全策略 若要在本地计算机上运行您编写的未签名脚本和来自其他用户的签名脚本&#xff0c;请使用以下命令将计算机上的 执行策略更改为 RemoteSigned 执行&#xff1a; set-ExecutionPolicy RemoteSigned查看执…

标记 (TAG) 您的 k8s 集群资源

标签的基本知识 标签是资源Meta信息&#xff0c;标签是一些充当元数据的词和短语&#xff0c;支持用户自定义和系统预制。每个标签都包含一个键&#xff08;Key&#xff09;和一个值&#xff08;Value&#xff09;。标签是一种资源的属性描述。标签与资源是 多对多的关系。标签…

CentOs7搭建PHP环境

######提示&#xff1a;wget 下载URL提示无法建立SSL连接,进行如下教程操作 https://blog.csdn.net/xinghun_4/article/details/50500331 reboot 重启虚拟机一键安装所有编译工具 gcc yum groupinstall "Development Tools" "Server Platform Development&quo…

央视315曝光SDK事件,应用开发者如何避坑?

7月16日晚&#xff0c;央视315晚会拉开大幕&#xff0c;再次敲响了消费领域的警钟。据央视报道&#xff0c;上海市消费者权益保护委员会委托第三方对市场上的App进行检测&#xff0c;发现某些第三方开发的SDK包存在违规收集用户个人信息的情况。日前&#xff0c;工信部已要求严…

VS Code 切换大小写

默认是空的&#xff0c;我设置的快捷键是 shift altd 转换为大写 shift altx 转换为小写

一个 Blink 小白的成长之路

写在前面 写过blink sql的同学应该都有体会&#xff0c;明明写的时候就很顺滑&#xff0c;小手一抖&#xff0c;洋洋洒洒三百行代码&#xff0c;一气呵成。结果跑的时候&#xff0c;吞吐量就是上不去。导致数据延迟高&#xff0c;消息严重积压&#xff0c;被业务方疯狂吐槽。这…

携程实时智能检测平台建设实践

本次演讲将为大家介绍携程实时智能异常检测平台——Prophet。到目前为止&#xff0c;Prophet基本覆盖了携程所有业务线&#xff0c;监控指标的数量达到10K&#xff0c;覆盖了携程所有订单、支付等重要的业务指标。Prophet将时间序列的数据作为数据输入&#xff0c;以监控平台作…