赞
踩
MEC场景下的EdgeGallery是让资源边缘化,实时完成移动网络边缘的业务处理,MEC场景下的EdgeGallery让开发者能更便捷地使用 5G 网络能力,让5G能力在边缘触手可及。
EdgeGallery是由华为、信通院、中国移动、中国联通、腾讯、九州云、紫金山实验室、安恒信息等八家创始成员发起的一个MEC边缘计算开源项目。目的是打造一个符合5G 边缘“联接+计算”特点的边缘计算公共平台,实现网络能力(尤其是5G网络)开放的标准化和MEC应用开发、测试、迁移和运行等生命周期流程的通用化。
EdgeGallery 平台采用 Apache License 2.0 作为开源代码协议,并已在 Gitee 发布第一批种子代码。目前,EdgeGallery 社区已在深圳和西安建立了两个自动化测试中心,并将于2020年底在北京、南京、上海、东莞等地陆续建成 5 个场景化测试验证中心。
EdgeGallery要解决的是5G MEC边缘计算平台的标准不统一带来的生态碎片化,产业规模做不大的问题。
MEC本质上是一个面向开发者的ICT基础设施市场,竞争力体现在为应用开发者提供的软件基础平台和工具链的丰富程度,市场结果体现在应用生态的丰富程度。如果没有统一的MEC平台框架,会造成不同运营商/厂商系统的不兼容。应用和解决方案开发者往往需要针对不同平台进行应用的定制开发,这导致巨大的学习成本和开发成本,结果就是大部分开发者无法承受这样的成本而放弃,MEC的应用生态难以发展。通过开源来打造一个公共的MEC平台和相关工具链,就是为了让整个电信产业形成统一的MEC标准,一起做大MEC的市场空间。
EdgeGallery的特性:
EdgeGallery的原生架构设计目的,是为了解决应用复制难、开发门槛高、商业变现难以及行业部署多样化四大问题,总共分为三个功能态,包含应用设计态、应用分发态、应用运行态,孵化出四个子系统:开发者平台、应用仓库、管理平面编排器、MEP平台。
开发者平台:
应用设计平台:
APP 仓库:
编排管理(MECM):
边缘平台(MEP):
下图中的边缘节点和中心节点代表的都是集群,EdgeGallery部署分为中心和边缘两部分,中心集群部。EdgeGallery的管理面组件,包括Developer、AppStore、ATP和MECM几个核心组件,边缘集群部署MEPM和MEP组件,业务通过中心集群的EdgeGallery管理面使用Mm3接口下发到边缘集群的MEPM组件,由于业务运行在自己的边缘集群中,因此拥有一定的边缘自治能力。
EdgeGallery各个组件的前端界面基本使用Vue.js渐进式JavaScript框架开发,MEO相关组件使用Java语言开发,MEPM相关组件以及MEP基本使用Go语言开发。组件的详细描述如下:
提供开源开发者统一入口,包括开发流程、开发工具、开放的API能力、集成测试验证,开发者交流论坛等,使开发者更加方便快捷的开发应用并集成到edgegallery平台。
Developer分为前后台两个部分,developer-be是后台部分,提供主要功能接口供前台或其他三方系统调用,developer-fe是前台部分,提供界面展示。其架构设计如下图所示:
Service Center 是一个服务注册中心,和其他注册中心一样,其主要作用在于解决服务的注册与发现,即动态路由的问题。
能力中心是EdgeGallery平台对外提供平台能力和生态能力的API管理中心,开发者在完成应用开发后,如果需要将这个APP的能力开放给其他用户使用,可以发布成为生态应用,开发者也可以使用能力中心的API进行二次开发
EdgeGallery会将该APP的对外接口提供给其他开发人员使用,并且将该服务通过MECM部署在需要的边缘侧,供其他APP能够使用,其API管理功能具体包括以下几个方面:
AppStore是开发者发布和上线App应用的边缘应用市场,由Developer平台开发的边缘应用,经过ATP测试后可以直AppStore 是 EdgeGallery 的应用仓库模块,主要负责5G边缘应用的存储与管理等工作,
AppStore分为前后台两个部分,AppStore BE是后台部分,提供主要功能接口供前台或其他三方系统调用,AppStore FE是前台部分,提供界面展示。
EdgeGallery中的AppStore进行了分权控制,不同的用户角色包含不同的特性。
管理员用户包含 应用上传、应用测试、应用发布、应用查询、应用评论、下载/删除所有应用、外部仓库管理、应用推送、应用拉取、消息管理、操作分析、应用管理、沙箱管理、应用在线体验、应用同步、应用变现、文档中心。
租户用户包含 应用上传、应用测试、应用发布、应用查询、应用评论、下载/删除本用户应用、应用在线体验、应用变现、文档中心。
游客用户包含 应用查询、文档中心。
应用测试服务对于应用包,提供了检测的功能,只有通过了应用测试服务的测试用例,才能将应用包发布到应用商城中。应用测试服务分为前后台两个部分,atp是后台部分,提供主要功能接口供前台或其他三方系统调用,atp-fe是前台部分,提供界面展示。
应用测试服务目前分为管理面功能和用户面功能:
EdgeGallery中ATP的整体框架流程如下,应用测试平台主要对应图中的认证测试部分。
补充:http://docs.edgegallery.org/zh_CN/latest/Projects/ATP/ATP_Overview.html
MECM在边缘库架构中提供应用程序的编排和生命周期管理。 MECM 提供各种功能,包括应用程序载入、通过基于部署策略选择适当边缘的应用程序编排、应用程序生命周期管理、基于分析和策略的应用程序归位和放置、应用程序/边缘资源监控,并提供统一的拓扑视图。
应用程序包管理器 (APM) 使 edgegallery 能够通过从应用商店下载应用程序包来将应用程序分发/装载到边缘存储库。
Application Orchestrator(APPO)主要负责MEC应用编排,通过在保持生命周期状态的同时执行指定的工作流,请求对边缘主机上的MEC应用进行生命周期管理。编排工作流使用 Camunda 建模工具建模,工作流由 Camunda 引擎执行。
Inventory 提供边缘主机上部署的应用程序和应用程序配置的实时视图。I
North提供获取主机列表和应用分布部署的接口。目前主要帮助Appstore 实现订阅功能。
LCM 控制器负责 MEC 应用程序生命周期管理操作,方法是通过k8splugin或osplugin向VIM发送请求。
K8s Plugin 负责 Kubernetes 基础设施上的 MEC 应用生命周期管理操作。 K8s 插件使用 helm 客户端执行应用生命周期管理操作。
APP Rule Manager 负责通过向 MEP 发送应用规则配置来配置应用规则。应用规则配置包括需要配置的流量规则和DNS。
资源控制器Resource Controller是针对Openstack开发出的新功能,对 flavor、网络、虚拟机等资源执行 LCM 操作.
随着物联网、人工智能、云计算、移动互联网、大数据和大视频等产业技术的蓬勃发展,以及围绕ICT开放生态的成熟,网络资源和计算能力逐步朝着资源集中化和边缘化方向演进。
多接入边缘计算MEC(Multi-access Edge Computing)为典型的资源边缘化模式,在移动网络边缘提供IT服务环境和云计算能力,实时完成移动网络边缘的业务处理。MEC将随着CT和IT深度融合趋势,物联网的兴起、人工智能技术的发展,以及企业对生产数据的安全性、实时性的诉求,持续快速的发展。
EdgeGallery MEP项目旨在打造一个边缘侧的开源、开放的参考MEP平台。在MEC场景下,海量的应用将运行在网络边缘进行业务处理,并且应用能够使用网络的开放能力,应用之间也能够互相进行能力提供和消费。
图中涉及的MEP关联主要接口有:
对于应用App来说,Mp1是APP与MEP交互最重要的接口,APP能通过Mp1将自身服务注册到MEP平台,同时也能够通过服务发现调用MEP对外提供的服务。
对于MEP提供的对外API接口来说,主要包含 MEP-server 和 MEP-auth 两个主要功能模块。MEP server 接口分为两类,一类为遵循 ETSI MEC 011 v2.1.1 标准的 Mp1 接口,主要为 App 提供服务注册发现,App 状态通知订阅,Dns 规则获取等功能;另一类为 Mm5 接口,主要为 MECM/MEPM 提供配置管理功能。MEP auth 目前主要作为鉴权模块,为 App 提 供 token 申请发放功能。
模块名称 | 功能 | 详细描述 |
MEP-auth | App鉴权 | 提供token申请接口,APP可以基于AK/SK签名算法,向MEP-auth提供正确的签名,获得token,然后通过该token访问MEP-server相关接口。 |
MEP-auth | API网关提供配置功能 | 首先对API网关(kong)进行初始化
MEP-auth在初始化kong过程中开启的插件包括:
|
MEP Server | 服务治理功能 | MEP提供服务注册,更新,删除,查询相关API接口。应用能够通过LDVS-MEP进行服务的注册,更新,删除,查询。 |
EG-LDVS | 应用集成 | LDVS MEP管理应用的服务,应用需要将其服务注册到MEP中,MEP-Agent作为适配器,将服务信息(包括应用实例ID)导入给应用,同时提供配置的方式将应用的服务注册到MEP中。 |
DNS Srever 特性
DNS 配置由 MECM 模块在启动期间创建,或直接从 OSS 创建。DNS 管理支持创建、更新、查询和删除操作。
MEC 可以查询为其创建的 DNS 配置,并可以激活或停用相同的配置。可以通过修改 DNS 配置的状态来执行激活或停用。
UE中的设备应用程序可以查询DNS服务器的域名解析。
详见https://docs.edgegallery.org/zh_CN/latest/Projects/MEP/MEP_Features.html#dns-server
User Management模块是为EdgeGallery项目提供用户管理的基本能力,包括用户注册/登录/权限认证等功能。为AppStore/开发者平台/MECM/ATP提供统一的用户鉴权和认证服务。
User-management模块主要包含四个模块:
User-mgmt是EdgeGallery的用户管理模块:
Kubernetes 是一个可移植、可扩展的开源平台,用于管理容器化工作负载和服务,有助于实现声明式配置和自动化,有一个庞大、快速增长的生态系统。Kubernetes 服务、支持和工具广泛可用。
节点是K8s中最小的计算硬件单元,可以是一个虚拟机或者物理机器,取决于所在的集群配置。Kubernetes 通过将容器放入在节点上运行的 Pod 中来执行工作负载。
Kubernetes集群由Master节点和Node节点组成,Master节点主要负责集群的控制,对pod进行调度、令牌管理等功能,Node节点主要负责干活,启动和管理容器。通过Master节点管理一个高度可用的计算机集群,这些计算机连接起来作为一个单元工作,实现集群访问的功能。Kubernetes 会在内部创建一个 Node 对象作为节点的表示。
Node节点在计算节点上部署容器化应用程序,无需将它们专门绑定到某个计算机上,由集群自动的在各个节点上分发和调度应用容器,实现计算节点扩缩容的功能。
Kubernetes集群的整体架构图
下图是一个Kubernetes集群的整体架构图,整个集群由一个Master节点和多个Node节点构成,整个集群的对外交互均通过KubernetesAPI Server完成。实际生产环境中一般部署多个Master节点以确保集群的稳定性和高可靠性。
节点组件
在Kubernetes集群中,Pod是所有业务类型的基础,也是Kubernetes管理的最小单位级,它是多个容器的组合。这些容器共享存储、网络和命名空间,以及如何运行的规范。在Pod中,所有容器都被统一安排和调度,并运行在共享的上下文中。对于具体应用而言,Pod是它们的逻辑主机,Pod包含业务相关的多个应用容器。
Kubernetes提供的默认健康检查能检测Pod内Pid为1的进程的运行状态,Kubernetes会根据Pod设置的重启策略决定在进程退出后是否需要重启Pod。
liveness和readiness探针能执行Pod内存在的某些指令探测Pod内进程提供的服务是否正常。探测的指令和接口一般由业务方提供。liveness在探测失败一定次数后会根据重启策略决定是否重启Pod,而readiness在探测失败一定次数后会退出负载均衡组。
如下图是Pod的故障迁移图。
如图 在节点控制器和副本控制器的共同作用下,当集群中一个Node节点发生故障,会驱逐该节点上所有Pod,该节点上的Pod状态被置为Terminating。此时Running状态的Pod副本数量发生变化,副本控制器会在其他节点上启动新的Pod来补足副本数。当故障的Node恢复,此时Running中的Pod副本数量已经满足设置的值,故障恢复后的Node上Terminating的Pod会被副本控制器删除。
Kubernetes持久化存储方案分为:配置资源存储、本地存储和网络存储。
将Kubernetes特定类型的配置资源对象在创建Pod时将其从Etcd下载到宿主机后映射为目录或文件,主要有:
这两者都是存储在Etcd数据库中,在任意主控节点使用kubectl客户端生成上述资源后,可供整个集群任意节点使用。
相较于本地存储,采用网络持久化存储可解耦存储和集群,对存储设备的维护不会影响到集群,同时网络存储还有存储容量大、数据有限制共享、信息充分利用、数据可靠性高、安全性高、数据管理的简单化和统一化等特点,另外网络存储通常都具有较强的扩展性。
NFS是网络文件系统Network File System的缩写,NFS服务器可以让PC将网络中的NFS服务器共享的目录挂载到本地的文件系统中。
上图为存储的存在形式:
Kubernetes 集群是一组用于运行容器化应用的节点计算机。Kubernetes 集群能够在内部或云端跨一组机器(无论是物理机还是虚拟机)调度和运行容器。
主要是为命名空间配置默认的内存/CPU请求和限制。
Kubernetes API Server通过一个名为kube-apiserver的进程提供服务,该进程运行在Master节点上。如所示,kube-apiserver接受来自集群外部和集群内部的客户端调用。
外部Client主要为常用的命令行工具kubectl、Kubernetes官网提供的SDK以及RESTful API。
内部Client主要为集群控制面kube-controller-manager、kube-scheduler、kube-proxy、kubelet以及数据面的其他Pod。
为了能够更好的满足业务需求,当现有集群环境无法满足后续的业务运行需求,此时可以对计算节点进行扩容,新增计算节点。在计算节点上部署容器化应用程序,无需将它们专门绑定到某个计算机上,由集群自动的在各个节点上分发和调度应用容器,实现计算节点扩缩容的功能。
通过kubeadm命令实现计算节点的扩容:
在新节点上安装Docker和kubernetes环境,在Master节点生成用于验证加入集群的令牌(token),查看生成的token并获取其sha256编码hash值,在新节点执行kubeadm join命令加入集群,在Master节点查看集群当前节点状态,判断新Node是否加入成功。
控制面数据面分离,控制节点物理机宕机时,从而不影响计算节点上数据面上业务的运行。
利用Kubernetes提供的亲和性和反亲和性功能来实现Pod的高级调度。就是在编写Pod部署使用的yaml文件时,设定相应的调度策略,集群会根据调度策略中对label的约束条件来调度Pod。
主要分为两类,Node亲和策略和Pod亲和策略(Pod策略中又分为亲和和反亲和),分别针对Node的label和已经运行的 Pod上 的label。
Kubernetes中主要的亲和性/反亲和性调度策略如下图所示:
同时,每种调度策略都有以下两个参数,分别控制硬亲和和软亲和:
容器云平台日志模块由Fluentd,Elasticsearch和Kibana组成:
获取Pod日志文件、过滤和转换日志数据,然后将数据传递到 Elasticsearch集群,在该集群中对其进行索引和存储,并提供一个功能强大的数据可视化 Dashboard。
日志模块收集的日志包括:
Kubernetes日志收集架构图如图所示:
利用DaemonSet来让Fluentd Pod在每个Node上运行,将日志文件搜集备份存储到宿主机目录并发送到Elasticsearch,在Kibana提供的webui中进行索引查看。
DaemonSet 是Kubernetes的一种资源类型,它确保全部Node上运行一个Pod的副本。当有Node加入集群时,也会为他们新增一个Pod。当有Node从集群移除时,这些 Pod 也会被回收。
容器云平台Kubernetes方案监控模块使用Prometheus方案。Prometheus(普罗米修斯)是一个开源系统监控和警报工具,项目拥有一个非常活跃的开发者和用户社区。Prometheus 制定了一套监控规范,符合这个规范的样本数据可以被 Prometheus 采集并解析样本数据。Exporter 在 Prometheus 监控系统中是一个采集监控数据并通过 Prometheus 监控规范对外提供数据的组件,针对不同的监控对象可以实现不同的 Exporter,这样就解决了监控对象标准不一的问题。从广义上说,所有可以向 Prometheus 提供监控样本数据的程序都可以称为 Exporter。
主要功能
Kubernetes的Prometheus监控方案:
KubeSphere 将 前端 与 后端 分开,实现了面向云原生的设计,后端的各个功能组件可通过 REST API 对接外部系统。 KubeSphere 无底层的基础设施依赖,可以运行在任何 Kubernetes、私有云、公有云、VM 或物理环境(BM)之上。 此外,它可以部署在任何 Kubernetes 发行版上。
除了针对 Kubernetes 资源管理之外,还提供了统一的集群管理、包含日志、审计、监控在内的强大的可观测性等许多附加功能。同时提供可插拔组件的部署方式,既满足了功能多样性,又满足了部署的灵活性需求。
KubeSphere 很好的集成了 DevOps 自动化流程,而 DevOps 自动化流程是提高软件交付速度、保障质量和可靠性的最佳实践方法。
KubeSphere 整体组织结构分为前端、后端,以及基础设施三层。
kubesphere是 多个组件灵活开发,实现多维管控并且降低了运维难度。
主要组件有:
下面的表格列出了KubeSphere的所有可插拔组件:
配置项 | 功能组件 | 描述 |
alerting | KubeSphere告警系统 | 可以为工作负载和节点自定义告警策略。当达到某个指标的预定义阈值时,会向预先配置的收件人发出告警(例如,邮件和 Slack、钉钉)。 |
auditing | KubeSphere审计日志系统 | 提供一套与安全相关并按时间顺序排列的记录,记录平台上不同租户的活动。 |
devops | KubeSphere DevOps 系统 | 基于 Jenkins 提供开箱即用的 CI/CD 功能,提供一站式 DevOps 方案、内置 Jenkins 流水线与 B2I & S2I。 |
events | KubeSphere事件系统 | 提供一个图形化的 Web 控制台,用于导出、过滤和警告多租户 Kubernetes 集群中的 Kubernetes 事件。 |
logging | KubeSphere日志系统 | 在统一的控制台中提供灵活的日志查询、收集和管理功能。可以添加第三方日志收集器. |
networkpolicy | 网络策略 | 可以在同一个集群内部之间设置网络策略(比如限制或阻止某些实例 Pod 之间的网络请求)。 |
kubeedge | KubeEdge | 为集群添加边缘节点并在这些节点上运行工作负载。 |
openpitrix | KubeSphere应用商店 | 基于 Helm 的应用程序商店,允许用户管理应用的整个生命周期。 |
servicemesh | KubeSphere服务网格 (基于 Istio) | 提供细粒度的流量治理、可观测性、流量追踪以及可视化流量拓扑图。 |
其中配置项指的是在 cluster-configuration.yaml 文件中更改配置项所对应的内容(false改为true),以启用相应的插件,当需要卸载的时候需要用到Kubernetes命令行工具Kubectl。
可观测功能的可插拔组件
日志可以帮助更好地了解集群内部和工作负载内部发生的事情。日志对于排除故障问题和监控集群活动特别有用。KubeSphere 基于租户的日志系统中,每个租户只能查看自己的日志,从而可以在租户之间提供更好的隔离性和安全性。
启用日志系统的步骤如下:(以下组件的启用均是在Kubenetes上安装)
安装后成功后,还要以admin用户的身份登录控制台,YAML 文件中,搜索 logging
,将 enabled
的 false
改为 true
。
KubeSphere 审计日志系统提供了一套与安全相关并按时间顺序排列的记录,按顺序记录了与单个用户、管理人员或系统其他组件相关的活动。
启用审计日志的步骤如下:
安装后成功后,还要以admin用户的身份登录控制台, YAML 文件中,搜索 auditing
,将 enabled
的 false
改为 true
告警是可观测性的重要组成部分,与监控和日志密切相关,用户可以借助 KubeSphere 强大的监控系统查看平台中的各类数据。
告警系统的启用步骤如下:
安装后成功后,还要以admin用户的身份登录控制台启用告警系统, YAML 文件中,搜寻到 alerting
,将 enabled
的 false
更改为 true
。完成后,保存配置。
验证组件安装,比如说KubSphere的告警系统内,如果可以在集群管理页面看到告警消息和告警策略,则说明安装成功。
在卸载除服务拓扑图和容器组 IP 池之外的可插拔组件之前,必须将 CRD 配置文件 ClusterConfiguration 中的 ks-installer 中的 enabled 字段的值从 true 改为 false。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。