作者 | 新胜  阿里云技术专家

导读:OpenYurt 开源两周以来,以非侵入式的架构设计融合云原生和边缘计算两大领域,引起了不少行业内同学的关注。阿里云推出开源项目 OpenYurt,一方面是把阿里云在云原生边缘计算领域的经验回馈给开源社区,另一方面也希望加速云计算向边缘延伸的进程,并和社区共同探讨未来云原生边缘计算架构的统一标准。为了更好地向社区和用户介绍 OpenYurt,我们特地推出【深度解读OpenYurt】系列文章,本文为系列文章的第三篇,一一介绍了 OpenYurt 中组件 YurtHub 的扩展能力。

系列文章推荐:

  • OpenYurt 开箱测评 | 一键让原生 K8s 集群具备边缘计算能力
  • 深度解读 OpenYurt :边缘自治能力设计解析

OpenYurt 介绍

阿里云边缘容器服务上线 1 年后,正式开源了云原生边缘计算解决方案 OpenYurt,跟其他开源的容器化边缘计算方案的区别在于:OpenYurt 秉持 Extending your native Kubernetes to edge 的理念,对 Kubernetes 系统零修改,并提供一键式转换原生 Kubernetes 为 openyurt,让原生 K8s 集群具备边缘集群能力。

同时随着 OpenYurt 的持续演进,也一定会继续保持如下发展理念:

  • 非侵入式增强 K8s
  • 保持和云原生社区主流技术同步演进

YurtHub 架构说明

在上篇文章中,我们介绍了 OpenYurt 的边缘自治能力,重点解读了其中的组件 YurtHub。其架构图如下:

同时在介绍 YurtHub 的优势中我们提到 与 Kubernetes 设计理念契合,YurtHub 非常容易扩展出更多的能力。具体在 YurtHub 扩展出了什么能力呢?接下来我们将一一展开介绍。

YurtHub 的扩展能力

1. 边缘网络自治

首先介绍一下何谓边缘网络自治:即在边缘和云端网络断连时,不管时业务容器重启,或是边缘节点重启等,边缘业务的跨节点通信可以持续工作或是自动恢复。

在 OpenYurt 中,实现边缘网络自治需要解决如下的问题(以 flannel vxlan overlay 网络为例):

  • 问题 1: 节点上的网络配置可以自治,kube-proxy 的 iptables/ipvs 规则,flannel 的 fdb/arp/route 配置,coredns 的域名解析等网络配置,在节点重启后可以自动恢复,否则边缘跨节点通信将无法持续;
  • 问题 2: 业务容器 IP 保持不变,因为和云端网络断连状态下容器 IP 变化将无法通知到其他节点;
  • 问题 3: vtep(vxlan tunnel endpoint) 的 mac 地址保持不变,原因和容器 IP 保持不变类似。

从问题 1 可以看出,必须解决 kube-proxy/flannel/coredns 等组件的自治,才能实现网络配置的自治。如果之前边缘自治是采用重构 kubelet 来实现的话,要实现边缘网络自治就会碰到很大的麻烦,如果强行把重构的 kubelet 自治能力移植到各个网络组件 (kube-proxy/flannel/coredns),也对整个架构将是噩梦。

在 OpenYurt 中因为 YurtHub 的独立性,kube-proxy/flannel/coredns 等网络组件轻松使用 YurtHub 来实现网络配置的自治能力。因为 YurtHub 缓存了 service 等网络配置资源在 local storage,即使断网并且节点重启,网络组件仍然可以获得断网前的 object 状态以及相应的配置信息。如下图所示:

问题 2,3 和 Kubernetes core 无关,主要涉及到 cni 插件和 flanneld 的增强,后续文章中再详细介绍。

2. 多云端地址支持

公有云上的 Kubernetes 高可用部署时,多实例 kube-apiserver 前面一般都挂了一个 SLB,但是在专有云场景下或者边缘计算场景下,节点需要通过多个云端地址来访问。比如:

  • 专有云场景:因为没有 SLB 服务,用户需要需要在云端通过 VIP 方式来自行实现 kube-apiserver 的负载均衡,或者像 kubespray 那样在每个节点上部署一个 nginx 来实现多云端地址的访问;
  • 边缘计算场景: 考虑到边缘和云端之间网络的稳定性和安全性要求,某些场景下用户也通过专线和公网两种方式和云端通信,比如优先采用专线,当专线故障时能自动切换到公网通信。

YurtHub 正式考虑到了上述的需求,支持多云端地址访问。云端地址的负载均衡模式可以选择:

  • rr(round-robin): 轮转模式,默认选择该模式;
  • priority: 优先级模式,高优先级地址故障后才使用低优先级地址。

具体可以参照 YurtHub 的 LB 模块,如下图所示:

3. 节点维度的云端流控

对于一个分布式系统来说,流控都是一个无法回避的问题。原生 Kubernetes 从集群视角在 kube-apiserver 中以及从访问者视角在 client-go 库中封装了流量管控,在边缘计算场景下,client-go 的流量管控既分散又对业务有一定侵入,显然不能很好的解决流控问题。

YurtHub 在边缘可以接管不论是系统组件还是业务容器对云端访问的流量,可以很好的解决节点维度的云端流控问题。目前 YurtHub 的流控配置是:单节点上对云端的并发请求数超过 250 个时,将拒绝新的请求。

4. 节点证书轮换管理

Kubernetes 已经支持节点证书自动轮换,即当节点证书快过期前,kubelet 会自动向云端申请新的节点证书。但是在边缘计算场景下,很有可能因为边缘和云端网络的断连,造成 kubelet 将无法完成证书的轮换。证书过期后即使和云端网络连接恢复,节点证书也可能无法自动轮换,并造成 kubelet 的频繁重启。

YurtHub 在接管节点和云端通信流量时,同时也可以接管节点的证书管理。这样既解决了各类安装工具对节点证书的管理的不一致,也解决了证书过期后网络再恢复时的证书轮换问题。另外目前 YurtHub 还是 kubelet 共享节点证书,YurtHub 的独立节点证书管理功能将在近期开源。

5. 其他

YurtHub 除了前面介绍的扩展能力,还有很多有价值的能力,在此也简单介绍:

  • 节点多租隔离管理:在具备多租隔离能力的 Kubernetes 集群中,假定节点归属于某个租户,那么 YurtHub 将可以确保节点上所有云端请求都只返回节点所属租户的资源。比如说 list service 将只返回该租户的 service。而这种多租隔离能力不需要其他组件做任何修改。当然如果要实现集群内的多租隔离,需要配合相应的多组 CRD 等,详细可以参照项目 kubernetes-sigs/multi-tenancy;
  • 集群间节点迁移:某些场景下,边缘节点需要从集群 A 迁移到集群 B,常规操作是先从集群 A 下线,然后再次接入集群 B,最后在集群 B 部署节点上的应用。因为 YurtHub 对节点流量以及节点证书的接管,可以直接对 YurtHub 注入集群B的信息,让节点无损迁移到集群 B;
  • 通过域名访问云端 kube-apiserver 等等一些其他功能。

总结

  • 通过上述的扩展能力可以看出,YurtHub 不仅仅是边缘节点上的带有数据缓存能力的反向代理。而是对 Kubernetes 节点应用生命周期管理加了一层新的封装,提供边缘计算所需要的核心管控能力;
  • YurtHub 不仅仅适用于边缘计算场景,其实可以作为节点侧的一个常备组件,适用于使用 Kubernetes 的任意场景。相信这也会驱动 YurtHub 向更高性能,更高稳定性发展。

参考链接

  • kubespray: HA endpoints for K8s

OpenYurt 项目地址:https://github.com/alibaba/openyurt,欢迎大家参与共建!有疑问可加入钉钉交流群:31993519

课程推荐

为了更多开发者能够享受到 Serverless 带来的红利,这一次,我们集结了 10+ 位阿里巴巴 Serverless 领域技术专家,打造出最适合开发者入门的 Serverless 公开课,让你即学即用,轻松拥抱云计算的新范式——Serverless。

点击即可免费观看课程:https://developer.aliyun.com/learning/roadmap/serverless

“阿里巴巴云原生关注微服务、Serverless、容器、Service Mesh 等技术领域、聚焦云原生流行技术趋势、云原生大规模的落地实践,做最懂云原生开发者的公众号。”

原文链接
本文为云栖社区原创内容,未经允许不得转载。

深度解读OpenYurt:从边缘自治看YurtHub的扩展能力相关推荐

  1. 深度解读 OpenYurt:从边缘自治看 YurtHub 的扩展能力

    作者 | 新胜  阿里云技术专家 **导读:OpenYurt 开源两周以来,以非侵入式的架构设计融合云原生和边缘计算两大领域,引起了不少行业内同学的关注.阿里云推出开源项目 OpenYurt,一方面是 ...

  2. 深度解读 OpenYurt :边缘自治能力设计解析

    作者 | 新胜 阿里云技术专家 导读:OpenYurt 开源两周以来,以非侵入式的架构设计融合云原生和边缘计算两大领域,引起了不少行业内同学的关注.阿里云推出开源项目 OpenYurt,一方面是把阿里 ...

  3. OpenYurt 深度解读|开启边缘设备的云原生管理能力

    作者|贾燚星(VMware), 何淋波(阿里云) 北京时间 9 月 27 号,OpenYurt 发布 v0.5.0 版本.新发布版本中首次提出 kubernetes-native非侵入.可扩展的边缘设 ...

  4. 深度解读CDN高防防御机制,看它如何为服务器保驾护航?

    随着互联网的飞速发展,人们对服务器的要求也越来越高,CDN高防也就此应运而生.那么CDN高防它到底是什么,它又是如何为服务器提供保障的呢?下面就为大家详细的介绍下CDN高防防御网络攻击的机制. CDN ...

  5. 管理节点连接不上sql节点_华为云IEF智能边缘平台十万边缘节点管理技术深度解读学习笔记...

    华为云智能边缘平台IEF首席架构师张琦在3月27-28日举办的华为开发者大会2020(Cloud)上,深度解读了十万边缘节点的管理技术,以及如何通过云原生技术和边缘计算结合,构建边缘计算实战场景中所需 ...

  6. 赛迪顾问 | 政府大数据行业深度解读

    本文要点 ▪中国正在加速提升政府服务能力 ▪政府大数据领域的痛难点 ▪政府大数据的未来机会点 ▪赛迪建议 政府大数据行业深度解读 一.中国正在加速提升政府服务能力 2018年,随着中国数字政府和新型智 ...

  7. OpenYurt 深度解读:如何构建 Kubernetes 原生云边高效协同网络?

    作者 | 郑超 导读:OpenYurt 是阿里巴巴开源的云边协同一体化架构,与同类开源方案相比,OpenYurt 拥有可实现边缘计算全场景覆盖的能力.在之前的一篇文章中,我们介绍了 OpenYurt ...

  8. 【CV】深度了解自监督学习,就看这篇解读 !SimMIM:掩码图像建模的简单框架...

    作者丨科技猛兽 编辑丨极市平台 导读 SimMIM 是继 BEiT 之后,MSRA 又提出的一个 MIM 任务上的预训练 CV 模型.这个模型也是直接回归预测原始像素 RGB 值,而不是像 BEiT ...

  9. 从中心走向边缘——深度解析云原生边缘计算落地痛点

    作者:段嘉,新胜 云计算发展史,就是虚拟化技术的发展史.近 20 年来云计算与互联网相互促进高速发展,中心云技术成为全社会通用的基础设施.随着物联网.人工智能等技术的不断发展,尤其是产业互联网发展落地 ...

最新文章

  1. 微服务架构10个最重要的设计模式
  2. R 语言常用操作与函数汇总
  3. tkinter python 句柄_微云收藏 python tkinter.after
  4. TCP/IP及内核参数优化调优(转:https://www.cnblogs.com/jking10/p/5472386.html)
  5. Sybase identity 字段
  6. HttpServletRequest类用途
  7. python中write的用法_python中write方法是如何使用?
  8. 全国各地车牌代码整理出数据库表,直接生成表
  9. Google地图中关于根据具体坐标定位真实地理位置
  10. 尝遍裸辞各种苦,再也不敢任性裸辞了!
  11. 使用git上传代码遇到关于remote: Support for password authentication was removed on August 13, 2021.的问题
  12. nmap工具进行端口扫描
  13. 个人空间岁末大回报活动12月30日获奖名单
  14. wxpy 建群 err_code: 1 err_msg:
  15. 【JSP】EL表达式
  16. 计算机关机慢怎么解决方法,为什么电脑关机很慢|电脑关机缓慢的解决方法
  17. 整理一下个人学习前端的网站
  18. 第12章 项目沟通管理和干系人管理
  19. 华为linux磁盘空间,华为推出EROFS文件系统,磁盘性能大提速
  20. 数据中台技术汇 | CDP,线下零售顾客运营中台

热门文章

  1. mysql开窗函数over_oracle分析函数技术详解(配上开窗函数over())
  2. jieba结巴分词--关键词抽取_结巴中文分词原理分析2
  3. shell把mysql每句导出_shell实现,将mysql每个存储过程导出为单个文件_MySQL
  4. r720支持多少频率的内存吗_电脑基础知识:内存条知识大全,看完小学生都了解...
  5. python 32的值_示例解读 Python 2 和 Python 3 之间的主要差异
  6. python html转换为普通文本_将HTML表转换为可读的纯文本的Python解决方案
  7. go struct 静态函数_Go语言学习笔记(四)结构体struct 接口Interface 反射reflect...
  8. nginx 上传 文件超时设置_Ingressnginx自定义配置文件
  9. 车羊问题c语言编程,C语言-人狼羊菜问题-最容易看懂的解决方法及代码
  10. css文本行高是哪个属性_CSS中的line-height行高属性的使用技巧小结