KubeEdge EdgeMesh 高可用架构详解|KubeEdge云原生边缘计算社区
【摘要】 EdgeMesh项目解决了边缘计算场景下复杂网络的通信问题,中心化的edgemesh-server作为一个中继组件,协助其他节点进行网络穿透和流量中转。之前的edgemesh-server本身不具备高可用特性,会遇到性能瓶颈与单点故障问题,目前EdgeMesh v1.12版本的高可用架构不仅优化了上述问题,也带来了更加稳定的系统运行时,还覆盖了多种边缘网络的痛点场景,如分布式动态中继连接场景和私有
一、高可用特性应用场景
▍1.1 单点故障以及高负载场景
▍1.2 分布式动态中继连接场景
▍1.3 私有局域网网络自治场景
b. 在集群正常运转过程当中,部分节点离线后,这部分节点依旧可以通过EdgeMesh来维持相互之间的网络连接和流量转发。
二、高可用特性使用手册
▍2.1 基本原理介绍
▍2.2 部署时启用高可用特性
# 启用高可用特性
helm install edgemesh --namespace kubeedge \
--set agent.relayNodes[0].nodeName=k8s-master,agent.relayNodes[0].advertiseAddress="{1.1.1.1}" \
https://raw.githubusercontent.com/kubeedge/edgemesh/main/build/helm/edgemesh.tgz
-
relayNodes 参数是中继节点表,类型为 []relayNode,您可以通过配置它来指定集群中应该承担中继节点角色的edgemesh-agent。 -
relayNode.nodeName 参数使用节点名的方式来指定relay节点,这必须与K8s的节点名相同,您可以通过 kubectl get nodes 查看您的k8s节点名。
-
relayNode.advertiseAddress 参数用于指定relay节点的地址,其应当与节点在K8s集群当中的节点地址一致, 如果您购买了公有云的公网IP并挂载到此relay节点上,则 relayNode.advertiseAddress 参数最好应该填写该公网IP地址。
|
|
|
|
|
|
|
|
|
|
|
|
需要注意的是:设置中继节点的数量由 relayNodes[num] 中索引值 num 来规定,num 取值从 0 开始,relayNodes[0] 表示中继节点1。
-
helm安装:
-
手动安装:
▍2.3 运行时添加新中继节点
kubectl -n kubeedge edit configmap edgemesh-agent-cfg
# 进入config 文件当中进行编辑
apiVersion: v1
data:
edgemesh-agent.yaml: |-
modules:
edgeProxy:
enable: true
edgeTunnel:
enable: true
# 设置添加或者是修改为新的中继节点
relayNodes:
- nodeName: R1
advertiseAddress:
- 1.1.1.1
- nodeName: R2 <------ 在此配置新增节点
advertiseAddress:
- 192.168.5.103
# 查看节点是否正常添加
kubectl get nodes
NAME STATUS ROLES AGE VERSION
k8s-master Ready control-plane,master 249d v1.21.8
k8s-node1 Ready <none> 249d v1.21.8
ke-edge1 Ready agent,edge 234d v1.19.3-kubeedge-v1.8.2
ke-edge2 Ready agent,edge 5d v1.19.3-kubeedge-v1.8.2
R2 Ready agent,edge 1d v1.19.3-kubeedge-v1.8.2 <------ 新节点
# 查看中继节点的 edgemesh-agent 是否正常运行
kubectl get all -n kubeedge -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
pod/edgemesh-agent-59fzk 1/1 Running 0 10h 192.168.5.187 ke-edge1 <none> <none>
pod/edgemesh-agent-hfsmz 1/1 Running 1 10h 192.168.0.229 k8s-master <none> <none>
pod/edgemesh-agent-tvhks 1/1 Running 0 10h 192.168.0.71 k8s-node1 <none> <none>
pod/edgemesh-agent-tzntc 1/1 Running 0 10h 192.168.5.121 ke-edge2 <none> <none>
pod/edgemesh-agent-kasju 1/1 Running 0 10h 192.168.5.103 R2 <none> <none> <------ new edgemesh-agent running on R2
▍2.4 运行时转化节点成中继
-
edgemesh-agent会读取configmap里的中继节点表relayNodes,检查自己是否被用户设置为中继节点。如果在relayNodes中读取到R2存在,则表明R2被设置为默认初始的中继节点。
-
R2节点上的edgemesh-agent会尝试成为relay ,启动对应的中继功能。
-
如果发现该节点没有中继能力(一般挂载了公网IP的节点会具备中继能力),那么该节点还是不能承担起中继节点的角色,造成这个结果的原因可能是该节点的advertiseAddress并不能让所有节点访问。
三、课题总结
四、未来展望
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)