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

头图.png

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

导读: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。其架构图如下:

1.png

同时在介绍 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.png

问题 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.png

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 等技术领域、聚焦云原生流行技术趋势、云原生大规模的落地实践,做最懂云原生开发者的公众号。”

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

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

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

相关文章

HTTP系列学习(笔记一):一文带你详解HTTP协议

1、什么是协议 计算机中的协议和现实生活中的协议是一样的,一式多份,彼此都遵从共同的一个规范,这个规范就可以称之为协议。 2、HTTP协议的工作流程 3、HTTP请求信息和响应信息的格式 请求: 响应: 常见状态码&…

阿里高级技术专家总结6年来的成长和收获

7月9日 19:00-21:30 阿里云开发者社区首场“Offer 5000”直播开启!15位团队技术大牛在线招人,更有《阿里云技术面试红宝书》助你拿下Offer!点击图片或戳我查看详情和投简历 作者 | 箫逸 阿里文娱高级技术专家 导读:转眼 2020 已…

一目了然的 Docker 环境配置指南

来源 | Datawhale作者 | Tianchi头图 | 下载于视觉中国Docker是一个开源的引擎,可以轻松的为任何应用创建一个轻量级的、可移植的、自给自足的容器。开发者在笔记本上编译测试通过的容器可以批量地在生产环境中部署,包括VMs(虚拟机&#xff0…

阿里本地生活EMonitor根因分析大揭秘

背景 阿里集团针对故障处理提出了“1/5/10”的目标-- 1 分钟发现、5 分钟定位、10 分钟恢复,这对我们的定位能力提出了更高的要求。 EMonitor 是一款集成 Tracing 和 Metrics、服务于饿了么所有技术部门的一站式监控系统,其覆盖了 前端监控、接入层监…

uniapp 打包安卓 Android 抖音app 前端篇~01

文章目录一、配置1. 修改后端服务地址2. 基础配置3. App图标配置4. App启动页面配置5. App模块配置二、发行2.1. 云打包2.2. 云打包配置2.3. 下载app三、安装apk3.1. 下载apk3.2. 安装apk3.3. 打开app3.4. 同意协议3.5. 前端页面效果一、配置 1. 修改后端服务地址 2. 基础配置…

踩着七彩祥云来接你的不一定是意中人,也可能是阿里云

你今天点外卖了吗?你今天剁手了吗? 你每次在饿了么和淘宝上的刷刷刷、点点点 都有阿里云服务器ECS在云端疯狂计算 ——阿里云ECS,支撑了阿里经济体全面上云—— ---- 天猫双11核心系统100%上云 阿里云征服史上最大流量洪峰 饿了么100%迁至阿…

深度思考 Spring Cloud + Alibaba Sentinel 源码原理

随着微服务的流行,服务和服务之间的稳定性变得越来越重要。Sentinel 以流量为切入点,从流量控制、熔断降级、系统负载保护等多个维度保护服务的稳定性。作者 | 向寒 / 孙玄来源 | 架构之美头图 | 下载于视觉中国关于 Sentinel 1、理论篇以下是经过多年分…

WORDPRESS付费会员插件Paid Memberships Pro v2.12.5 – Plugin + All Addons

WORDPRESS付费会员插件Paid Memberships Pro v2.12.5 – Plugin All Addons 简介: Paid Memberships Pro是一款功能强大的会员订阅和内容限制管理插件,适用于WordPress网站。它提供了丰富的特性和工具,帮助网站所有者轻松地创建和管理付费…

云计算与星辰大海的结合

云栖号资讯:【点击查看更多行业资讯】 在这里您可以找到不同行业的第一手的上云资讯,还在等什么,快来! 今年在疫情的影响下,各国的经济发展都遇到了一些困难,甚至除中国以外的主要经济体都会进入了负增长的…

uniapp 打包安卓 Android 抖音app 后端篇~02

文章目录1. 中间件配置2. 云短信配置1. 中间件配置 2. 云短信配置

从开源自治到微服务云化,用这剂良药提升微服务幸福感

前言 微服务发展至今,因其高内聚、低耦合等特性,以及诸多开源方案带来的开放性,已成为提升架构效率的最佳实践之一。当一项技术或一个框架成为事实标准之后,我们会把更多的注意力聚焦在运维效率和应用可用性的持续提升上。相信下…

uniapp 打包安卓 Android 抖音app 前后端调试篇~03

文章目录1. 未登录首页浏览短视频2. 发布视频-云短信登录3. 发布选择视频4. 上传短视频到云存储5. 测试发布视频6. 个人中心查看发布视频7. 首页查看刚发布视频8. 个人中心1. 未登录首页浏览短视频 在未登录的情况下,首页可以看短视频 2. 发布视频-云短信登录 点…

俯瞰云原生,这便是供应层

来源 | K8sMeetup社区作者 | Catherine Paganini,Jason Morgan头图 | 下载于视觉中国在都在说云原生,它的技术图谱你真的了解吗?中,我们对 CNCF 的云原生技术生态做了整体的介绍。从本篇开始,将详细介绍云原生全景图的…

进击的Kubernetes调度系统(一):SchedulingFramework

作者:王庆璨 张凯 前言 Kubernetes已经成为目前事实标准上的容器集群管理平台。它为容器化应用提供了自动化部署、运维、资源调度等全生命周期管理功能。经过3年多的快速发展,Kubernetes在稳定性、扩展性和规模化方面都有了长足进步。 尤其是Kubernete…

HTTP系列学习(笔记三):HTTP的发展历程思维导图

HTTP(HyperText Transfer Protocol)是万维网(World Wide Web)的基础协议。 0.9版本: 1.0版本: 1.1版本: 2.0版本: 2.0进化版本: 为了便于浏览记忆,整理了一份…

为什么说Serverless是云的未来?

作者 | 不瞋 阿里云高级技术专家 每隔几年,IT 界就会出现新突破性的进展。回望整个计算机技术发展史,我们会发现“抽象、解耦、集成”的主题贯穿其中。产业每一次的抽象、解耦、集成,都将创新推向新的高度,也催生出庞大的市场和…

(企业级)HBuilder X 安装蓝叠安卓模拟器

文章目录1. 下载蓝叠模拟器2. 设置 adb链接和root3. 设置竖屏4. 设置uni-app adb 环境变量5. 配置 HBuilderX adb5. 运行6.效果图7.常见模拟器1. 下载蓝叠模拟器 https://www.bluestacks.cn/ 2. 设置 adb链接和root 3. 设置竖屏 4. 设置uni-app adb 环境变量 在 HBuilderX…

小困惑,关于 Serverless 函数计算的字体安装

来源 | Serverless作者 | 孙飞宇头图 | 下载于视觉中国前言首先介绍下在本文出现的几个比较重要的概念:函数计算(Function Compute):函数计算是一个事件驱动的服务,通过函数计算,用户无需管理服务器等运行情…

一文带你了解MySQL中的各种锁机制!

云栖号资讯:【点击查看更多行业资讯】 在这里您可以找到不同行业的第一手的上云资讯,还在等什么,快来! MySQL中的锁机制,按粒度分为行级锁,页级锁,表级锁,其中按用法还分为共享锁和排他锁. 行级锁 行级锁是Mysql中锁…

for循环中let,var 的经典面试题:for循环中 console.log(i)详解

同学们在刚准备面试时肯定见过一道经典面试题&#xff1a; for(var i 0; i < 10; i) {setTimeOut(function(){console.log(i)}) } // 输出 10 10 10 10 10 10 10 10 10 10for(let i 0; i < 10; i) {setTimeOut(function(){console.log(i)}) } // 输出 0 1 2 3 4 5 6 7…