边缘计算实践体验
更新:HHH   时间:2023-1-7


所谓边缘计算

边缘计算Edge Computing的概念由此而生。2014年,欧洲电信标准协会(ETSI)成立了移动边缘计算规范工作组(ETSI Mobile Edge Computing Industry Specification Group),开始推动相关的标准化工作。2016年,ETSI把此概念扩展为多接入边缘计算 (Multi-Access Edge Computing,MEC),并综合考虑FMC(固网/移动融合)的场景需求。2016年4月,3GPP SA2* 也正式接受MEC,将之列为5G架构的关键技术。,简单的理解就就是在数据源(用户端……)等系统的边缘进行计算的能力。Cisco公司认为,边缘计算即雾计算,其背景是解决越来越多的应用正迁移到“云”上,依赖强大的集中控制系统,对着洗数据进行集中处理,如图所示,然而,随着数据量的增加,我们的计算能力需要极大的提升,因而,边缘计算的兴起,和传统的中心化思维不同,他的主要计算节点以及应用分布式部署在靠近终端的数据中心,这使得在服务的响应、可靠性方面还是高于传统中心化的云计算概念。根据ETSI的定义,多接入边缘计算是在靠近人、物或数据源头的网络边缘侧,通过融合了 网络、计算、存储、应用等核心能力的开放平台,就近提供边缘智能服务,来满足行业数字 化在敏捷联接、实时业务、数据优化、应用智能、安全与隐私保护等方面的关键需求。

具体来说

边缘计算和传统的中心化思维不同,他的主要计算节点以及应用分布式部署在靠近终端的数据中心,这使得在服务的响应性能、还是可靠性方面都是高于传统中心化的云计算,具体而言,边缘计算可以理解为是指利用靠近数据源的边缘地带来完成的运算程序。
如果用更通用的术语来表示即:邻近计算或者接近计算(Proximity Computing)

区别

  • 云计算的数据中心在核心网络中,离数据源远(网络跳数高)
  • 边缘计算的数据中心更加靠近数据源。由上图Cisco公司的示意图,我们可以发现,相较于终端设备到达核心网络需要通过层层设备,而到达边缘层设备在这条通路当中,反而更近一些
  • 云计算是集中式大数据处理,边缘计算则可以理解为边缘式大数据处理。
    • 不同的是,只是这一次,数据不用再传到遥远的云端,在边缘侧就能解决。
  • 边缘计算更适合实时的数据分析和智能化处理,相较单纯的云计算也更加高效而且安全
    • 边缘计算和云计算两者实际上都是处理大数据的计算运行的一种方式。
    • 边缘计算更准确的说应该是对云计算的一种补充和优化

应用实践

原先由于项目需要我们采用k8s进行集群管理,安装k8s的痛苦历历在目,以及k8s对性能的开销和对计算机性能的要求限制了我想象的空间,不可否认k8s在集群的管理上确实有其独到之处,但要应用到其他领域上还有很长一段距离,不过,感谢rancher公司提供的新产品,k3s,比k8s少了5s,其对k8s高屋建瓴,为边缘计算带来了无限的可能。
通过k3s来进行边缘计算部署,因为该产品非常之轻量,其号称仅仅需要40M的硬盘空间,和512M的内存空间即可进行部署
接下来将通过一系列的部署来体验超轻量的集群控制技术的实践。目前我仅仅使用两个节点来部署该系统,一个是集群,一个是agent。这两个节点都是docker容器,规格均为4g,4cpu,通过以下命令下载k3s的操作软件
$ wget https://github.com/rancher/k3s/releases/download/v0.3.0/k3s

Connecting to github.com (192.30.253.112:443)
Connecting to github-production-release-asset-2e65be.s3.amazonaws.com (52.216.112.11:443)
k3s 100% |****| 38.7M 0:00:00 ETA

正如其所描述,这套系统也仅仅有38.7M,修改操作属性,以获得执行权限,然后在后台运行

$ sudo chmod +x k3s
sudo ./k3s server &

以下是运行日志:

[1] 247
INFO[0000] Preparing data dir /var/lib/rancher/k3s/data/56c346dbd23e9399b9ccb062cc8d71110f96eed4cd8d138a7c097e4c651d12a6
[node1] (local) root@192.168.0.23 ~
$ INFO[2019-04-13T08:14:05.448051228Z] Starting k3s v0.3.0 (9a1a1ec)
INFO[2019-04-13T08:14:06.398250769Z] Running kube-apiserver --watch-cache=false --cert-dir /var/lib/rancher/k3s/server/tls/temporary-certs --allow-privileged=true --authorization-mode Node,RBAC --service-account-signing-key-file /var/lib/rancher/k3s/server/tls/service.key --service-cluster-ip-range 10.43.0.0/16 --advertise-port 6445 --advertise-address 127.0.0.1 --insecure-port 0 --secure-port 6444 --bind-address 127.0.0.1 --tls-cert-file /var/lib/rancher/k3s/server/tls/localhost.crt --tls-private-key-file /var/lib/rancher/k3s/server/tls/localhost.key --service-account-key-file /var/lib/rancher/k3s/server/tls/service.key --service-account-issuer k3s --api-audiences unknown --basic-auth-file /var/lib/rancher/k3s/server/cred/passwd --kubelet-client-certificate /var/lib/rancher/k3s/server/tls/token-node.crt --kubelet-client-key /var/lib/rancher/k3s/server/tls/token-node.key
INFO[2019-04-13T08:14:08.761712689Z] Listening on :6443
INFO[2019-04-13T08:14:09.608524354Z] Node token is available at /var/lib/rancher/k3s/server/node-token
INFO[2019-04-13T08:14:09.608562854Z] To join node to cluster: k3s agent -s https://172.18.0.6:6443 -t ${NODE_TOKEN}
INFO[2019-04-13T08:14:10.774070472Z] Connecting to proxy url="wss://localhost:6443/v1-k3s/connect"
INFO[2019-04-13T08:14:09.718944649Z] Run: k3s kubectl
INFO[2019-04-13T08:14:09.719024250Z] k3s is up and running
INFO[2019-04-13T08:14:09.769336884Z] Logging containerd to /var/lib/rancher/k3s/agent/containerd/containerd.log
INFO[2019-04-13T08:14:10.779764787Z] Handling backend connection request [node1]

从日志中,我们可以发现一些有意思的信息,比如

  • Node token is available at /var/lib/rancher/k3s/server/node-token 我们将去寻找token的路径
  • To join node to cluster: k3s agent -s https://172.18.0.6:6443 -t ${NODE_TOKEN} 这个将作为agent加入的指令,而这个IP:172.18.0.6,则是由于我使用的docker container的namespace(命名空间)隔离导致的
    • 这个命名空间使镜像之间的网络隔离
    • 为了使流量互通,将该IPNAT至192.168.0.23
  • Listening on :6443,已经开启6443端口作为监听端口
  • k3s kubectl,可以运行kubectl命令行
  • waiting for node node1 CIDR not assigned yet,管理节点已经准备完成,等待agent的加入
    好了,我们使用以下命令去寻找token

    目前还没有节点接入

    不过别急,我们即将接入新的设备:)在我们的agent节点中,我们仍然要通过wget的形式将k3s这款软件下载,

    验证两节点的连通性

    使用以下命令,将该节点加入到server端
    $ ./k3s agent -s https://192.168.0.23:6443 -t K10dff6042746f035482131dcc04299b24b2aa06b801585519d49a8741e164f95a7::node:246085e87b9e0ff4e85cfc4d5bf7cea6

    同样的,我们还是可以从日志中发现agent一步步加入的过程


让我们回头看一下server端的日志,清楚的体现agent加入的过程和加入后统计的结果


镜像的加入简单和方便,借助docker技术,我们可以快速对镜像进行管理。比如根据物联网场景,在IOT设备上安装agent根据业务需求,定向收集某些环境参数,在IOT环境下虽然将面对海量节点,但并不妨碍我们对这些节点的管理,极简的server设计,完全可以使我们在手机上就可以监控到数据。甚至可以说我们一台手机就是一个物联网机房的监控中心,随着5G环境的推进,这样设计给我们带来了无限的可能。就像下图,在深圳机械会展中令人眼前一亮的应用。

通过海量传感器对数据进行边缘计算,之后上传到云服务中对现象进行分析,如果我们docker镜像计算足够快,在应对突发情况会更加来去自如,在大型互联网企业,这类的监控中心架构很是常见,然而具体落地到工业界还有一定的距离,借助边缘计算,完全可以打通最后的一公里,实现工业+互联网。
我们不难发现边缘计算为产业内的参与者和大众提供的创新潜能和出色价值:终端用户通过他, 不论是连接网络还是获取内容,都能获得更优和更为个性化的应用体验;运营商通过边缘计算平台将增强的网络能力开放给第三方OTT提供商或者应用开发者,并将他们的应用和服务提供给移动用户、企业和垂直行业,也有望重新定义自身在整个产 业链中的角色,进而实现新的收入、提供更多高附加值的服务并 开拓新的市场机会;OTT提供商和独立的应用开发商,也能在边缘计算的开放标准平台之上快速开发新的应用、缩短开发周期, 在为终端用户提供近乎零延时的极速体验的同时,为自已创造更高、更快的收益。边缘计算将成为云服务提供商与运营商的结合点,无数跨界式的创新,正在此处酝酿着 “一鸣惊人”的爆发力。
嘿嘿,未来可期。

参考资料:

  1. 边缘计算研究报告,洪学海 ××× 郭树盛,中科院计算技术研究所信息技术战略研究中心
  2. [各说个话]何谓边缘计算:https://makerpro.cc/2018/12/what-is-edge-computing/
  3. 面向5G的边缘计算,英特尔引领智能化网络转型, Intel
  4. k3s官方网站:https://k3s.io/
  5. docker环境 ,play with docker:https://labs.play-with-docker.com/
返回云计算教程...