大家好 我叫陈辰非常开心来到Kubikon跟大家分享基于Kubi OVN创建一个Kubernetes的统一网络平面的这个话题这个话题呢 我也是希望讲我也想讲很久了这次话题呢 本身的一个由来是有一次一个用户 他有个需求就是关于如何在跨Kubernetes的网络平面上不输我们公司的产品然后我经过一些调研吧也寻找了一些方案其中有几个方案 我觉得还是非常有意思的其中Kubi OVN的这个方案也是我个人比较喜欢的一个方案所以今天把这个分享带给大家我们的这次演讲我们这次的发表主要基于几个部分第一个部分 例行常规的我们公司的广告介绍然后第二个部分可能是我们的关于现有的一些跨网了平面的集群的这种部署方案的一些介绍第三个就是跟大家介绍一下关于Kubi OVN的一个整体购价形态第四个就是给大家做一些实操演示希望大家喜欢那好 让我们在正式开始之前先让我对自己做一下自我介绍大家好 我叫程晨我的Guitar 8ID是IT2-911我在2016年之前实际上一直是一名开发人员当然使用的语言也比较多比如说Java,Python 很多语言都使用在2016年有一次很偶然的工作机会我深度的参与到了OpenStack和Kubernetes的研发过程中然后开始对我们的COVID-19有了一定的了解然后从那以后我就感觉的COVID-19是一个非常有意思的事情因为它对我们的很多设备进行了虚拟化更重要的是它可以让我深入的接触到存储网络还有Linux Kernel的这些非常有意思和深度的知识我其实目前是工作于日本我先后控制于Yahoo日本还有日本的SBI Beats 公司当然还有大家所熟知的红帽日本在这些企业中实际上也是研究Kubernetes相关的领域知识其中在Red Heart的时候我是深耕于OpenShift的这一产品线上我现在公主于Pincap日本的市场和社区部门现在目前的主要是服务于我们的社区用户但是我平时还是会为我们的商业用户提供技术服务支持我平时非常喜欢云元生技术的学习和推广因为我目前工作于日本的关系所以我也致力于帮助开源社区在日本社区的推广我也非常希望通过技术交流的这种方式能促进日本社区还有跟亚太其他社区的沟通和互动下面请让我为大家介绍一下我目前所控制的Pincap公司Pincap公司可能一些人有所了解之前它一直是致力于开发基于太低币产品线上的一款Niosco产品但是公司目前产品线也脱宽了比如说我们还有基于混乱工程的Q4Mesh等这样的产品线上的support的工作所以说目前来说我们转变定义现在是一家开发inflar技术为主的公司公司目前也在海外积极拓展海外市场在2012年4月份我们就成立了日本的office目前我们实际上也为日本的很多本土用户提供服务当然我们基于日本在做office的同时也是非常积极融入于日本市场比如说我们加入了日本的数据库学会除此以外我们还先后参与了Rust Tokyo和Japan Java User Group两次基于开发者的大会上面有我们的投币可进行演讲除此以外我们还参加了Cloud Native Days Tokyo这个在日本非常有规模和影响力的云圆声上的盛会再有我们也参加了日本的最大级别的Database盛会叫DB Technique Showcase所以说我有一些关于如何经营日本社区的经验希望有机会跟大家一起分享接下来我们就聊一聊为什么要使用跨集群网络我觉得我们使用跨集群网络无非有几个诉求第一个诉求是对服务可用状态的要求往往我们期待着自己的服务可以进行两第三中心的部署尤其在日本这么一个在海多发国家往往很可能一个地震就会造成了多个数据中心的停止运作所以两地三中心在海多发的国家或者地区显得尤为重要第二个诉求因为往往根据各个云厂商特点有一些情况下可能期待对服务进行分离比如说我所知的A和B两个云厂商他们之间的存储的价格差距将近有10倍那么在这种情况下有一些服务的话可能就希望我在一个共治的Kubernetes的网络平面上面我将存储放在A厂商然后将计算放在B厂商进行运作出此以外我们还经常提到一个概念就是被锁定在某个云厂商所以说第三点也是大家希望我们可以随时在某个云厂商有一个逃生方案比如说我因为这个云厂商另外一个云厂商购的折扣角度可以随时对自己的服务进行迁移避免被锁定在某个云厂商的服务之上第四点的往往有合规要求比如说红帽进阶年也经常提到的啊还不Cloud的建设中混合云的建设往往可能是我的本地有一个Kubernetes集群然后远程的工友云上也有一个这种Kubernetes集群那这个两个集群的服务如果要想一起管理起来或者让他们进行一个内网的连接的话这个时候可能一个网络平面的话就显得格外重要普通情况下我们所现在创建的IPv4的Kubernetes集群它的其实都是一个内网状态换句话说它的POD是不会对外暴露的那如果想做到夸Kubernetes集群的网络的话是有几种方案可以被提供的在此我列决了我看到的三种方案当然了这三种方案各有优劣我下面给大家详细的介绍一下其中的第一种方案是IPv6 Kubernetes集群但是严格来讲IPv6 Kubernetes集群不能被称作一个网络平面的一个方案众所周知IPv6有一些它的优势比如说我们给IPv6的Kubernetes分配一些IPv6的IP地址之后那它的POD实际上是可以在很多情况下直接被外网访问到的我们甚至不需要提供一些特殊的网络隧道方案但是如果非常了解IPv6的人会发现实际上我们很难通过个人去勾住IPv6的网络原因是这些IPv6的网段实际上是要经过申请机构的申请当然了你可以通过公有云上去申请IPv6的网段但是如果在私有云的条件下IPv6的网段申请还有IPv6整个网络的建设是一个非常巨大和浩瀚的工程对我们的网络人员有极高的要求所以这一款方案其实它对硬件成本还有各方面的软件成本要求非常之高公有云厂上实际上提供了很多Kubernetes集群网络统一平面的方案这些方案也非常不错但是也有其中的一些问题比如说第一点就是我目前没有看到这些云厂商的网络方案可以基于IPv6来做第二点就是这些云厂商的这个网络方案实际上都是有非常强的内置性的换句话说就是它无法跨云就是无法跨云厂商进行勾住这种跨云方案所以还是解决不了我们之前提到的一个locking in的一个情况之后经过不懈努力的去寻找我发现CNCF上的新秀Kubernetes实际上是满足于我的一些期待的比如说它可以在私有环境下帮助我去勾住两个Kubernetes集群的统一网络平面的这么一个产品特性虽然在之前在做OpenShift的时候就知道OpenShift开始支持Cube OVN了我觉得当时对OpenShift也是一个突破但是实际上自己一直没有沉下先来去研究一下Cube OVN所以就借着这个机会我也是稍微对Cube OVN的一些内容进行了探索然后今天也把自己的一些研究的内容呈现给大家那么好那下面我们来介绍一下什么是Cube OVN就我之前看到了Cube OVN的社区实际上发表过一篇文章文章题目是一个非著名Kubernetes CNI网络插件我觉得Cube OVN的社区实际上还是比较低调和谦逊的所以在近期他们也改变了思路然后做了一个非常有名的演讲就是说Cube OVN开始迈向主流我觉得这个描述也是非常准确的我们看到官网上Cube OVN对自己也介绍是一个很灵活的企业级的解决方案而且它具有非常丰富的产品特性并且容易部署我觉得这个描述还是非常准确的就我在使用的过程中我深刻的感受到了Cube OVN是一个具备非常丰富特性的Cubernetes的网络组件它极大地丰富了Cubernetes的网络生态而且它极其容易部署稍后的demo中大家也可以看到只需要简单的部署我们就可以勾住一个夸Cubernetes的网络平面我觉得Cube OVN的特点总结出来的应该有三个第一个是它的灵活第二个是它的高效第三个是它的安全那我们怎么来看到这三个点呢下面让我给大家微微到来那首先我们如何看待它的灵活这个特点呢这张图上给大家展示的是我们可以基于Cube OVN建立一个三层的Overlayer的网络如果我们建立了这样的一个Overlayer网络首先我们实际上可以保证我们的PVC和ACL与现有的物理网络的相对独立其次我们的子网和主机也就变得无关了容器的IP可以在整个集群进行飘移那么它就变得非常灵活然后第三个点呢实际上我也比较喜欢就是我们可以根据Namespace进行绑定把每个子网根据Namespace进行绑定这样子就可以有效地实现了我们的多租户大家知道Cubernetes的运为是一个非常痛的我非常麻烦的事情所以如果在没有足够的自动化的条件下那么运为人员肯定希望一个Cubernetes集群可以发挥出它最高的功效那么这个时候多租户也就显得极为重要关于Overlayer网络我觉得还有一点非常重要的特点就是它可以有分布式网关和集中式网关两种出口方式那么如何理解分布式网关和集中式网关呢分布式网关就是每一个node上自己单独分出去一个网关然后让它进行通信然后集中式网关实际上就是我们指定一两个node那这两个node它带光可能非常高那么它实际上作为所有网络流量的出入口那么也正是因为基于Cubernetes建立的Overlayer网络具有如此多的灵活的特性所以说Cubernetes给我第一个很大的感觉它就是它的灵活性CubeoVn给我的第二个的感觉就是它的高效性这个特性主要是由于CubeoVn可以建立一个Underlayer的网络它可以使POD直接和底层的虚拟机或者物理机直联相通然后甚至支持POD在不同的Vlan网络进行通讯而且它最主要的是还提供了Overlayer和Underlayer的共存能力我觉得这就意味着有两个特点第一个就是我们可以保持它的高效的同时不是它的灵活性第二个就意味着我们可以选择封包或者不封包然后把网络流量传给POD的那么如果要是我们想保证一个高效的网络的话因为我们可以使用它的Underlayer的网络的能力为Cubernetes提群提供一个高性能的网络其实自从容器诞生之日起容器的安全一直被受到极大的关注过去人们其实在把目光一直聚焦在运行时的安全上Cubernetes本身的网络安全一直被受到很多的诟病尤其是Cubernetes的Network policy设定选项不够丰富Cubio VN的话极大地丰富了容器的网络安全的选项大家可见屏幕上同字所画皆为重点更难得可贵的是Cubio VN对网络安全的设定选项非常丰富而且它支持了标准的Network policy的设定其中我比较关注的是它可以复制容器的流量权量这一点有助于我们的运为人员对流量的安全进行审计还有对其进行分析由于大会的时间所限所以我们很遗憾没有办法为大家深层次的解构Cubio VN但是我觉得可以通过代贸演示的方式让大家更加了解Cubio VN的一些运作本次的代贸我们将会分为三个代贸进行演示在演示之前先让我给大家讲解一下我们本次代贸的架构我们本次代贸将会构住两个Cubernetes集群然后两个Cubernetes之间的网络互通是由一个我们额外建造的节点OVN Interconnection进行网络的互联本次代贸的全部之星代码我们可以通过页面上的github链接进行取得本次实验我们使用Cubis Fair的一个子项目Cubi Key来不出Cubernetes集群在本次实验中我使用Cubi Key最大的感受就是高效和快速其中我使用Cubi Key在部署Cubernetes的时候耗时平均为2.5分钟左右接下来我们开始进行第一组实验第一组实验的主要流程是我们先建立两个Cubernetes集群然后建立OVN Interconnection集群此后在两个集群分别建立两个Enginkus Pod然后查看两个Enginkus Pod是否可以互联互通基于刚才的实验我们可以看到七层网络已经被成功的建立而且两个Cubernetes之间可以通过我们的Cubi OVN正常的相互访问接下来我们第二个实验就展示一下我们的Cubi OVN的四层网络的访问能力这里面我们开始准备这么样一个实验我们在Cluster1上创建一个MyCircle的节点然后我们在Cluster2上部署一个WaterPrice节点众所周知WaterPrice是一个非常有名的个人博客的这么一个开源程序然后我们尝试使用WaterPrice去访问Cluster1上的MyCircle然后如果是如果可以成功的话那么我们可以正常的访问Cluster2上的WaterPrice而正如大家所见Cubi OVN的创建的这种统一网络平面的Cubernetes跨Cubernetes的集群能力是没有什么太大问题的接下来我可能会为大家展示一下Pincap公司所创建的TiDB产品TiDB这款产品具有非常良好的MyCircle兼容性换而言之我们也可以把TiDB和WaterPrice进行连接那么接下来我将给大家演示的是如何基于Cubernetes部署TiDB以及如何基于Cubi OVN创建的我统一网络平面建立WaterPrice和TiDB的连接那么到这里我们所有的要展示的内容就全部都结束了非常感谢大家的收听如果有什么问题可以大家随时联系我谢谢再见