五月婷婷丁香性爱|j久久一级免费片|久久美女福利视频|中文观看在线观看|加勒比四区三区二|亚洲裸女视频网站|超碰97AV在线69网站免费观看|有码在线免费视频|久久青青日本视频|亚洲国产AAAA

KubeEdge EdgeMesh 高可用架構(gòu)詳解

來源:容器魔方

EdgeMesh項(xiàng)目解決了邊緣計(jì)算場景下復(fù)雜網(wǎng)絡(luò)的通信問題,中心化的edgemesh-server作為一個(gè)中繼組件,協(xié)助其他節(jié)點(diǎn)進(jìn)行網(wǎng)絡(luò)穿透和流量中轉(zhuǎn)。之前的edgemesh-server本身不具備高可用特性,會(huì)遇到性能瓶頸與單點(diǎn)故障問題,目前EdgeMesh v1.12版本的高可用架構(gòu)不僅優(yōu)化了上述問題,也帶來了更加穩(wěn)定的系統(tǒng)運(yùn)行時(shí),還覆蓋了多種邊緣網(wǎng)絡(luò)的痛點(diǎn)場景,如分布式動(dòng)態(tài)中繼連接場景和私有局域網(wǎng)的網(wǎng)絡(luò)自治場景等。此外,EdgeMesh 在v1.12中還帶來了基于PSK密碼的安全連接、對(duì)接HTTPS的邊緣Kube API Endpoint等特性和能力,整體提升了EdgeMesh的性能、穩(wěn)定性與安全性。

作為開源之夏課題【EdgeMesh:高可用架構(gòu)的設(shè)計(jì)與實(shí)現(xiàn) 】的實(shí)踐者,這是我第一次接觸開源社區(qū)相關(guān)的項(xiàng)目,非常有幸能深入地參與到KubeEdge開源項(xiàng)目的開發(fā)之中,也非常開心能夠參與EdgeMesh高可用特性的方案設(shè)計(jì)與代碼開發(fā)。我將通過高可用特性應(yīng)用場景、高可用特性使用手冊(cè)、課題總結(jié)、未來展望等四個(gè)部分的內(nèi)容來向大家介紹新版本EdgeMesh的高可用架構(gòu)以及我個(gè)人在KubeEdge社區(qū)的成長經(jīng)歷。

一、高可用特性應(yīng)用場景

一、高可用特性應(yīng)用場景

活動(dòng)規(guī)則

活動(dòng)對(duì)象:華為云電銷客戶及渠道伙伴客戶可參與消費(fèi)滿送活動(dòng),其他客戶參與前請(qǐng)咨詢客戶經(jīng)理

活動(dòng)時(shí)間: 2020年8月12日-2020年9月11日

高可用架構(gòu)的主要目的是為了保障系統(tǒng)的穩(wěn)定性以及提升系統(tǒng)的整體性能,此次EdgeMesh的高可用特性在原有功能的基礎(chǔ)上還覆蓋了多種邊緣網(wǎng)絡(luò)的痛點(diǎn)場景。以下為EdgeMesh高可用特性在邊緣計(jì)算場景下的具體應(yīng)用場景,用戶可以依據(jù)這些用例來理解本特性能提供的服務(wù)。

1.1 單點(diǎn)故障以及高負(fù)載場景

如圖所示,當(dāng)單個(gè)節(jié)點(diǎn)承擔(dān)中繼功能時(shí),所有其他的節(jié)點(diǎn)都需要連接該節(jié)點(diǎn)才能夠獲取網(wǎng)絡(luò)連接的服務(wù)。在這樣的場景當(dāng)中,單個(gè)節(jié)點(diǎn)的負(fù)載就會(huì)相應(yīng)地增加,過高的通信負(fù)載或者是密集的連接數(shù)量,在諸多情況下是限制服務(wù)性能的主要原因,同時(shí)如果該節(jié)點(diǎn)出現(xiàn)故障則會(huì)導(dǎo)致中繼連接斷開,使得中繼連接功能暫時(shí)性停滯。

為了能夠優(yōu)化這部分的問題,覆蓋高負(fù)載訪問場景,EdgeMesh 新版本考量使用分布式網(wǎng)絡(luò)連接的思想,通過給予每一個(gè)節(jié)點(diǎn)能夠提供中繼功能的結(jié)構(gòu),使每一個(gè)節(jié)點(diǎn)都具有為其他節(jié)點(diǎn)提供中繼的能力。

針對(duì)這部分場景需求,用戶可以在集群初始化時(shí)指定多個(gè)特定的節(jié)點(diǎn)作為默認(rèn)的中繼節(jié)點(diǎn),依據(jù)自身情況調(diào)節(jié)集群內(nèi)負(fù)載的分配,EdgeMesh將會(huì)在提供中繼服務(wù)的時(shí)候,優(yōu)先嘗試連接這些節(jié)點(diǎn);如果不做設(shè)置,EdgeMesh也會(huì)尋找合適的節(jié)點(diǎn)執(zhí)行中繼功能,分散減輕單個(gè)節(jié)點(diǎn)的中繼訪問負(fù)擔(dān)。

1.2 分布式動(dòng)態(tài)中繼連接場景

如圖所示,位于上海的邊緣應(yīng)用A和B通過中繼互相通信,需要把流量轉(zhuǎn)發(fā)到處于北京數(shù)據(jù)中心里的relay節(jié)點(diǎn),數(shù)據(jù)傳輸在遠(yuǎn)距離的兩地之間繞了一圈,導(dǎo)致服務(wù)時(shí)延較長,用戶體驗(yàn)較差。非常遺憾的是,邊緣計(jì)算場景下集群規(guī)模經(jīng)常橫跨多地或者是多區(qū)域部署,如果中繼節(jié)點(diǎn)距離請(qǐng)求服務(wù)的節(jié)點(diǎn)非常遙遠(yuǎn),就會(huì)造成極大的延遲,影響用戶的體驗(yàn)。這個(gè)情況尤其是在中繼連接對(duì)象與自己不在相鄰地理位置下的時(shí)候,體現(xiàn)得尤為明顯。

為了能夠優(yōu)化這部分的體驗(yàn),覆蓋遠(yuǎn)距離服務(wù)場景,EdgeMesh新版本考量就近中繼的原則,用戶可以根據(jù)集群節(jié)點(diǎn)的地理位置分布情況,支持選擇一個(gè)地理位置適中的relay節(jié)點(diǎn)。當(dāng)應(yīng)用需要中繼連接服務(wù)的時(shí)候,edgemesh-agent就會(huì)動(dòng)態(tài)優(yōu)先選擇就近的relay節(jié)點(diǎn)作為中繼來提供網(wǎng)絡(luò)連接服務(wù),以此縮短中繼服務(wù)的時(shí)延。

1.3 私有局域網(wǎng)網(wǎng)絡(luò)自治場景

如圖所示,在老版本的EdgeMesh的代碼實(shí)現(xiàn)中,edgemesh-agent必須保持與云上中繼服務(wù)edgemesh-server的連接,當(dāng)局域網(wǎng)內(nèi)的節(jié)點(diǎn)離線后,導(dǎo)致edgemesh-agent斷開與中繼節(jié)點(diǎn)的連接,斷連節(jié)點(diǎn)上的服務(wù)就徹底失去流量代理的能力了,這在部分私有局域網(wǎng)網(wǎng)絡(luò)內(nèi)或者是網(wǎng)絡(luò)情況波動(dòng)較大的環(huán)境當(dāng)中會(huì)給用戶造成較大的困擾。

為了能夠優(yōu)化這部分的問題,提高網(wǎng)絡(luò)應(yīng)用連接的穩(wěn)定性,EdgeMesh 新版本考量了分布式管理及網(wǎng)絡(luò)自治的想法,讓EdgeMesh能夠通過mDNS機(jī)制保障私有局域網(wǎng)網(wǎng)絡(luò)內(nèi)或者是離線局域網(wǎng)內(nèi)節(jié)點(diǎn)之間的相互發(fā)現(xiàn)和轉(zhuǎn)發(fā)流量,維持應(yīng)用服務(wù)的正常運(yùn)轉(zhuǎn)。

針對(duì)這部分場景需求,用戶并不需要再單獨(dú)設(shè)置任何的參數(shù)來啟用此功能,該功能一般面對(duì)兩種情形進(jìn)行服務(wù)維持:

a. 在剛部署EdgeMesh的時(shí)候,部分節(jié)點(diǎn)就已經(jīng)在私有局域網(wǎng)下,那這個(gè)局域網(wǎng)內(nèi)的節(jié)點(diǎn)依舊可以通過EdgeMesh來相互之間訪問和轉(zhuǎn)發(fā)流量。

b. 在集群正常運(yùn)轉(zhuǎn)過程當(dāng)中,部分節(jié)點(diǎn)離線后,這部分節(jié)點(diǎn)依舊可以通過EdgeMesh來維持相互之間的網(wǎng)絡(luò)連接和流量轉(zhuǎn)發(fā)。

二、高可用特性使用手冊(cè)

二、高可用特性使用手冊(cè)

活動(dòng)規(guī)則

活動(dòng)對(duì)象:華為云電銷客戶及渠道伙伴客戶可參與消費(fèi)滿送活動(dòng),其他客戶參與前請(qǐng)咨詢客戶經(jīng)理

活動(dòng)時(shí)間: 2020年8月12日-2020年9月11日

2.1 基本原理介紹

在EdgeMesh v1.12版本中,社區(qū)將edgemesh-server的能力合并到了edgemesh-agent的EdgeTunnel模塊當(dāng)中,使得具備中繼能力的edgemesh-agent能夠自動(dòng)成為中繼服務(wù)器,為其他節(jié)點(diǎn)提供內(nèi)網(wǎng)穿透和中繼轉(zhuǎn)發(fā)的功能,新老系統(tǒng)架構(gòu)對(duì)比如下:

EdgeMesh高可用特性的主要實(shí)現(xiàn)原理是:當(dāng)集群內(nèi)有節(jié)點(diǎn)具備中繼能力時(shí),其上的edgemesh-agent會(huì)承擔(dān)起中繼節(jié)點(diǎn)的角色,來為其他節(jié)點(diǎn)提供內(nèi)網(wǎng)穿透和流量中繼轉(zhuǎn)發(fā)的服務(wù)。在集群初始化或者是有節(jié)點(diǎn)新加入集群時(shí),EdgeMesh系統(tǒng)會(huì)基于mDNS機(jī)制發(fā)現(xiàn)局域網(wǎng)內(nèi)的節(jié)點(diǎn)并作記錄,同時(shí)DHT機(jī)制會(huì)發(fā)現(xiàn)跨局域網(wǎng)的其他節(jié)點(diǎn)并對(duì)其發(fā)起連接建立請(qǐng)求,這樣當(dāng)集群內(nèi)跨局域網(wǎng)的兩節(jié)點(diǎn)需要連接的時(shí)候,中繼節(jié)點(diǎn)就可以為它們提供流量中繼和協(xié)助內(nèi)網(wǎng)穿透的服務(wù)。

EdgeMesh高可用特性的核心功能如上圖所示,集群當(dāng)中A節(jié)點(diǎn)與B節(jié)點(diǎn)通過R1中繼節(jié)點(diǎn)連接來提供服務(wù),當(dāng)R1節(jié)點(diǎn)無法提供中繼服務(wù)的時(shí)候,A、B節(jié)點(diǎn)可以通過高可用特性自動(dòng)切換到中繼節(jié)點(diǎn)R2并重新建立連接。在這個(gè)過程當(dāng)中用戶幾乎感受不到網(wǎng)絡(luò)連接的變化。

接下來我將簡單介紹不同情況下使用EdgeMesh高可用特性的方式。

2.2 部署時(shí)啟用高可用特性

您可以通過以下配置方法,在安裝EdgeMesh時(shí)啟用高可用特性,配置過程當(dāng)中您可以依據(jù)集群連接的需求配置中繼節(jié)點(diǎn)的地址:

# 啟用高可用特性

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 參數(shù)是中繼節(jié)點(diǎn)表,類型為 []relayNode,您可以通過配置它來指定集群中應(yīng)該承擔(dān)中繼節(jié)點(diǎn)角色的edgemesh-agent。

·relayNode.nodeName 參數(shù)使用節(jié)點(diǎn)名的方式來指定relay節(jié)點(diǎn),這必須與K8s的節(jié)點(diǎn)名相同,您可以通過 kubectl get nodes 查看您的k8s節(jié)點(diǎn)名。

·relayNode.advertiseAddress 參數(shù)用于指定relay節(jié)點(diǎn)的地址,其應(yīng)當(dāng)與節(jié)點(diǎn)在K8s集群當(dāng)中的節(jié)點(diǎn)地址一致, 如果您購買了公有云的公網(wǎng)IP并掛載到此relay節(jié)點(diǎn)上,則 relayNode.advertiseAddress 參數(shù)最好應(yīng)該填寫該公網(wǎng)IP地址。


需要注意的是:設(shè)置中繼節(jié)點(diǎn)的數(shù)量由 relayNodes[num] 中索引值 num 來規(guī)定,num 取值從 0 開始,relayNodes[0] 表示中繼節(jié)點(diǎn)1。

更多的安裝配置信息請(qǐng)?jiān)斠姡?/p>

helm安裝:

https://edgemesh.netlify.app/zh/guide/#helm-安裝

手動(dòng)安裝:

https://edgemesh.netlify.app/zh/guide/

2.3 運(yùn)行時(shí)添加新中繼節(jié)點(diǎn)

如果您在使用EdgeMesh高可用特性時(shí),想要在集群當(dāng)中添加新的中繼節(jié)點(diǎn),可以通過修改 edgemesh-agent-cfg 當(dāng)中的 relayNodes 參數(shù)來達(dá)到目的,以下為具體修改配置的方式:

之后您可以使用 kubeadm join 或者 keadm join 添加加新的中繼節(jié)點(diǎn)R2,接著通過以下操作查看添加的中繼節(jié)點(diǎn)是否正常運(yùn)行:

# 查看節(jié)點(diǎn)是否正常添加

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

# 查看中繼節(jié)點(diǎn)的 edgemesh-agent 是否正常運(yùn)行

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 運(yùn)行時(shí)轉(zhuǎn)化節(jié)點(diǎn)成中繼

如果您在集群運(yùn)行過程當(dāng)中,想要將一些已有節(jié)點(diǎn)轉(zhuǎn)化為中繼節(jié)點(diǎn),只需要修改 edgemesh-agent-cfg 當(dāng)中的 relayNodes 參數(shù)即可, 以下為具體修改配置的方式:

修改完此配置后,需要重啟R2節(jié)點(diǎn)(轉(zhuǎn)化節(jié)點(diǎn))上的edgemesh-agent。在這個(gè)過程當(dāng)中,假設(shè)新設(shè)置的節(jié)點(diǎn)有中繼能力,那么在重新Tunnel模塊運(yùn)行時(shí)會(huì)執(zhí)行以下邏輯:

1.edgemesh-agent會(huì)讀取configmap里的中繼節(jié)點(diǎn)表relayNodes,檢查自己是否被用戶設(shè)置為中繼節(jié)點(diǎn)。如果在relayNodes中讀取到R2存在,則表明R2被設(shè)置為默認(rèn)初始的中繼節(jié)點(diǎn)。

2. R2節(jié)點(diǎn)上的edgemesh-agent會(huì)嘗試成為relay ,啟動(dòng)對(duì)應(yīng)的中繼功能。

3. 如果發(fā)現(xiàn)該節(jié)點(diǎn)沒有中繼能力(一般掛載了公網(wǎng)IP的節(jié)點(diǎn)會(huì)具備中繼能力),那么該節(jié)點(diǎn)還是不能承擔(dān)起中繼節(jié)點(diǎn)的角色,造成這個(gè)結(jié)果的原因可能是該節(jié)點(diǎn)的advertiseAddress并不能讓所有節(jié)點(diǎn)訪問。

 三、課題總結(jié) 

 三、課題總結(jié) 

活動(dòng)規(guī)則

活動(dòng)對(duì)象:華為云電銷客戶及渠道伙伴客戶可參與消費(fèi)滿送活動(dòng),其他客戶參與前請(qǐng)咨詢客戶經(jīng)理

活動(dòng)時(shí)間: 2020年8月12日-2020年9月11日

以上就是EdgeMesh高可用架構(gòu)的原理以及應(yīng)用場景的介紹了,此次課題結(jié)項(xiàng)完成了開源之夏的所有產(chǎn)出要求,也同時(shí)作為KubeEdge v1.12新版本的一個(gè)重要特性發(fā)布,非常高興能夠?yàn)殚_源社區(qū)及KubeEdge的開發(fā)和完善做出貢獻(xiàn)。

于我個(gè)人而言,當(dāng)初是在測試5G邊緣架構(gòu)時(shí)認(rèn)識(shí)到了KubeEdge, 并為其設(shè)計(jì)以及功能設(shè)想所折服,這與我理想的邊緣網(wǎng)絡(luò)智能架構(gòu)有諸多的相似之處,也成為我參與開源之夏的契機(jī)。

在項(xiàng)目開發(fā)當(dāng)中,從功能設(shè)計(jì)、實(shí)現(xiàn)方案到代碼編寫,各類問題層出不窮,主要是校內(nèi)知識(shí)和研發(fā)方式與開源社區(qū)及工業(yè)環(huán)境脫節(jié)導(dǎo)致的問題,不過這些困難都在老師社區(qū)的幫助和自身努力之下逐一解決了,也是在這個(gè)過程當(dāng)中領(lǐng)我體會(huì)到了開源工作中各社區(qū)之間相互借鑒推進(jìn),各個(gè)開發(fā)者之間相互幫助交流的強(qiáng)大,也更加理解到優(yōu)秀的社區(qū)環(huán)境以及高效的社區(qū)例會(huì)機(jī)制能夠快速同步各處開發(fā)進(jìn)度,修正不合理的開發(fā)方向和想法,集思廣益的同時(shí)步步為營,這樣讓我更加向往社區(qū)的工作了。

四、未來展望 

四、未來展望 

活動(dòng)規(guī)則

活動(dòng)對(duì)象:華為云電銷客戶及渠道伙伴客戶可參與消費(fèi)滿送活動(dòng),其他客戶參與前請(qǐng)咨詢客戶經(jīng)理

活動(dòng)時(shí)間: 2020年8月12日-2020年9月11日

就EdgeMesh發(fā)展設(shè)想而言,此次開發(fā)已經(jīng)實(shí)現(xiàn)了當(dāng)初設(shè)想的目的,但在參與社區(qū)例會(huì),了解整個(gè)開源項(xiàng)目的發(fā)展之中,許多的想法和創(chuàng)新也隨之涌現(xiàn),是否能夠引入ebpf、Webassembly等新興技術(shù)來優(yōu)化甚至是革新EdgeMesh提供的網(wǎng)絡(luò)服務(wù);是否可以將人工智能引入到邊緣集群的管理和自治當(dāng)中,讓人工智能作為基礎(chǔ)建設(shè)的一部分,這些設(shè)想都讓人熱血沸騰,忍不住想要參與到社區(qū)的開發(fā)和研究當(dāng)中。

就我個(gè)人而言,未來也會(huì)更多地參與到社區(qū)的開發(fā)和研究當(dāng)中,一方面我原本所期盼的將科研成果轉(zhuǎn)化為產(chǎn)業(yè)價(jià)值的目標(biāo),已通過開源之夏初見眉目;另一方面,諸多的設(shè)想和創(chuàng)新還未能夠與大家交流,還未能夠得到實(shí)踐和測試;這些都不斷鼓勵(lì)著我更加深入到社區(qū)項(xiàng)目的研發(fā)當(dāng)中。

 最后非常感謝王杰章老師的悉心教導(dǎo),可以說老師的耐心溝通和鼓勵(lì)指導(dǎo)是項(xiàng)目能夠成功推進(jìn)的重要?jiǎng)恿?;同時(shí)還要感謝開源之夏能夠給予我們機(jī)會(huì)參與到實(shí)際的開發(fā)當(dāng)中,走出了高校學(xué)術(shù)的樓閣,盡管此次開源之夏已經(jīng)結(jié)束,但我們的開源之旅卻正要開始。

本文作者:

南開大學(xué) 達(dá)益鑫 2374087322@qq.com  

附:KubeEdge社區(qū)貢獻(xiàn)和技術(shù)交流地址

KubeEdge網(wǎng)站 : https://kubeedge.io

GitHub地址 : https://github.com/kubeedge/kubeedge

Slack地址 :https://kubeedge.slack.com

郵件列表 : https://groups.google.com/forum/#!forum/kubeedge

每周社區(qū)例會(huì) :https://zoom.us/j/4167237304

Twitter : https://twitter.com/KubeEdge

文檔地址 : https://docs.kubeedge.io/en/latest/