需要先至少准备两台机器,一台master节点,一台edge节点。
为了方便验证,本此验证中master节点和edge节点的OS都是ubuntu 18.04。
1)先在master节点上安装kubernetes,可以只部署master
2)edge节点上安装docker
3)edge节点上安装mosquitto
kubernetes集群和docker的安装教程网上有很多,此处不再详述。
mkdir -p /home/bluejoy/kubeedge/deploy-v1.1.0
cd /home/bluejoy/kubeedge/deploy-v1.1.0
git clone https://github.com/kubeedge/kubeedge.git
cd kubeedge
git checkout v1.1.0
cd /home/bluejoy/kubeedge/deploy-v1.1.0
wget https://github.com/kubeedge/kubeedge/releases/download/v1.1.0/kubeedge-v1.1.0-linux-amd64.tar.gz
tar -xzvf kubeedge-v1.1.0-linux-amd64.tar.gz
mv kubeedge-v1.1.0-linux-amd64 kubeedge-v1.1.0
cp kubeedge/cloud/cloudcore /usr/local/bin/
cd /home/bluejoy/kubeedge/deploy-v1.1.0/kubeedge/build/tools/
bash certgen.sh genCertAndKey edge
tar -cvzf certs.tgz /etc/kubeedge/certs/
kubectl create -f devices_v1alpha1_device.yaml
kubectl create -f devices_v1alpha1_devicemodel.yaml
mkdir /etc/kubeedge/cloudcore
cp -r /home/bluejoy/kubeedge/deploy-v1.1.0/kubeedge-v1.1.0/cloud/cloudcore/conf /etc/kubeedge/cloudcore/
export GOARCHAIUS_CONFIG_PATH=/etc/kubeedge/cloudcore
vim /etc/kubeedge/cloudcore/conf/controller.yaml
controller.yaml文件内容如下,主要修改两处地方:
1)master地址
2)kubeconfig文件所在的地址
controller:
kube:
master: "https://192.168.56.105:6443" # kube-apiserver address (such as:http://localhost:8080)
namespace: ""
content_type: "application/vnd.kubernetes.protobuf"
qps: 5
burst: 10
node_update_frequency: 10
kubeconfig: "/root/.kube/config" #Enter path to kubeconfig file to enable https connection to k8s apiserver, if master and kubeconfig are both set, master will override any value in kubeconfig.
cloudhub:
protocol_websocket: true # enable websocket protocol
port: 10000 # open port for websocket server
protocol_quic: true # enable quic protocol
quic_port: 10001 # open prot for quic server
max_incomingstreams: 10000 # the max incoming stream for quic server
enable_uds: true # enable unix domain socket protocol
uds_address: unix:///var/lib/kubeedge/kubeedge.sock # unix domain socket address
address: 0.0.0.0
ca: /etc/kubeedge/ca/rootCA.crt
cert: /etc/kubeedge/certs/edge.crt
key: /etc/kubeedge/certs/edge.key
keepalive-interval: 30
write-timeout: 30
node-limit: 10
devicecontroller:
kube:
master: "https://192.168.56.105:6443" # kube-apiserver address (such as:http://localhost:8080)
namespace: ""
content_type: "application/vnd.kubernetes.protobuf"
qps: 5
burst: 10
kubeconfig: "/root/.kube/config" #Enter path to kubeconfig file to enable https connection to k8s apiserver,if master and kubeconfig are both set, master will override any value in kubeconfig.
cp /home/bluejoy/kubeedge/deploy-v1.1.0/kubeedge-v1.1.0/cloud/cloudcore/cloudcore /usr/local/bin/
cloudcore > /var/log/kubeedge/cloudcore.log
cd /home/bluejoy/kubeedge/deploy-v1.1.0/kubeedge/build/
vim node.json
{
"kind": "Node",
"apiVersion": "v1",
"metadata": {
"name": "bluejoy-jing",
"labels": {
"name": "edge-node",
"node-role.kubernetes.io/edge": ""
}
}
}
执行下一步命令之前,请先修改node.json文件中的metadata.name的值为edge节点的hostname
# kubectl apply -f node.json
1)添加 apt-get 源:
add-apt-repository ppa:mosquitto-dev/mosquitto-ppa
apt-get update
2)安装:
apt-get install mosquitto
scp -r /etc/kubeedge/certs [email protected]:/etc/kubeedge/
scp -r /home/bluejoy/kubeedge/deploy-v1.1.0/kubeedge-v1.1.0 [email protected]:/etc/kubeedge/
vim /etc/kubeedge/kubeedge-v1.1.0/edge/conf/edge.yaml
根据自己的情况,修改以下部分的内容:
1)edgehub.websocket.url中的IP地址和edge节点的主机名称
2)edgehub.controller.node-id的值为edge节点的主机名称
3)edged.hostname-override的值为edge节点的主机名称
4)edged.interface-name的值根据edge节点的网络接口的名称进行修改,我的是enp0s8
5)edged.cgroup-driver根据edged节点上的实际值进行修改(可以通过docker info命令查看具体的值)
mqtt:
server: tcp://127.0.0.1:1883 # external mqtt broker url.
internal-server: tcp://127.0.0.1:1884 # internal mqtt broker url.
mode: 0 # 0: internal mqtt broker enable only. 1: internal and external mqtt broker enable. 2: external mqtt broker enable only.
qos: 0 # 0: QOSAtMostOnce, 1: QOSAtLeastOnce, 2: QOSExactlyOnce.
retain: false # if the flag set true, server will store the message and can be delivered to future subscribers.
session-queue-size: 100 # A size of how many sessions will be handled. default to 100.
edgehub:
websocket:
url: wss://192.168.56.105:10000/e632aba927ea4ac2b575ec1603d56f10/bluejoy-Jing/events
certfile: /etc/kubeedge/certs/edge.crt
keyfile: /etc/kubeedge/certs/edge.key
handshake-timeout: 30 #second
write-deadline: 15 # second
read-deadline: 15 # second
quic:
url: 127.0.0.1:10001
cafile: /etc/kubeedge/ca/rootCA.crt
certfile: /etc/kubeedge/certs/edge.crt
keyfile: /etc/kubeedge/certs/edge.key
handshake-timeout: 30 #second
write-deadline: 15 # second
read-deadline: 15 # second
controller:
protocol: websocket # websocket, quic
heartbeat: 15 # second
project-id: e632aba927ea4ac2b575ec1603d56f10
node-id: bluejoy-Jing
edged:
register-node-namespace: default
hostname-override: bluejoy-Jing
interface-name: enp0s8
edged-memory-capacity-bytes: 7852396000
node-status-update-frequency: 10 # second
device-plugin-enabled: false
gpu-plugin-enabled: false
image-gc-high-threshold: 80 # percent
image-gc-low-threshold: 40 # percent
maximum-dead-containers-per-container: 1
docker-address: unix:///var/run/docker.sock
runtime-type: docker
remote-runtime-endpoint: unix:///var/run/dockershim.sock
remote-image-endpoint: unix:///var/run/dockershim.sock
runtime-request-timeout: 2
podsandbox-image: kubeedge/pause:3.1 # kubeedge/pause:3.1 for x86 arch , kubeedge/pause-arm:3.1 for arm arch, kubeedge/pause-arm64 for arm64 arch
image-pull-progress-deadline: 60 # second
cgroup-driver: cgroupfs
node-ip: ""
cluster-dns: ""
cluster-domain: ""
mesh:
loadbalance:
strategy-name: RoundRobin
export GOARCHAIUS_CONFIG_PATH=/etc/kubeedge/kubeedge-v1.1.0/edge
cp /etc/kubeedge/kubeedge-v1.1.0/edge/edgecore /usr/local/bin
edgecore > /var/log/kubeedge/edgecore.log
kubectl apply -f /home/bluejoy/kubeedge/deploy-v1.1.0/kubeedge/build/deployment.yaml
kubectl delete -f /home/bluejoy/kubeedge/deploy-v1.1.0/kubeedge/build/deployment.yaml