KubeEdge源码学习3:云边配置

本文仅为个人的学习笔记(速记),不具任何参考意义。
云、边配置。

1.2版本的一个改进,是使用程序生成配置信息(但需要自行重定向到文件)。在边缘端,能自动检测IP、主机名。但是还没实现根据系统位数和架构确认pause版本。

配置文件为 yaml 格式,云端、边缘端初始化时会读取文件,如果没有指定,而且默认位置/etc/kubeedge/config也没有,则报错。
读取后,转换成大结构体,再根据 Modules 传递到各模块。即各模块各自管理自己的配置项。(额外:如果是简单项目,可以一个结构体通用所有模块,简单方便)
一般情况,用最小配置即可,其它保持默认。

云端配置

最小配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
 ./cloudcore --minconfig
# With --minconfig , you can easily used this configurations as reference.
# It's useful to users who are new to KubeEdge, and you can modify/create your own configs accordingly.
# This configuration is suitable for beginners.

apiVersion: cloudcore.config.kubeedge.io/v1alpha1
kind: CloudCore
kubeAPIConfig:
kubeConfig: /root/.kube/config # 默认k8s配置文件
master: ""
modules:
cloudhub:
nodeLimit: 10
tlsCAFile: /etc/kubeedge/ca/rootCA.crt
tlsCertFile: /etc/kubeedge/certs/edge.crt
tlsPrivateKeyFile: /etc/kubeedge/certs/edge.key
unixsocket:
address: unix:///var/lib/kubeedge/kubeedge.sock
enable: true
websocket:
address: 0.0.0.0
enable: true
port: 10000

默认配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
./cloudcore --defaultconfig
# With --defaultconfig flag, users can easily get a default full config file as reference, with all fields (and field descriptions) included and default values set.
# Users can modify/create their own configs accordingly as reference.
# Because it is a full configuration, it is more suitable for advanced users.

apiVersion: cloudcore.config.kubeedge.io/v1alpha1
kind: CloudCore
kubeAPIConfig:
burst: 200
contentType: application/vnd.kubernetes.protobuf
kubeConfig: /root/.kube/config
master: ""
qps: 100
modules:
cloudhub:
enable: true
keepaliveInterval: 30
nodeLimit: 10
quic:
address: 0.0.0.0
maxIncomingStreams: 10000
port: 10001
tlsCAFile: /etc/kubeedge/ca/rootCA.crt
tlsCertFile: /etc/kubeedge/certs/edge.crt
tlsPrivateKeyFile: /etc/kubeedge/certs/edge.key
unixsocket:
address: unix:///var/lib/kubeedge/kubeedge.sock
enable: true
websocket:
address: 0.0.0.0
enable: true
port: 10000
writeTimeout: 30
edgecontroller:
buffer:
configmapEvent: 1
endpointsEvent: 1
podEvent: 1
queryConfigmap: 1024
queryEndpoints: 1024
queryNode: 1024
queryPersistentvolume: 1024
queryPersistentvolumeclaim: 1024
querySecret: 1024
queryService: 1024
queryVolumeattachment: 1024
secretEvent: 1
serviceEvent: 1
updateNode: 1024
updateNodeStatus: 1024
updatePodStatus: 1024
context:
receiveModule: edgecontroller
responseModule: cloudhub
sendModule: cloudhub
enable: true
load:
queryConfigmapWorkers: 4
queryEndpointsWorkers: 4
queryNodeWorkers: 4
queryPersistentColumeClaimWorkers: 4
queryPersistentVolumeWorkers: 4
querySecretWorkers: 4
queryServiceWorkers: 4
queryVolumeAttachmentWorkers: 4
updateNodeStatusWorkers: 1
updateNodeWorkers: 4
updatePodStatusWorkers: 1
nodeUpdateFrequency: 10

边缘端配置

程序运行时,会获取网口及对应的 IP 地址,可自动检测真实的 IP。(额外:如果有多个 IP,但只有一个有默认网关,应该可以检测,待议)

最小配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
$ ./edgecore --minconfig
2020-02-18 22:51:09.753952 I | INFO: Install client plugin, protocol: rest
2020-02-18 22:51:09.780037 I | INFO: Installed service discovery plugin: edge
I0218 22:51:10.063748 873 util.go:395] Looking for default routes with IPv4 addresses
I0218 22:51:10.063875 873 util.go:400] Default route transits interface "enp0s3"
I0218 22:51:10.109175 873 util.go:209] Interface enp0s3 is up
I0218 22:51:10.111900 873 util.go:257] Interface "enp0s3" has 2 addresses :[172.18.18.10/16 fe80::a2d:57ce:28ba:4290/64].
I0218 22:51:10.119191 873 util.go:225] Checking addr 172.18.18.10/16.
I0218 22:51:10.119314 873 util.go:232] IP found 172.18.18.10
I0218 22:51:10.126894 873 util.go:263] Found valid IPv4 address 172.18.18.10 for interface "enp0s3".
I0218 22:51:10.126980 873 util.go:406] Found active IP 172.18.18.10
# With --minconfig , you can easily used this configurations as reference.
# It's useful to users who are new to KubeEdge, and you can modify/create your own configs accordingly.
# This configuration is suitable for beginners.

apiVersion: edgecore.config.kubeedge.io/v1alpha1
database:
dataSource: /var/lib/kubeedge/edgecore.db
kind: EdgeCore
modules:
edged:
cgroupDriver: cgroupfs
clusterDNS: ""
clusterDomain: ""
devicePluginEnabled: false
dockerAddress: unix:///var/run/docker.sock
gpuPluginEnabled: false
hostnameOverride: latelee-VirtualBox
interfaceName: eth0
nodeIP: 172.18.18.10
podSandboxImage: kubeedge/pause:3.1
remoteImageEndpoint: unix:///var/run/dockershim.sock
remoteRuntimeEndpoint: unix:///var/run/dockershim.sock
runtimeType: docker
edgehub:
heartbeat: 15
tlsCaFile: /etc/kubeedge/ca/rootCA.crt
tlsCertFile: /etc/kubeedge/certs/edge.crt
tlsPrivateKeyFile: /etc/kubeedge/certs/edge.key
websocket:
enable: true
handshakeTimeout: 30
readDeadline: 15
server: 127.0.0.1:10000
writeDeadline: 15
eventbus:
mqttMode: 2
mqttQOS: 0
mqttRetain: false
mqttServerExternal: tcp://127.0.0.1:1883
mqttServerInternal: tcp://127.0.0.1:1884

默认配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
./edgecore --defaultconfig
2020-02-18 22:54:25.586421 I | INFO: Install client plugin, protocol: rest
2020-02-18 22:54:25.587414 I | INFO: Installed service discovery plugin: edge
I0218 22:54:25.588917 887 util.go:395] Looking for default routes with IPv4 addresses
I0218 22:54:25.589682 887 util.go:400] Default route transits interface "enp0s3"
I0218 22:54:25.591263 887 util.go:209] Interface enp0s3 is up
I0218 22:54:25.591991 887 util.go:257] Interface "enp0s3" has 2 addresses :[172.18.18.10/16 fe80::a2d:57ce:28ba:4290/64].
I0218 22:54:25.593474 887 util.go:225] Checking addr 172.18.18.10/16.
I0218 22:54:25.593883 887 util.go:232] IP found 172.18.18.10
I0218 22:54:25.594312 887 util.go:263] Found valid IPv4 address 172.18.18.10 for interface "enp0s3".
I0218 22:54:25.594539 887 util.go:406] Found active IP 172.18.18.10
I0218 22:54:25.613268 887 util.go:395] Looking for default routes with IPv4 addresses
I0218 22:54:25.613309 887 util.go:400] Default route transits interface "enp0s3"
I0218 22:54:25.613599 887 util.go:209] Interface enp0s3 is up
I0218 22:54:25.613761 887 util.go:257] Interface "enp0s3" has 2 addresses :[172.18.18.10/16 fe80::a2d:57ce:28ba:4290/64].
I0218 22:54:25.613818 887 util.go:225] Checking addr 172.18.18.10/16.
I0218 22:54:25.613845 887 util.go:232] IP found 172.18.18.10
I0218 22:54:25.613867 887 util.go:263] Found valid IPv4 address 172.18.18.10 for interface "enp0s3".
I0218 22:54:25.613884 887 util.go:406] Found active IP 172.18.18.10
# With --defaultconfig flag, users can easily get a default full config file as reference, with all fields (and field descriptions) included and default values set.
# Users can modify/create their own configs accordingly as reference.
# Because it is a full configuration, it is more suitable for advanced users.

apiVersion: edgecore.config.kubeedge.io/v1alpha1
database:
aliasName: default
dataSource: /var/lib/kubeedge/edgecore.db
driverName: sqlite3
kind: EdgeCore
modules:
dbtest:
enable: false
devicetwin:
enable: true
edged:
cgroupDriver: cgroupfs
clusterDNS: ""
clusterDomain: ""
devicePluginEnabled: false
dockerAddress: unix:///var/run/docker.sock
edgedMemoryCapacity: 7852396000
enable: true
gpuPluginEnabled: false
hostnameOverride: latelee-VirtualBox
imageGCHighThreshold: 80
imageGCLowThreshold: 40
imagePullProgressDeadline: 60
interfaceName: eth0
maximumDeadContainersPerPod: 1
nodeIP: 172.18.18.10
nodeStatusUpdateFrequency: 10
podSandboxImage: kubeedge/pause:3.1
registerNode: true
registerNodeNamespace: default
remoteImageEndpoint: unix:///var/run/dockershim.sock
remoteRuntimeEndpoint: unix:///var/run/dockershim.sock
runtimeRequestTimeout: 2
runtimeType: docker
edgehub:
enable: true
heartbeat: 15
projectID: e632aba927ea4ac2b575ec1603d56f10
quic:
handshakeTimeout: 30
readDeadline: 15
server: 127.0.0.1:10001
writeDeadline: 15
tlsCaFile: /etc/kubeedge/ca/rootCA.crt
tlsCertFile: /etc/kubeedge/certs/edge.crt
tlsPrivateKeyFile: /etc/kubeedge/certs/edge.key
websocket:
enable: true
handshakeTimeout: 30
readDeadline: 15
server: 127.0.0.1:10000
writeDeadline: 15
edgemesh:
enable: true
lbStrategy: RoundRobin
eventbus:
enable: true
mqttMode: 2
mqttQOS: 0
mqttRetain: false
mqttServerExternal: tcp://127.0.0.1:1883
mqttServerInternal: tcp://127.0.0.1:1884
mqttSessionQueueSize: 100
metamanager:
contextSendGroup: hub
contextSendModule: websocket
enable: true
podStatusSyncInterval: 60
servicebus:
enable: false