What is Edge Computing
The contribution of 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 leinao@10.*.4.24:/home/leinao
sudo scp -r certs leinao@10.*.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
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
Run cloudcore
Run cloudcore with systemd
启动需要在kubelet服务之后
Run cloudcore as deployment
https://github.com/kubeedge/kubeedge/tree/master/build/cloud
注意:其部署时拉取的镜像是v1.1.0版本,并非最新master的源码编译镜像,故edge也一样需要与其对应,否则报未知资源错误。
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
本文分享自微信公众号 - 程序猿Damon(Damon4X)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。
来源:oschina
链接:https://my.oschina.net/u/4186967/blog/4347333