该教程是在kubernetes已经安装成功的基础上安装kubeedge。
安装说明
- kubeedge v1.0.0
安装cloud端
修改k8s master节点配置
cloud端是kubeedge中与kube-apiserver交互的组件,在该教程中cloud端与kube-apiserver交互使用的是非安全端口需要在k8s master节点上做如下修改:
vi /etc/kubernetes/manifests/kube-apiserver.yaml
# Add the following flags in spec: containers: -command section
- --insecure-port=8080
- --insecure-bind-address=0.0.0.0
下载安装包
可以通过两种方式下载安装包(1)通过curl直接下载,(2)在kubeedge的release仓库中下载
通过curl直接下载
VERSION="v1.0.0"
OS="linux"
ARCH="amd64"
curl -L "https://github.com/kubeedge/kubeedge/releases/download/${VERSION}/kubeedge-${VERSION}-${OS}-${ARCH}.tar.gz" --output kubeedge-${VERSION}-${OS}-${ARCH}.tar.gz && tar -xf kubeedge-${VERSION}-${OS}-${ARCH}.tar.gz -C /etc
注意:通过curl直接下载,由于网速问题一般需要时间比较久,失败的可能较大。
在kubeedge的release仓库中下载
进入kubeedge的github仓库中的KubeEdge v1.0.0 release,下载kubeedge-v1.0.0-linux-amd64.tar.gz ,将下载的安装包上传到k8s master节点的/root目录下,进行如下操作:
#tar -zxvf kubeedge-v1.0.0-linux-amd64.tar.gz
# mv kubeedge-v1.0.0-linux-amd64 /etc/kubeedge
在k8s master节点生成证书
生成的证书用来在kubeedge的edge端与cloud端的加密通信,证书生成步骤如下:
wget -L https://raw.githubusercontent.com/kubeedge/kubeedge/master/build/tools/certgen.sh
# make script executable
chmod +x certgen.sh
bash -x ./certgen.sh genCertAndKey edge
上述步骤执行成功之后,会在/etc/kubeedge下生成ca和certs两个目录。
在/etc/kubeedge/cloud/conf/controller.yaml中针对刚生成的证书路径对如下部分进行修改:
cloudhub.ca
cloudhub.cert
cloudhub.key
注意: 默认上述三个的路径是不需要修改的。
创建device model 和 device CRDs
在k8s master节点上创建kubeedge所需的device model和device CRDs,创建步骤如下:
wget -L https://raw.githubusercontent.com/kubeedge/kubeedge/master/build/crds/devices/devices_v1alpha1_devicemodel.yaml
# make script executable
chmod +x devices_v1alpha1_devicemodel.yaml
kubectl create -f devices_v1alpha1_devicemodel.yaml
wget -L https://raw.githubusercontent.com/kubeedge/kubeedge/master/build/crds/devices/devices_v1alpha1_device.yaml
# make script executable
chmod +x devices_v1alpha1_device.yaml
kubectl create -f devices_v1alpha1_device.yaml
运行cloud端
在k8s master节点上运行kubeedge的cloud端。
cd /etc/kubeedge/cloud
# run edge controller
# `conf/` should be in the same directory where cloudcore resides
# verify the configurations before running cloud(cloudcore)
./cloudcore
注意: 除了上述方式外,还可以通过systemd来运行。
安装edge端
edge端是kubeedge运行在边缘设备上的部分,在edge端运行之前需要安装合适的容器runtime:docker,containerd和cri-o。
准备edge端安装包
因为证书问题,可以将k8s master节点上的/etc/kubeedge直接拷贝到edge节点的/etc下,具体步骤:
scp -r /etc/kubeedge root@[edge节点ip]:/etc
在k8s master节点上创建edge节点的node
# vi node.json
{
"kind": "Node",
"apiVersion": "v1",
"metadata": {
"name": "edge-node",
"labels": {
"name": "edge-node",
"node-role.kubernetes.io/edge": ""
}
}
}
# kubectl create -f node.json
修改edge端的配置
修改两部分内容:(1)edge端连接cloud端的ip(2)edge端的name与在k8s master上创建的node相对应。
# edge端连接cloud端的ip
edgehub.websocket.url:ip修改成k8s master ip端口不变
edgehub.quic.url:ip修改成k8s master ip端口不变
#edge端的name与在k8s master上创建的node相对应
controller:node-id:与在k8s master上创建的node的name保持一致
edged:hostname-override:与在k8s master上创建的node的name保持一致
运行edge端
run edgecore
cd /etc/kubeedge/edge
./edgecore
注意: 除了上述方式外,还可以通过systemd来运行。