Kubeedge1.15版本安装edgemesh(超详解)
1、Kubeedge安装edgemesh前置
参考官网链接:边缘 Kube-API 端点 | EdgeMesh
1.1、配置云端cloudcore
在云端,开启 dynamicController 模块,配置完成后,需要重启 cloudcore,这里Kubeedge,我这里没有找到/etc/kubeedge/config/cloudcore.yaml文件,看官方文档解释是因为采用keadm安装,用提示的keadm init这个要重新初始化,我不建议!采用下面的kubectl edit命令好点,能打开就行!!!
$ kubectl edit cm cloudcore -n kubeedge
//修改完,重启cloudcore
systemctl restart cloudcore
1.2、配置边缘端
1)在边缘节点,打开 metaServer 模块(如果你的 KubeEdge < 1.8.0,还需关闭旧版 edgeMesh 模块),配置完成后,需要重启 edgecore
$ vim /etc/kubeedge/config/edgecore.yaml
modules:
...
edgeMesh:
enable: false
...
metaManager:
metaServer:
enable: true //配置这里
...
//重启edgecore
$ systemctl restart edgecore
2)在边缘节点,配置 clusterDNS 和 clusterDomain,配置完成后,需要重启 edgecore
$ vim /etc/kubeedge/config/edgecore.yaml
modules:
...
edged:
clusterDNS: 169.254.96.16
clusterDomain: cluster.local
...
//如果 KubeEdge >= v1.12.0,请这样配置:
$ vim /etc/kubeedge/config/edgecore.yaml
modules:
...
edged:
...
tailoredKubeletConfig:
...
clusterDNS:
- 169.254.96.16
clusterDomain: cluster.local
...
//重启edgecore
$ systemctl restart edgecore
[^]: 提示步骤3的配置是为了边缘应用能够访问到 EdgeMesh 的 DNS 服务,与边缘 Kube-API 端点本身无关,但为了配置的流畅性,还是放在这里说明。clusterDNS 设置的值 ‘169.254.96.16’ 来自于 commonConfig在新窗口打开 中 bridgeDeviceIP 的默认值,正常情况下无需修改,非得修改请保持两者一致。
3)最后,在边缘节点,测试边缘 Kube-API 端点功能是否正常
$ curl 127.0.0.1:10550/api/v1/services
{"apiVersion":"v1","items":[{"apiVersion":"v1","kind":"Service","metadata":{"creationTimestamp":"2021-04-14T06:30:05Z","labels":{"component":"apiserver","provider":"kubernetes"},"name":"kubernetes","namespace":"default","resourceVersion":"147","selfLink":"default/services/kubernetes","uid":"55eeebea-08cf-4d1a-8b04-e85f8ae112a9"},"spec":{"clusterIP":"10.96.0.1","ports":[{"name":"https","port":443,"protocol":"TCP","targetPort":6443}],"sessionAffinity":"None","type":"ClusterIP"},"status":{"loadBalancer":{}}},{"apiVersion":"v1","kind":"Service","metadata":{"annotations":{"prometheus.io/port":"9153","prometheus.io/scrape":"true"},"creationTimestamp":"2021-04-14T06:30:07Z","labels":{"k8s-app":"kube-dns","kubernetes.io/cluster-service":"true","kubernetes.io/name":"KubeDNS"},"name":"kube-dns","namespace":"kube-system","resourceVersion":"203","selfLink":"kube-system/services/kube-dns","uid":"c221ac20-cbfa-406b-812a-c44b9d82d6dc"},"spec":{"clusterIP":"10.96.0.10","ports":[{"name":"dns","port":53,"protocol":"UDP","targetPort":53},{"name":"dns-tcp","port":53,"protocol":"TCP","targetPort":53},{"name":"metrics","port":9153,"protocol":"TCP","targetPort":9153}],"selector":{"k8s-app":"kube-dns"},"sessionAffinity":"None","type":"ClusterIP"},"status":{"loadBalancer":{}}}],"kind":"ServiceList","metadata":{"resourceVersion":"377360","selfLink":"/api/v1/services"}}
2、安装Edgemesh
2.1、两种安装方式,俺只会手动安装
edgemesh云端和边缘端都要安装,具体会说:
mater节点(云端):
1)手动安装Edgemesh,自己主机上下下来,再传给云端节点也行!
git clone https://github.com/kubeedge/edgemesh.git
cd edgemesh
2)安装CRDs
kubectl apply -f build/crds/istio/
customresourcedefinition.apiextensions.k8s.io/destinationrules.networking.istio.io created
customresourcedefinition.apiextensions.k8s.io/gateways.networking.istio.io created
customresourcedefinition.apiextensions.k8s.io/virtualservices.networking.istio.io created
3)部署 edgemesh-agent
kubectl apply -f build/agent/resources/
serviceaccount/edgemesh-agent created
clusterrole.rbac.authorization.k8s.io/edgemesh-agent created
clusterrolebinding.rbac.authorization.k8s.io/edgemesh-agent created
configmap/edgemesh-agent-cfg created
configmap/edgemesh-agent-psk created
daemonset.apps/edgemesh-agent created
提示
请根据你的 K8s 集群设置 build/agent/resources/04-configmap.yaml 的 relayNodes,并重新生成 PSK 密码。
这里有个提示,我们要修改build/agent/resources/04-configmap.yaml
这个文件,使用以下命令:
cd build/agent/resources
vim 04-configmap.yaml
改成如图所示:
注意最下面的psk设置,重新另起一个终端,使用以下命令生成psk,下面也标注了如何生成PSK,一定要重新生成!然后填上去保存,然后重新运行步骤3的部署。
openssl rand -base64 32
4)检验部署结果
kubectl get all -n kubeedge -o wide
后面云边协同通信测试请看参考链接2或者去看官方链接:快速上手 | EdgeMesh
参考链接:
1、go学习文档链接:轻松搞懂goroot与gopath区别 · go学习3部曲:入门,进阶,实战 · 看云 (kancloud.cn)
2、安装edgemesh链接:https://bbs.huaweicloud.com/blogs/397506
3、安装Edgemesh会遇到的问题:全网最全EdgeMesh Q&A手册 - 知乎 (zhihu.com)
4、官网Edgemesh链接:kubeedge/edgemesh: Simplified network and services for edge applications (github.com)
mesh链接:kubeedge/edgemesh: Simplified network and services for edge applications (github.com)