其他分享
首页 > 其他分享> > 边缘计算k8s集群之SuperEdge

边缘计算k8s集群之SuperEdge

作者:互联网

SuperEdge是Kubernetes原生的开源的边缘容器方案,它将Kubernetes强大的容器管理能力扩展到边缘计算场景中,针对边缘计算场景中常见的技术挑战提供了解决方案,如:单集群节点跨地域、云边网络不可靠、边缘节点位于NAT网络等。这些能力可以让应用很容易地部署到边缘计算节点上,并且可靠地运行。

什么是边缘计算?

边缘计算,是指在靠近物或数据源头的一侧,采用网络、计算、存储、应用核心能力为一体的开放平台,就近提供最近端服务。其应用程序在边缘侧发起,产生更快的网络服务响应,满足行业在实时业务、应用智能、安全与隐私保护等方面的基本需求。边缘计算处于物理实体和工业连接之间,或处于物理实体的顶端。而云端计算,仍然可以访问边缘计算的历史数据。

边缘计算在具有低时延、高带宽、高可靠、海量连接、 异构汇聚和本地安全隐私保护等特点的应用场景,如智能交通、智慧城市、智慧工厂和智能家居等行业或领域,存在非常突出的优势。比如在自动驾驶领域,边缘计算是实现自动驾驶的关键。智能汽车本质上可以看作是一台车轮上的大型高功率计算机,其通过多个传感器收集数据。为了使这些车辆安全可靠地运行,这些传感器需要立即响应周围环境,处理速度的任何滞后都可能是致命的。同时边缘计算将更多的数据计算和存储从“核心”下沉到“边缘”,部署于接近数据源的地方,一些数据不必再经过网络到达云端处理,从而降低时延和网络负荷,也提升了数据安全性和隐私性。

什么是SuperEdge?

SuperEdge是Kubernetes原生的开源的边缘容器方案,它将Kubernetes强大的容器管理能力扩展到边缘计算场景中,针对边缘计算场景中常见的技术挑战提供了解决方案,如:单集群节点跨地域、云边网络不可靠、边缘节点位于NAT网络等。这些能力可以让应用很容易地部署到边缘计算节点上,并且可靠地运行。

项目说明

项目地址:https://github.com/superedge/superedge

SuperEdge可以帮助您很方便地把分布在各处的计算资源放到一个Kubernetes集群中管理,包括但不限于:边缘云计算资源、私有云资源、现场设备,打造属于您的边缘PaaS平台。

SuperEdge支持所有Kubernetes资源类型、API接口、使用方式、运维工具,无额外的学习成本。也兼容其他云原生项目,如:Promethues,使用者可以结合其他所需的云原生项目一起使用。

SuperEdge项目由以下公司共同发起:腾讯、Intel、VMware、虎牙直播、寒武纪、首都在线和美团。

特点

SuperEdge具有如下特性:

体系架构

 

体系架构

 

 

使用ECK免费管理自己的边缘节点

边缘容器服务(Edge Cloud Kubernetes Engine,简称 ECK)是腾讯云容器服务基于SuperEdge推出的用于从中心云管理边缘云资源的容器系统。边缘容器服务完全兼容原生 Kubernetes、支持在同一个集群中管理位于多个机房的节点、一键将应用下发到所有边缘节点,并且具备边缘自治和分布式健康检查能力。

优势

简而言之,言而总之,最大的优势就是开箱即用,免费托管。不过目前仅支持创建一个集群。

ECK基于SuperEdge打造,使用ECK和容器服务托管集群一样,不会收取托管的 Master、Etcd 等管理方面资源的费用。

计算节点由我们自己掌握和提供,边缘容器服务不收取额外费用。

敞开来讲,他有如下优势:

边缘容器服务紧跟社区,支持最新的 Kubernetes 版本及原生的 Kubernetes 集群管理方式,开箱即用。

边缘容器服务是一种 Master 组件托管在云端,worker 节点可位于任意地点的 Kubernetes 服务,用户无须提供 Master 组件所需资源。

边缘容器服务支持内外网证书分离,节点权限最小化控制来最大限度避免集群访问控制权限泄露问题。云边通信使用 TLS 加密,防止系统管理数据泄露或被篡改。

边缘容器服务针对云边通信网络场景提供了可靠的边缘自治能力,并且具备分布式集群健康检查能力,可更准确地判定 pod 迁移时机。

借助于腾讯多年积累的隧道技术,即使边缘设备不具备公网地址,管理员也可以从云端直接登录运行在边缘节点上的容器。

边缘容器服务不限定计算资源。例如,公有云、私有云、腾讯云或其他云计算资源。

创建边缘集群

集群的创建可以参考:https://cloud.tencent.com/document/product/457/42889

创建边缘集群

 

值得注意的是,需开启外网访问。

添加节点

集群创建完成后,我们就可以添加边缘节点了。这里可以添加本地的终端,也可以添加其他云的主机,相关条件如下:

准备好边缘节点了之后,笔者推荐大家使用脚本来添加节点,如下图所示:

通过脚本添加节点

 

点击【下一步】,就可以获得一段脚本:

 

脚本

 

我们可以在自己的机器上开始操作了。在开始之前,我们需要确保该节点已安装 wgetsystemctl 及 iptable,并且最好是一台干净的终端。接下来我们就可以执行安装了:

edgectl-install

 

直到:

edgectl-install-success

 

在执行脚本的时候,这里可能会存在以下问题(已反馈):

使用Kubectl管理边缘集群

在前面的教程我们已经详细讲述过相关的教程了,这里就不赘述了。Kubectl的安装和集群连接请参考以下文档:

https://cloud.tencent.com/document/product/457/42894

添加工作负载

边缘集群搭建好了,我们先来运行一个Demo:

Yaml如下所示:

apiVersion: apps/v1
kind: Deployment
metadata:
  annotations:
    deployment.kubernetes.io/revision: "1"
  generation: 1
  labels:
    k8s-app: dotnet-samples
    qcloud-app: dotnet-samples
  name: dotnet-samples  namespace: defaultspec:
  progressDeadlineSeconds: 600
  replicas: 1
  revisionHistoryLimit: 10
  selector:
    matchLabels:
      k8s-app: dotnet-samples
      qcloud-app: dotnet-samples
  strategy:
    rollingUpdate:
      maxSurge: 1
      maxUnavailable: 0
    type: RollingUpdate
  template:
    metadata:
      annotations:
        edge.tke.cloud.tencent.com/cpu: "1"
        edge.tke.cloud.tencent.com/mem: 2Gi
      creationTimestamp: null
      labels:
        k8s-app: dotnet-samples
        qcloud-app: dotnet-samples
    spec:
      containers:      - image: mcr.microsoft.com/dotnet/samples:aspnetapp
        imagePullPolicy: IfNotPresent
        name: dotnet-samples
        resources:
          limits:
            cpu: 500m
            memory: 1Gi
          requests:
            cpu: 250m
            memory: 256Mi
        securityContext:
          privileged: false
        terminationMessagePath: /dev/termination-log
        terminationMessagePolicy: File
      dnsPolicy: ClusterFirst
      imagePullSecrets:      - name: qcloudregistrykey
      restartPolicy: Always
      schedulerName: default-scheduler
      terminationGracePeriodSeconds: 30---apiVersion: v1
kind: Service
metadata:
  name: dotnet-samples  namespace: defaultspec:
  externalTrafficPolicy: Cluster
  ports:  - name: tcp-80-80
    nodePort: 30500
    port: 80
    protocol: TCP
    targetPort: 80
  selector:
    k8s-app: dotnet-samples
    qcloud-app: dotnet-samples
  sessionAffinity: None
  type: NodePort

创建成功后,访问后如下所示(注意开放端口):

Demo界面

 

最后

在边缘计算场景下,其实还有很多痛点,比如当一个集群横跨多个地域,如何控制工作负载创建的节点位置?如何对各服务流量进行管控?同时,边缘容器分布式节点状态判定机制也是存在特殊性的,因为边缘弱网络会触发 Kubernetes 驱逐机制,这可能会引起不符合预期的 Pod 驱逐动作。这些问题,大家可以参考官方帮助文档,里面都有详细的回答。

回归正题,利用边缘集群我们可以干很多事情,连接和管理本地、客户所在地、各云厂商的机房、世界的各个终端。如何利用它搭建一个管道,锻炼技术,学习技术,我们下回分解。

如果在添加节点的过程中碰到问题,可以参考笔者之前的教程、博客和书籍《Docker+Kubernetes应用开发与快速上云》来解决问题以及查看日志。

 

集群故障处理之处理思路以及听诊三板斧(三十三)

标签:容器,Kubernetes,SuperEdge,边缘,集群,dotnet,k8s,节点
来源: https://blog.51cto.com/u_14180063/2813079