前言

Kubeedge的配置需要在云端(cloud side/kubeedge master)和边缘端(edge side / kubeedge worker node)两端进行配置。

云端配置

云端配置需要两步:

  • 更改配置文件
  • 边缘节点会自动注册到云端,玩家可以选择手动注册。
1. 生成配置文件
① 创建目录
1
$ mkdir -p /etc/kubeedge/config 
② 生成配置文件

配置文件有两种选择,一种是轻量化的min配置,一种是全部的full配置

  • 生成min配置文件

    cloudcore –minconfig > /etc/kubeedge/config/cloudcore.yaml

  • 生成full 配置文件

    cloudcore –defaultconfig > /etc/kubeedge/config/cloudcore.yaml

2. 修改配置文件
kubeAPIConfig.kubeConfigkubeAPIConfig.master

这两个配置是kubeconfig文件路径,取决于k8s集群安装时设置的路径,可能是:

1
/root/.kube/config

或者

1
/home/<your_username>/.kube/config

如果两个都配置了,kubeAPIConfig.master的配置为主。

② advertiseAddress

这个配置是配置CloudCore 暴漏给边缘节点的ip地址。

1
2
3
4
modules:
cloudHub:
advertiseAddress:
- ${ip}
③ 云端添加边缘节点

边缘节点的添加有两种方式。

  • 自动注册
  • 手动注册
  1. 自动注册

    自动注册的设置其实不在云端,在边缘端的配置文件中

    1
    2
    3
    modules:
    edged:
    registerNode: true # 设置为true,则自动注册
  2. 手动注册(云端)

    可以复制对应的json文件,然后进行修改

    1
    2
    $ make -p $WORK_DIR/kubeedge/yaml
    $ cp $GOPATH/src/github.com/kubeedge/kubeedge/build/node.json $WORK_DIR/kubeedge/yaml

    修改 metadata.name 为edge node 的name。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    {
    "kind": "Node",
    "apiVersion": "v1",
    "metadata": {
    "name": "edge-node",
    "labels": {
    "name": "edge-node",
    "node-role.kubernetes.io/edge": ""
    }
    }
    }

    ps: name字段必须和边缘端配置文件中的modules.edged.hostnameOverride 保持一致

    部署该配置

    1
    kubectl apply -f $WORK_DIR/kubeedge/yaml/node.json

边缘端配置

1. 生成配置文件
① 创建目录
1
mkdir -p /etc/kubeedge/config/
② 生成配置文件

和云端一样,配置文件有两种选择,一种是轻量化的min配置,一种是全部的full配置

  • 生成min配置文件

    edgecore –minconfig > /etc/kubeedge/config/edgecore.yaml

  • 生成full 配置文件

    edgecore –defaultconfig > /etc/kubeedge/config/edgecore.yaml

2. 修改配置文件
① 校对 modules.edged.podSandboxImage

如果为X86架构填写: kubeedge/pause:3.1
如果为ARM架构填写:kubeedge/pause-arm:3.1
如果为ARM64架构填写:kubeedge/pause-arm64

可以用 getconf LONG_BIT 查看架构情况.

② 配置CloudCore Ip

modules.edgehub.websocket.servermodules.edgehub.quic.server 需要设置为CloudCore ip 地址

③ 配置容器类型 (runtimeType)

默认为 runtimeType: docker

④ 配置 modules.edgehub.httpServer
1
2
3
modules:
edgeHub:
httpServer: https://${ip}:${port} # cloudHub
⑤ 配置token
  • 获取token

    1
    kubectl get secret tokensecret -n kubeedge -oyaml
  • base64编码token

    1
    echo ${token} |base64 -d
  • 将得到的token编码之后的值加入配置

    1
    2
    3
    modules:
    edgeHub:
    token: ${base64 decoded token}
配置 MQTT mode

kubeedge 的边缘端使用MQTT来进行deviceTwin和设备之间的通信。在edgecore配置文件中设置mqttMode来选择, 共支持三种模式。

  • mqttMode=0: internalMqttMode, 启用内部mqtt代理。
  • mqttMode=1:bothMqttMode,启用内部和外部代理
  • mqttMode=2: externalMqttMode, 只启用外部代理