kubeedge安装与部署

1 设备定义

cloud node 10.57.26.15 edge node 10.57.26.26

2 环境依赖配置

1:安装k8s 这一步不再赘述,需要注意的是,官方文档里推荐打开apiserver 8080端口,但是6443安全端口也是可以的。 2:配置Go和kubeedge环境(云端和边缘端都需要安装)

#创建kubeedge源码存放跟路径
mkdir -p kubeedge/src
#设置GOPATH
export GOPATH=/root/kubeedge
#下载go lang包
wget https://dl.google.com/go/go1.10.3.linux-amd64.tar.gz
#解压
tar -xvf go1.10.3.linux-amd64.tar.gz
#移动到/usr/local目录下
mv go /usr/local
#配置GOROOT环境变量
export GOROOT=/usr/local/go
#更新PATH环境变量
export PATH=$GOPATH/bin:$GOROOT/bin:$PATH
#下载kubeedge源码于GOPATH路径
git clone https://github.com/kubeedge/kubeedge.git $GOPATH/src/github.com/kubeedge/kubeedge

3 生成证书

该步骤将生成kubeedge需要的证书,包含rootCA证书和cert/key对。 同样的cert/key对可以同时被cloud和edge端使用。 运行以下命令生成证书。

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

cerrt和 key将被生成在/etc/kubeedge/ca 和/etc/kubeedge/certs 下

4 拷贝证书到边缘节点

在边缘节点上,执行以下命令

mkdir -p /etc/kubeedge/ca
mkdir -p /etc/kubeedge/certs
scp -r root@node01:/etc/kubeedge/ca /etc/kubeedge
scp -r root@node01:/etc/kubeedge/certs /etc/kubeedge

5 编译和运行云端

1 修改modules.yaml文件 vi $GOPATH/src/github.com/kubeedge/kubeedge/cloud/conf/modules.yaml 将devicecontroller删除。 2 修改配置文件controller.yaml vi $GOPATH/src/github.com/kubeedge/kubeedge/cloud/conf/controller.yaml 默认云端和k8s的apiserver采用8080端口通讯,为了安全考虑,我没开启8080端口,只开放了https协议的6443端口,所以需要更改配置。在配置文件中,修改以下两个配置: kube.master为https://k8s-01:6443 kubeconfig为/root/.kube/config 3 cd .. 到上一层目录,并执行make编译cloud模块。 4 执行 ./edgecontroller 运行云端。然后开启一个新的ssh终端。

6 部署边缘端

6.1 修改node.js配置文件

vi $GOPATH/src/github.com/kubeedge/kubeedge/build/node.json 将metadata.name改成需要的边缘node名称。

6.2 部署

文档上是在边缘端部署,执行 kubectl apply -f $GOPATH/src/github.com/kubeedge/kubeedge/build/node.json -s k8s-01:8080但是https的没成功,所以换成在cloud端执行,这样就不用指定-s参数,不需要认证。 在cloud端执行 kubectl apply -f $GOPATH/src/github.com/kubeedge/kubeedge/build/node.json 这步骤可以重复多次,创建多个edge node。 执行kubectl get nodes查看节点可以看到如图所示,edge节点并没有ready。

6.3 运行edge node

1.下拉镜像并改tag

docker pull kubeedge/edgecore:v0.3.0-beta.0
docker tag kubeedge/edgecore:v0.3.0-beta.0 kubeedge/edgecore:latest

2.运行 进入目录 cd $GOPATH/src/github.com/kubeedge/kubeedge/build/edge 执行 ./run_daemon.sh only_run_edge mqtt=0.0.0.0:1883 cloudhub=10.57.26.15:10000 edgename=zhyedge01 image="kubeedge/edgecore:latest" containername=edge01 其中 cloudhub换成cloud的ip edgename换成之前创建的边缘节点名 containername起一个容器名 再执行kubectl get nodes查看状态,可以看到节点上READY状态了

7 部署应用

进入目录 cd $GOPATH/src/github.com/kubeedge/kubeedge/build 执行kubectl apply -f deployment.yaml 然后查看pod kubectl get pods可以看到pod状态是RUNNING,并且运行在edge端上。