草庐IT

大规模 IoT 边缘容器集群管理的几种架构-1-Rancher+K3s

east4ming 2023-03-28 原文

前文回顾

大规模 IoT 边缘容器集群管理的几种架构-0-边缘容器及架构简介

?️Reference:
IoT 边缘计算系列文章

Rancher + K3s

简介

  • Rancher: Kubernetes 统一管理平台, Rancher 是为采用容器的团队提供的一个完整的软件栈。它解决了管理多个 Kubernetes 集群的操作和安全挑战,同时为 DevOps 团队提供了运行容器化工作负载的集成工具。
  • K3s: 完美适配边缘, K3s 是一个高可用的、经过认证的 Kubernetes 发行版,设计用于无人值守、资源受限的远程地点或物联网设备内的生产工作负载。K3s 被打包成一个<60MB的二进制文件,减少了安装、运行和自动更新一个生产型 Kubernetes 集群所需的依赖性和步骤。ARM64 和 ARMv7 都被支持,二进制文件和多架构镜像都可以使用。K3s 在小到 Raspberry Pi,大到 AWS a1.4xlarge 32GiB 服务器上都能很好地工作。

参考架构

此方案借助 Kubernetes 的生态,并且 100%开源,无锁定,方便插件扩展,也提供了 UI 入口以提供良好的用户体验。 并且核心完全是基于 Kubernetes, 具备非常好的群众基础。

  • “云”中部署一套 Rancher 集群,Rancher 负责管理下属所有的“边”中的 K3s 集群,Rancher 集群中同时可以部署云端的业务应用,负责和边缘侧业务系统同步, 以及下发数据或指令。
  • “边”设备中安装轻量化操作系统 MicroOS(一种不可变 OS,在本文不是重点,不展开),以及 K3s,K3s 中部署“边”的业务应用,供“端”连接使用。
  • “端”作为业务应用的最边缘端,通过网络连接“边”,完成业务组网,形成以“边”为中心的业务应用。

方案优点

  • 云边协同: 云侧 Rancher 与边缘侧 K3s 集群之间网络(通过 rancher-cluster-agent 建立 websocket 隧道)连通时 ,可通过 Rancher 管理下属所有的 K3S 集群,如观测各个 K3s 集群运行状态,其上业务应用运状态等; 同 时 Rancher 所在集群中部署的云端业务应用可向边缘侧业务应用下发数据或指令 。
  • 边缘自治: 无论网络如何,边缘侧 K3s 集群均可以自行运行(就是一套精简的 K8s), 无需依赖云端 Rancher, 实现运行环境的边缘自治;其上运行的边缘侧业务应用如果不依赖云端应用即可正常运行,则可以做到业务的边缘自治。
  • 轻量化 K8s: 使用轻量化的 K8s 解决方案 K3s 作为运行环境,可在硬件资源紧张的情况下提供基于 K8s 的容器服务,使业务享受 K8s 的技术红利。
  • 100%开源: 100%开源,无锁定
  • 原生 Kubernetes 生态: 借助完全兼容 Kubernetes 的生态,方便插件扩展,且开箱即用提供了:flannel, load balancer service, Traefik, coredns...
  • UI 精美: 提供了 UI 入口以提供良好的用户体验
  • GitOps: Rancher 默认集成 GitOps 工具 - Fleet, 提供 GitOps 自动化体验。
  • 运维简单: Rancher 和 K3s 文档齐全,提供很多方便的运维自动化工具。
  • 完整的企业功能: 如:认证、鉴权、单点登录、API...

方案缺点

  • K3s 相比纯容器占用资源还是略多
  • rancher-cluster-agent 占用资源较多: 在我的使用经验中,该 agent 可能占用 > 1G 内存的资源,这在边端是难以承受的。
  • 网络复杂且较弱: K3s CNI 默认是 flannel, 对于边缘复杂的网络情况没有做进一步的优化和适配。如果边是 K3s Server, 端是 K3s Agent, 边端网络也不稳定,对于这种情况 K3s 基于原生 K8s 网络的能力是无法做到很好应对的。相比 Kubeedge, 边缘网络适配能力弱;相比纯容器方案,flannel/load balancer service, Traefik, coredns 等又较为复杂。

继续阅读

  1. 大规模 IoT 边缘容器集群管理的几种架构-2-HashiCorp 解决方案 Nomad
  2. 大规模 IoT 边缘容器集群管理的几种架构-3-Portainer
  3. 大规模 IoT 边缘容器集群管理的几种架构-4-Kubeedge
  4. 大规模 IoT 边缘容器集群管理的几种架构-5-总结

参考文档

三人行, 必有我师; 知识共享, 天下为公. 本文由东风微鸣技术博客 EWhisper.cn 编写.

有关大规模 IoT 边缘容器集群管理的几种架构-1-Rancher+K3s的更多相关文章

  1. ruby - Ruby 中的大规模调度 - 2

    我需要一个用于大型动态任务集合的调度程序。目前我正在查看resque-scheduler,rufus-scheduler,和clockwork.如果您提供有关选择使用哪一个(或其他替代方案)的建议,我将不胜感激。一些细节:有大量要定期执行的任务(最多100K)。最短执行周期为1h。新任务可能会不时出现。现有任务可能会更改或删除。调度延迟最小化在这里不是关键任务(可扩展性和可持续性最重要)。任务执行不是繁重的操作,可以轻松并行。总结,我需要类似cron的Ruby项目,它可以处理大量动态变化的任务集合。更新:我花了一天时间尝试调度库,现在我想简单总结一下新获得的经验。我已经不再关注Cloc

  2. 1.腾讯轻服务器K3S环境配置 - 2

    1.腾讯轻服务器K3S系统安装前端时间买了三年腾讯轻服务器,现在准备学习下K8S,但是服务器资源少,退而求其次的使用腾讯轻服务器默认的K3S系统。1.获取按照提示,获取token,2.防火墙开启9090端口,输入url:http://公网IP:9090登录;3.开启SSH远程连接:创建密钥,默认下载文件,windows本地重命名增加后缀.pub,CRT通过公钥进行SSH登录。2.Kubernetes-dashboard 输入url:http://公网IP:9090,可以看到相关菜单点击右上角“+”,可以创建yaml文件进行服务部署 3.后台查看K3S相关信息[root@VM-16-5-cent

  3. 中国民用飞机制造行业市场现状规模及发展战略规划报告2021-2027年 - 2

    中国民用飞机制造行业市场现状规模及发展战略规划报告2021-2027年详情内容请咨询鸿晟信合研究院!【全新修订】:2022年2月【撰写单位】:鸿晟信合研究研究【报告目录】第1章:中国民用飞机制造行业发展综述1.1民用飞机制造行业概述1.1.1民用飞机的概念1.1.2飞机制造的概念1.1.3民用飞机的分类1.2民机制造行业周期特性1.2.1影响行业周期的因素(1)GDP增速分析(2)运量增量分析(3)飞机更替分析(4)航空公司获利水平1.2.2行业现阶段周期分析1.2.3行业现阶段景气分析1.3民机制造信息化分析1.3.1信息化技术应用状况分析(1)MDO技术应用分析(2)供应链协同研发分析(3

  4. 在保持文本不透明度的同时,可以使用仅使用HTML制作一个透明的容器? - 2

    我想在保持文本/图像不透明的同时使我的容器背景透明。只能使用HTML做到这一点吗?这是我的代码:看答案我看到了您的问题,如果我正确理解您,我想我知道您可以做什么。我注意到的一件事是,在我进一步走之前,看起来您正在使用引导程序代码。如果您更改了可能与此相关的CSS样式表,则可能会更好,更有效,也可能不会破坏整体代码的其他元素,但是让我们看看我的解决方案是否对您有效。基本上您想做的是:1)在您的HTML中编写一个“样式”标签,然后在其中放入样式(CSS)属性(您可以将其放入HTML代码的标题中以更好地跟踪它)。2)使用提供背景颜色的“RGBA”格式,并将其不透明度为“0”作为代码段的第四值。因此,

  5. ruby-on-rails - 使用 AWS Elastic Beanstalk 和 Ruby 容器设置私有(private) Github 访问 - 2

    经过recenttutorial关于使用Git为Ruby部署设置AWSElasticBeanstalk,我只是从我的CI服务器设置了一个ElasticBeanstalk环境。但是,应用程序无法启动。我查看日志发现bundleinstall失败并显示一条错误消息。Fetchinggit@github.com:example/private-repository.gitHostkeyverificationfailed.fatal:Theremoteendhungupunexpectedly[31mGiterror:commandgitclone'git@github.com:exampl

  6. vue2+element-ui,el-aside侧边栏容器收缩与展开 - 2

    一、概览实现效果如下:二、项目环境1、nodejs版本node-vv16.16.02、npm版本npm-vnpmWARNconfigglobal`--global`,`--local`aredeprecated.Use`--location=global`instead.8.15.03、vue脚手架版本vue-V@vue/cli5.0.8三、创建vue项目1、创建名为vuetest的项目vuecreatevuetest选择Default([Vue2]babel,eslint)  2、切换到项目目录,启动项目cdvuetestnpmrunserve 3、使用浏览器预览 http://localh

  7. FLINK 在蚂蚁大规模金融场景的平台建设 - 2

    摘要:本文整理自蚂蚁集团高级技术专家、蚂蚁集团流计算平台负责人李志刚,在FlinkForwardAsia2022平台建设专场的分享。本篇内容主要分为四个部分:主要挑战架构方案核心技术介绍未来规划点击查看直播回放和演讲PPT一、主要挑战1.1金融场景业务特点介绍第一部分是时效性。金融场景追求时效性,特别是一些风控类的业务。首先,无论是宕机还是其他风险情况,对业务的影响需要在秒级以内。其次,业务逻辑经常变更,不能影响时效性。最后,金融业务上下游依赖特别复杂,需要保证时效性不受到影响。第二部分是正确性。金融数据在任何情况下,计算出来数据必须保证100%正确。不能因为出现任何故障或者其他问题导致数据出

  8. ruby-on-rails - 为什么 twitter 不能像 facebook 这样的网站那样通过添加服务器来扩展规模? - 2

    我一直在寻找一个解释,说明为什么Twitter必须将其部分中间件从Rails迁移到Scala。是什么阻止了他们通过在用户群扩大时添加服务器来像facebook那样扩展。更具体地说,Ruby/Rails技术如何阻止Twitter团队采用这种方法? 最佳答案 并不是说Rails不能扩展,而是Ruby(或任何解释语言)中对“实时”数据的请求不能扩展,因为它们在CPU和内存利用率方面都比它们的成本高得多编译语言对应物。现在,如果Twitter是一种不同类型的服务,它拥有同样庞大的用户群,但提供的数据更改频率较低,那么通过缓存,Rails可能

  9. ruby - Ruby 有像栈、队列、链表、映射或集合这样的容器吗? - 2

    我在网上查了几个Ruby教程,他们似乎什么都用数组。那么如何在Ruby中实现以下数据结构呢?堆栈队列链表map组 最佳答案 (从评论中移出)好吧,通过限制堆栈或队列方法(push、pop、shift、unshift),数组可以是堆栈或队列。使用push/pop提供LIFO(后进先出)行为(堆栈),而使用push/shift或unshift/pop提供FIFO行为(队列)。map是hashes,和一个Set类已经存在。您可以使用类实现链表,但数组将使用标准数组方法提供类似于链表的行为。 关

  10. javascript - 如何使用 Paho MQTT javascript 客户端连接 IBM Watson IOT? - 2

    我正在尝试使用PahoMQTTJavascript客户端连接IBMWatsonIoT平台,如以下示例代码中所述。varclient=newMessaging.Client("myOqgId.messaging.internetofthings.ibmcloud.com",8883,"myclientid_"+parseInt(Math.random()*100,10));//Getscalledifthewebsocket/mqttconnectiongetsdisconnectedforanyreasonclient.onConnectionLost=function(respons

随机推荐