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端上。