What is Edge Computing

What is Edge Computing

What is Edge Computing

The contribution of Edge Computing

What is Edge Computing

推动边缘计算快速发展的四大因素:

• 低时延

    – 为满足低时延的要求,靠近业务现场的边缘构建解决方案,减少业务处理时延

• 海量数据

    – 物联网时代边缘数据爆炸性增长,全部上云成本高昂,数据在本地进行分析和过滤,节省带宽

• 隐私安全

    – 数据涉及到企业生产和经营活动安全,在边缘处理企业保密信息和个人隐私

• 本地自治

    – 不依赖云端的离线处理能力和自我恢复能力

What is Edge Computing

What is KubeEdge

    1.  基于k8s构建边缘计算平台

    2.  云端基于k8s master,边缘节点对k8s进行裁剪,轻量化kubelet,去掉其内置的存储驱动,同时选用生命周期管理的模块

    3.  致力于将Kubernetes的能力拓展到边缘

    4.  基于Kubernetes构建,100%兼容k8s API

Core Idea

云边协同

       •  云、边采用双向多路复用消息通道,支持边缘节点位于私有网络

       •  采用Websocket + 消息封装,大幅减少通信压力,高时延下仍可正常工作

 

边缘离线自治

       •  节点元数据持久化,实现节点级离线自治

       •  节点故障恢复无需List-watch,降低网络压力,快速ready

极致轻量

       •  重组Kubelet功能模块,极致轻量化(约10mb内存占用)

移除内嵌存储驱动,通过CSI接入

       •  支持CRI集成Containerd、CRI-O,优化runtime资源消耗

Competitive Training

参考:https://docs.kubeedge.io/en/latest/setup/setup.html

准备工作中,需要在主、从机器上分别安装golang、docker or other runtime,同时建议golang版本1.12以上,dokcer版本不要太低,可以用19.06。

golang安装:

1. wget https://dl.google.com/go/go1.12.14.linux-amd64.tar.gz

2. 提取压缩包

sudo tar -xzf go1.12.14.linux-amd64.tar.gz -C /usr/local

3. 建立软链接

sudo ln -s /usr/local/go/bin/* /usr/bin/

可以运行如下命令,验证是否安装成功:

go version

4. 配置环境变量

sudo vim $HOME/.bashrc

进入编辑界面后 Shift+G 跳转至尾行,按 o 新插入一行,输入如下:

export GOROOT=/usr/local/go  #设置为go安装的路径,有些安装包会自动设置默认的goroot

export GOPATH=$HOME/go_workspace   #默认安装包的路径

export PATH=$PATH:$GOROOT/bin:$GOPATH/bin

之后按 Esc 键,: wq 保存退出。使配置文件生效:

source $HOME/.bashrc  #注:这里不要用sudo执行,sudo无该命令

可运行 go env 查看gol环境变量:go env

先在一台机器上部署单机k8s,作为cloud

然后执行git clone https://github.com/kubeedge/kubeedge.git $GOPATH/src/github.com/kubeedge/kubeedge

cd $GOPATH/src/github.com/kubeedge/kubeedge

Same cert/key pair can be used in both cloud and edge:

$GOPATH/src/github.com/kubeedge/kubeedge/build/tools/certgen.sh genCertAndKey edge

cd /etc/kubeedge

将生成的key复制到各个边缘:

sudo scp -r ca [email protected]*.4.24:/home/leinao

sudo scp -r certs [email protected]*.4.24:/home/leinao

Start Deploy Cloud

make sure installed gcc:

gcc --version

Build cloudcore:

cd $GOPATH/src/github.com/kubeedge/kubeedge/

make all WHAT=cloudcore

Create device model and device CRDs:

cd $GOPATH/src/github.com/kubeedge/kubeedge/build/crds/devices

kubectl create -f devices_v1alpha1_devicemodel.yaml

kubectl create -f devices_v1alpha1_device.yaml

Copy cloudcore binary and config file:

cd $GOPATH/src/github.com/kubeedge/kubeedge/cloud

# run edge controller

# `conf/` should be in the same directory as the cloned KubeEdge repository

# verify the configurations before running cloud(cloudcore)

mkdir -p ~/cmd/conf

cp cloudcore ~/cmd/

cp -rf conf/* ~/cmd/conf/

cd ~/cmd/conf

接下来配置conf:

vim controller.yaml

What is Edge Computing

cloudcore default supports https connection to Kubernetes apiserver, so you need to check whether the path for controller.kube.kubeconfig and devicecontroller.kube.kubeconfig exist, but if master and kubeconfig are both set, master will override any value in kubeconfig. Check whether the cert files for cloudhub.ca, cloudhub.cert,cloudhub.key exist.

Setup cloud side

  1. Run cloudcore

  2. Run cloudcore with systemd

    启动需要在kubelet服务之后

    What is Edge Computing

  3. Run cloudcore as deployment

    https://github.com/kubeedge/kubeedge/tree/master/build/cloud

    注意:其部署时拉取的镜像是v1.1.0版本,并非最新master的源码编译镜像,故edge也一样需要与其对应,否则报未知资源错误。

  4. Deploy the edge node

    cd $GOPATH/src/github.com/kubeedge/kubeedge/build

    ls -l

    vi node.json

    自己设置名称,自定义边缘节点:

    kubectl apply -f ~/cmd/yaml/node.json

Setup edge side

cd $GOPATH/src/github.com/kubeedge/kubeedge

make all WHAT=edgecore

mkdir ~/cmd/conf

cp $GOPATH/src/github.com/kubeedge/kubeedge/edge/conf/* ~/cmd/conf

vim ~/cmd/conf/edge.yaml

cd /home/leinao

cp -r ca /etc/kubeedge/

cp -r certs /etc/kubeedge/

cd $GOPATH/src/github.com/kubeedge/kubeedge/edge

./edgecore

看节点是否ready:

kubectl get nodes