KubeEdge EdgeMesh设计原理
EdgeMesh主要用来做边缘侧微服务的互访。
ServiceMesh

service mesh是一个服务网格的概念。在传统的架构里面都是通过像Dubbo来进行服务治理,服务治理的程序和我们应用程序强耦合在一起,对程序升级和运维带来很多麻烦。service mesh通过sidecar来使我们的治理能力独立,上图中绿色和蓝色是一个业务单元,绿色是我们的应用,蓝色是专门负责服务治理的程序,比如在Istio中就是envoy。应用的流量出来先导入envoy里面,在envoy里面可以配置服务访问的策略,就可以访问到对应的服务。
带来的好处就是应用程序无感知。
EdgeMesh
EdgeMesh架构

EdgeMesh在EdgeCore里面也是一个独立的Moudul,负责边缘侧流量的转发,已经把CNI的东西做好了,支持跨节点流量转发。APP的流量出来一个会导入到EdgeMesh里面,EdgeMesh里面有Listener负责监听;Resolver负责域名解析,它里面实现了一个DNS server;Dispatcher负责转发流量。RuleMgr作用是把endpoint、service、pod的信息通过MetaManager从数据库里取出来。
为什么域名解析会放到边缘?我们知道在原生k8s里面,域名解析是放在coreDNS活kubeDNS里面的做的,一般部署在master或一个单点生。这样会有一个问题:边缘和云的链接会经常断开,在这种情况下,域名解析服务就不能用了,因此需要把域名解析放到边缘,而不应该在master里面去解析,这时就需要把云上的service、endpoint、pod信息都同步到边缘。(后续会做一个优化,不获取全量信息,只把有效信息同步过来)
目前的设计主要致力于边和边的服务互访,云和边还有点问题,如果云和边要传一个数据还是推荐使用其他的数据通道。未来会做的工作是使用标准的istio进行服务治理控制,现在支持的是云上k8s的api,以后会考虑把istio集成进来,基于istio那一套规则来做。
目前边边的节点是在同一子网,本身就是互通的,未来考虑跨子网通信,可以通过cloudhub或者某一个中心点去转。(这一块也是我们实验室目前在做的事情,我们思路是通过在边缘动态配置一个envoy来统一接收需要代理的边缘节点服务的入口和出口流量,相当于把envoy配置成网关形式)
EdgeMesh转发流程

client pod是请求方,service pod是服务方。client pod里面有一个init container,类似于istio的init container。client先把流量打入到init container,init container这边会做一个流量劫持,它会把流量转到edge mesh里面去,edge mesh根据需要进行域名解析后转到对应节点的pod里面去。
这里有一个优化的点是:init container现在在每一个client pod里面都有一个,而它的功能作用在每一个pod里面都是一样的,后续会考虑把init container接耦出来。
EdgeMesh配置方式

当我们配置一个init container的时候,它就会拦截应用的请求数据,转发到EdgeMesh里面。
KubeEdge EdgeMesh设计原理的更多相关文章
- KubeEdge云边协同设计原理
云端组件CloudCore与k8s Master的关系 从黑盒角度看,CloudCore就是k8s的一个插件,它是非侵入的来扩展k8s的一部分功能,将原来云上的节点映射到边缘端进行管理,一个Cloud ...
- Atitit ati licenseService 设计原理
Atitit ati licenseService 设计原理 C:\0workspace\AtiPlatf\src_atibrow\com\attilax\license\LicenseX.ja ...
- kafka入门:简介、使用场景、设计原理、主要配置及集群搭建(转)
问题导读: 1.zookeeper在kafka的作用是什么? 2.kafka中几乎不允许对消息进行"随机读写"的原因是什么? 3.kafka集群consumer和producer状 ...
- html5设计原理(转)
转自: http://www.cn-cuckoo.com/2010/10/21/the-design-of-html5-2151.html 今天我想跟大家谈一谈HTML5的设计.主要分两个方面:一 ...
- 学习HTML5必读之《HTML5设计原理》
引子:很久前看过的一遍受益匪浅的文章,今天再次转过来,希望对学习HTML5的朋友有所帮助. 今天我想跟大家谈一谈HTML5的设计.主要分两个方面:一方面,当然了,就是HTML5.我可以站在这儿只讲HT ...
- 分布式文件系统FastDFS设计原理
原文地址: http://blog.chinaunix.net/uid-20196318-id-4058561.html FastDFS是一个开源的轻量级分布式文件系统,由跟踪服务器(tracker ...
- ApplicationContext容器的设计原理
1.在ApplicationContext容器中,我们以常用的FileSystemXmlApplicationContext的实现为例来说明ApplicationContext容器的设计原理. 2.在 ...
- BeanFactory容器的设计原理
XmlBeanFactory设计的类继承关系 1.BeanFactory接口提供了使用IoC容器的规范.在这个基础上,Spring还提供了符合这个IoC容器接口的一系列容器的实现供开发人员使用. 2. ...
- Spring技术内幕——深入解析Spring架构与设计原理(一)IOC实现原理
IOC的基础 下面我们从IOC/AOP开始,它们是Spring平台实现的核心部分:虽然,我们一开始大多只是在这个层面上,做一些配置和外部特性的使用工作,但对这两个核心模块工作原理和运作机制的理解,对深 ...
随机推荐
- uniapp 滑动切换
说明:本案例的样式基于colorui组件库 感兴趣的小伙伴可以看下教程 colorui组件库开发文档或者csdn的文档,顺便再分享下 colorui的群资源 最近项目中需要用到滑动切换的效果,自己懒得 ...
- Python3.x 基础练习题100例(21-30)
练习21: 题目: 猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个第二天早上又将剩下的桃子吃掉一半,又多吃了一个.以后每天早上都吃了前 一天剩下的一半零一个.到第10天早上 ...
- Redis之面试连环炮
目录 1.简单介绍一下Redis 2.分布式缓存常见的技术选型方案有哪些? 3.Redis和Memcached的区别和共同点 4. 缓存数据的处理流程是怎样的? 5. 为什么要用 Redis/为什么要 ...
- 微信小程序弹出层
1.消息提示 wx.showToast wx.showToast({ title: '成功', icon: 'success', duration: 2000 })2.模态弹窗 wx.show ...
- 初探JavaScript原型链污染
18年p师傅在知识星球出了一些代码审计题目,其中就有一道难度为hard的js题目(Thejs)为原型链污染攻击,而当时我因为太忙了(其实是太菜了,流下了没技术的泪水)并没有认真看过,后续在p师傅写出w ...
- windows电脑上传ipa到appstore的详细流程
在使用H5混合开发的app打包后,需要将ipa文件上传到appstore进行发布,就需要去苹果开发者中心进行发布. 但是在苹果开发者中心无法直接上传ipa文件,它要求我们使用xcode或transpo ...
- 爬虫必知必会(3)_requests模块高级
一.爬虫爬取失败的几个原因 1.在短时间内向网站发起了一个高频的请求 解决办法:使用代理 2.连接池(http)中的资源被耗尽 解决办法:立即将请求断开:Connection:close 3.高清图片 ...
- Python开发环境从零搭建-02-代码编辑器Sublime
想要从零开始搭建一个Python的开发环境说容易也容易 说难也能难倒一片开发人员,在接下来的一系列视频中,会详细的讲解如何一步步搭建python的开发环境 本文章是搭建环境的第2篇 讲解的内容是:安装 ...
- [BJWC2018] Kakuro
一.题目 点此看题 二.解法 我一开始一直想不出来,直接刚这个题实在是太复杂了,因为一开始就是不合法的. 下次遇到复杂的题一定要想 调整法 ,我再不往这个方向想我吔屎 好了言归正传,我们先找一组可行的 ...
- AES加密--适用于RC2、RC4和Blowfish
package test; import java.security.GeneralSecurityException; import java.security.Key; import javax. ...