一、部署云端
1.配置文件
在目录/etc/kubeedge/config/下有文件cloudcore.yaml
# 命令进入cloudcore.yaml文件,如果没有vim工具,可以使用vivim /etc/kubeedge/config/cloudcore.yaml
cloudcore.yaml配置如下
# 其中较为重要的配置项都已加上注释apiVersion: cloudcore.config.kubeedge.io/v1alpha1commonConfig:tunnelPort: 10350kind: CloudCorekubeAPIConfig:burst: 200contentType: application/vnd.kubernetes.protobufkubeConfig: /root/.kube/configmaster: ""qps: 100modules:cloudHub:advertiseAddress:- 10.10.103.108 # 云端IP地址dnsNames:- ""edgeCertSigningDuration: 365enable: true # 启动cloudHub模块https:address: 0.0.0.0enable: trueport: 10002keepaliveInterval: 30 # 心跳时间nodeLimit: 1000quic:address: 0.0.0.0enable: falsemaxIncomingStreams: 10000port: 10001tlsCAFile: /etc/kubeedge/ca/rootCA.crt # rootCA证书路径tlsCAKeyFile: /etc/kubeedge/ca/rootCA.key # rootCA证书路径tlsCertFile: /etc/kubeedge/certs/server.crt # server证书路径tlsPrivateKeyFile: /etc/kubeedge/certs/server.key # server证书路径tokenRefreshDuration: 12unixsocket:address: unix:///var/lib/kubeedge/kubeedge.sockenable: truewebsocket:address: 0.0.0.0enable: true # 启动cloudHub的websocket功能port: 10000 # cloudHub的websocket端口writeTimeout: 30cloudStream:enable: falsestreamPort: 10003tlsStreamCAFile: /etc/kubeedge/ca/streamCA.crttlsStreamCertFile: /etc/kubeedge/certs/stream.crttlsStreamPrivateKeyFile: /etc/kubeedge/certs/stream.keytlsTunnelCAFile: /etc/kubeedge/ca/rootCA.crttlsTunnelCertFile: /etc/kubeedge/certs/server.crttlsTunnelPrivateKeyFile: /etc/kubeedge/certs/server.keytunnelPort: 10004deviceController:buffer:deviceEvent: 1deviceModelEvent: 1updateDeviceStatus: 1024context:receiveModule: devicecontrollerresponseModule: cloudhubsendModule: cloudhubenable: true # 开启deviceController模块load:updateDeviceStatusWorkers: 1UpdateDeviceUpdateStatusWorkers: 1kafkaForwardEnable: true # 开启kafka功能kafkaUrl: http://10.10.103.108:19092/topics/test/messages?sync # kafka地址dynamicController:enable: true # 开启dynamicControlleredgeController:buffer:configMapEvent: 1deletePod: 1024endpointsEvent: 1podEvent: 1queryConfigMap: 1024queryEndpoints: 1024queryNode: 1024queryPersistentVolume: 1024queryPersistentVolumeClaim: 1024querySecret: 1024queryService: 1024queryVolumeAttachment: 1024ruleEndpointsEvent: 1rulesEvent: 1secretEvent: 1serviceAccountToken: 1024serviceEvent: 1updateNode: 1024updateNodeStatus: 1024updatePodStatus: 1024context:receiveModule: edgecontrollerresponseModule: cloudhubsendModule: cloudhubsendRouterModule: routerenable: true # 开启edgeController模块load:ServiceAccountTokenWorkers: 4UpdateRuleStatusWorkers: 4deletePodWorkers: 4queryConfigMapWorkers: 4queryEndpointsWorkers: 4queryNodeWorkers: 4queryPersistentVolumeClaimWorkers: 4queryPersistentVolumeWorkers: 4querySecretWorkers: 4queryServiceWorkers: 4queryVolumeAttachmentWorkers: 4updateNodeStatusWorkers: 1updateNodeWorkers: 4updatePodStatusWorkers: 1nodeUpdateFrequency: 10router:address: 0.0.0.0enable: true # 开启路由port: 9443restTimeout: 20syncController:enable: true # 开启syncController模块
编写完成后,用以下命令保存并退出vim编辑器
# 退出vim:wq!
2.编写启动文件
在目录/etc/systemd/system/下,用以下命令编写启动文件cloudcore.service
# 编写启动文件vim /etc/systemd/system/cloudcore.service
启动文件内容如下
[Unit]Description=cloudcore.service[Service]Type=simpleExecStart=/usr/local/bin/cloudcore # cloudcore二进制文件所处位置Restart=always # 重启策略RestartSec=10 # 重启时间[Install]WantedBy=multi-user.target
编写好后,用以下命令退出并保存启动文件
# 退出并保存vim:wq!
3.编译CloudCore
进入kubeedge项目所在文件夹
# 进入kubeedge目录cd $GOPATH/src/shangqi-kubeedge
编译CloudCore
# 编译CloudCoremake all WHAT=cloudcore
将编译好的文件发送到指定目录下
# 发送二进制文件cp _output/local/bin/cloudcore /usr/local/bin
4.二进制启动CloudCore
启动CloudCore
# 启动CloudCoresystemctl start cloudcore
可以通过如下命令检查CloudCore是否启动成功
# 检查CloudCore是否启动成功systemctl status cloudcore● cloudcore.serviceLoaded: loaded (/etc/systemd/system/cloudcore.service; enabled; vendor preset: disabled)Active: active (running) since 三 2021-10-20 20:37:11 CST; 13h agoMain PID: 11332 (cloudcore)Tasks: 10Memory: 137.3MCGroup: /system.slice/cloudcore.service└─11332 /usr/local/bin/cloudcore10月 21 10:32:29 k8s-master-108 cloudcore[11332]: W1021 10:32:29.857377 11332 upstream.go:162] Device firefly112-sn-vehicle-speeds-service does not exist in downstream controller10月 21 10:32:29 k8s-master-108 cloudcore[11332]: I1021 10:32:29.857402 11332 upstream.go:149] Message: a22a95e1-c5a0-4203-9be5-bacec81409dc, operation is: update, and resource is: no.../edge_updated10月 21 10:32:29 k8s-master-108 cloudcore[11332]: W1021 10:32:29.857567 11332 upstream.go:162] Device firefly112-sn-test-status1 does not exist in downstream controller10月 21 10:32:30 k8s-master-108 cloudcore[11332]: I1021 10:32:30.193620 11332 message.go:68] get a message, header:{ID:7f3088e3-4500-4405-a84d-6258fee0622f ParentID: Timestamp:1634783...evice/update}10月 21 10:32:30 k8s-master-108 cloudcore[11332]: I1021 10:32:30.211543 11332 upstream.go:119] Dispatch message: ba271cc3-e396-4ada-a849-189d12dfbdc510月 21 10:32:30 k8s-master-108 cloudcore[11332]: I1021 10:32:30.211578 11332 upstream.go:126] Message: ba271cc3-e396-4ada-a849-189d12dfbdc5, resource type is: twin/edge_updated10月 21 10:32:30 k8s-master-108 cloudcore[11332]: I1021 10:32:30.211612 11332 upstream.go:149] Message: ba271cc3-e396-4ada-a849-189d12dfbdc5, operation is: update, and resource is: no.../edge_updated10月 21 10:32:30 k8s-master-108 cloudcore[11332]: I1021 10:32:30.705074 11332 eventbus.go:210] message is send to target successfully. msgID: 7f3088e3-4500-4405-a84d-6258fee0622f, target: rest10月 21 10:32:30 k8s-master-108 cloudcore[11332]: I1021 10:32:30.705273 11332 upstream.go:269] Message: ba271cc3-e396-4ada-a849-189d12dfbdc5 process successfully10月 21 10:32:30 k8s-master-108 cloudcore[11332]: I1021 10:32:30.705314 11332 channelq.go:270] [it's int64]Hint: Some lines were ellipsized, use -l to show in full.
二、部署边端
1.安装证书
将证书放置在指定目录下
cp register.crt /etc/kubeedge/certs/cp register.key /etc/kubeedge/certs/cp server.crt /etc/kubeedge/certs/cp server.key /etc/kubeedge/certs/
2.配置文件
在边缘端环境下,在目录/etc/kubeedge/config/下有文件edgecore.yaml
# 命令进入edgecore.yaml文件,如果没有vim工具,可以使用vivim /etc/kubeedge/config/edgecore.yaml
edgecore.yaml配置如下,其中,第35行的token可以由cloud端获取,使用命令kubectl get secret -nkubeedge tokensecret -o=jsonpath=’{.data.tokendata}’ | base64 -d
# 其中较为重要的配置项都已加上注释apiVersion: edgecore.config.kubeedge.io/v1alpha1database:aliasName: defaultdataSource: /var/lib/kubeedge/edgecore.db # 数据库sqlite所在目录driverName: sqlite3kind: EdgeCoremodules:dbTest:enable: falsedeviceTwin:enable: true # 启动deviceTwin模块standardDevicePath: /etc/kubeedge/standardedgeHub:domain: https://10.10.103.108 # 注册中心地址enable: true # 启动edgeHub模块heartbeat: 15 # edgeHub模块心跳时间httpServer: https://10.10.103.108:10002intervalTime: 86400 # 注册中心轮询时间path: /harmonycloud/v1/register # 注册中心路由projectID: e632aba927ea4ac2b575ec1603d56f10quic:enable: falsehandshakeTimeout: 30readDeadline: 15server: 192.168.123.211:10001writeDeadline: 15registerPort: 30888rotateCertificates: trueserverCrt: /etc/kubeedge/certs/register.crt # 注册中心证书地址serverKey: /etc/kubeedge/certs/register.key # 注册中心证书地址tlsCaFile: /etc/kubeedge/ca/rootCA.crt # rootCA证书地址tlsCertFile: /etc/kubeedge/certs/server.crt # server证书地址tlsPrivateKeyFile: /etc/kubeedge/certs/server.key # server证书地址token: 90c453e55c436b773fc65aebe9ef0c213f64b28f903c88814545d818b5903501.eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE2MzQyMDM2MjB9.HgSrmEMUZZKTxGuihdE7af4WY_8HXBBvMlcjnV2vhEA # token由cloud端获得websocket:enable: true # 开启websocket模块handshakeTimeout: 30readDeadline: 15server: 10.10.103.108:10000 # 云端地址writeDeadline: 15edgeStream:enable: falsehandshakeTimeout: 30readDeadline: 15server: 10.10.103.108:10004tlsTunnelCAFile: /etc/kubeedge/ca/rootCA.crttlsTunnelCertFile: /etc/kubeedge/certs/server.crttlsTunnelPrivateKeyFile: /etc/kubeedge/certs/server.keywriteDeadline: 15edged:cgroupDriver: cgroupfscgroupRoot: ""cgroupsPerQOS: trueclusterDNS: ""clusterDomain: ""cniBinDir: /opt/cni/bincniCacheDirs: /var/lib/cni/cachecniConfDir: /etc/cni/net.dconcurrentConsumers: 5devicePluginEnabled: falsedockerAddress: unix:///var/run/docker.sockedgedMemoryCapacity: 7852396000enable: true # 启动edged模块enableMetrics: truegpuPluginEnabled: falsehostnameOverride: firefly112-sn # hostname构成为vin-snimageGCHighThreshold: 80imageGCLowThreshold: 40imagePullProgressDeadline: 60maximumDeadContainersPerPod: 1networkPluginMTU: 1500nodeIP: 192.168.123.211 # edge端的IPnodeStatusUpdateFrequency: 10podSandboxImage: kubeedge/pause:3.1registerNode: trueregisterNodeNamespace: defaultremoteImageEndpoint: unix:///var/run/dockershim.sockremoteRuntimeEndpoint: unix:///var/run/dockershim.sockruntimeRequestTimeout: 2runtimeType: dockervolumeStatsAggPeriod: 60000000000eventBus:enable: true # 启动eventBus模块eventBusTLS:enable: falsetlsMqttCAFile: /etc/kubeedge/ca/rootCA.crttlsMqttCertFile: /etc/kubeedge/certs/server.crttlsMqttPrivateKeyFile: /etc/kubeedge/certs/server.keymqttMode: 1 # mqttMode改为1,表示内外连接都可以mqttQOS: 1 # mqttQOS必须为1,否则无法接收到消息mqttRetain: falsemqttServerExternal: tcp://127.0.0.1:1883mqttServerInternal: tcp://127.0.0.1:1884mqttSessionQueueSize: 100metaManager:contextSendGroup: hubcontextSendModule: websocketenable: true # 启动metaManager模块metaServer:debug: falseenable: true # 启动metaServer模块podStatusSyncInterval: 60remoteQueryTimeout: 60serviceBus:enable: true # 启动serviceBus模块
3.编写启动文件
在目录/etc/systemd/system/下,用以下命令编写启动文件edgecore.service
# 编写启动文件
vim /etc/systemd/system/edgecore.service
启动文件内容如下
[Unit]
Description=edgecore.service
[Service]
Type=simple
ExecStart=/usr/local/bin/edgecore # edgecore二进制文件所处位置
Restart=always # 重启策略
RestartSec=10 # 重启时间
[Install]
WantedBy=multi-user.target
编写好后,用以下命令退出并保存启动文件
# 退出并保存vim
:wq!
4.编译EdgeCore
进入kubeedge项目所在文件夹
# 进入kubeedge目录
cd $GOPATH/src/shangqi-kubeedge
编译EdgeCore
# 编译EdgeCore
make all WHAT=edgecore
将编译好的文件发送到指定目录下
# 发送二进制文件
cp _output/local/bin/edgecore /usr/local/bin
5.二进制启动EdgeCore
启动EdgeCore
# 启动EdgeCore
systemctl start edgecore
可以通过如下命令检查EdgeCore是否启动成功
# 检查EdgeCore是否启动成功
systemctl status edgecore
● edgecore.service
Loaded: loaded (/etc/systemd/system/edgecore.service; enabled; vendor preset: enabled)
Active: active (running) since Thu 2021-10-21 10:55:48 CST; 8min ago
Main PID: 18819 (edgecore)
Tasks: 12 (limit: 4607)
CGroup: /system.slice/edgecore.service
└─18819 /usr/local/bin/edgecore
Oct 21 11:01:22 firefly-211 edgecore[18819]: =================================== {{f0b5dd50-9835-4123-adb1-693997c7bff9 8efb163e-0fa1-41ee-8ae5-e286a1798f6b 1634785282678 false} {edgecontroller resourc
Oct 21 11:01:22 firefly-211 edgecore[18819]: I1021 11:01:22.680875 18819 eventbus.go:90] Success in pubMQTT with topic: $hw/events/device/comfigMap/update
Oct 21 11:01:22 firefly-211 edgecore[18819]: AddDevices======================= [{firefly112-sn-mapper-version firefly112-sn-mapper-version SOA map[] map[]}]
Oct 21 11:01:22 firefly-211 edgecore[18819]: RemoveDevices======================= []
Oct 21 11:01:22 firefly-211 edgecore[18819]: I1021 11:01:22.681755 18819 device.go:575] device sub module will send membership to membership sub module
Oct 21 11:01:22 firefly-211 edgecore[18819]: I1021 11:01:22.683616 18819 process.go:297] DeviceTwin receive msg
Oct 21 11:01:22 firefly-211 edgecore[18819]: I1021 11:01:22.683857 18819 process.go:70] Send msg to the MemModule module in twin
Oct 21 11:01:22 firefly-211 edgecore[18819]: I1021 11:01:22.683986 18819 membership.go:121] Membership event
Oct 21 11:01:22 firefly-211 edgecore[18819]: I1021 11:01:22.684407 18819 membership.go:168] Add devices to edge group
Oct 21 11:01:22 firefly-211 edgecore[18819]: I1021 11:01:22.712442 18819 eventbus.go:90] Success in pubMQTT with topic: $hw/events/node/firefly112-sn/membership/updated
