k8s边缘节点_边缘计算,如何啃下集群管理这块硬骨头?
導(dǎo)讀
邊緣計(jì)算平臺(tái),旨在將邊緣端靠近數(shù)據(jù)源的計(jì)算單元納入到中心云,實(shí)現(xiàn)集中管理,將云服務(wù)部署其上,及時(shí)響應(yīng)終端請(qǐng)求。
然而,成千上萬(wàn)的邊緣節(jié)點(diǎn)散布于各地,例如銀行網(wǎng)點(diǎn)、車(chē)載節(jié)點(diǎn)等,節(jié)點(diǎn)數(shù)量甚至可能是幾萬(wàn)到十幾萬(wàn),這就會(huì)對(duì)節(jié)點(diǎn)的承載能力造成巨大沖擊。Kubernetes 官方數(shù)據(jù)是可以支持納管 5000 節(jié)點(diǎn),如果想要納管更多的邊緣節(jié)點(diǎn),該如何設(shè)計(jì)邊緣計(jì)算平臺(tái)架構(gòu)呢?
本文針對(duì)以上問(wèn)題,提供一些博云的解決思路。
多集群管理
多集群可以有效地?cái)U(kuò)展納管節(jié)點(diǎn)的規(guī)模,而對(duì) kubernetes 多集群的管理,各廠商的實(shí)現(xiàn)方式各有不同,不同的 API,不同的特性,因此市場(chǎng)上很難形成標(biāo)準(zhǔn)的解決方案。
現(xiàn)有的官方 kubernetes 多集群管理解決方案是 kubefed(Federation V2),即 kubernetes 聯(lián)邦。Federation V1早在 kubernetes 1.6 版本就開(kāi)始提供服務(wù),但由于V1架構(gòu)的限制,無(wú)法靈活支持更新的 k8s API 接口,加上其他很多問(wèn)題影響集群管理的效率,因此 Federation V1 在 kubernetes 1.11 版本正式被棄用,現(xiàn)在提供服務(wù)的是 Federation V2。
由架構(gòu)圖實(shí)現(xiàn)可以看出,Federation V2 在 k8s 之上定義了一些資源,用 cluster configuration 記錄集群的 endpoint,secret 等認(rèn)證信息,type configuration 來(lái)定義需要用 Federation 托管的資源類型,提供了調(diào)度器來(lái)平衡各個(gè)集群的負(fù)載,以及多集群的 DNS 功能。
這種 controller 級(jí)別的集群管理,提供了豐富的集群間交互功能,更適用于異地多中心的集群災(zāi)備等場(chǎng)景。在邊緣場(chǎng)景,一個(gè)邊緣端可能就是一個(gè)小集群(存在多個(gè)計(jì)算單元可以組成集群),這樣會(huì)使得集群數(shù)量不斷增多,進(jìn)而對(duì) Federation 的執(zhí)行效率、API 的響應(yīng)時(shí)間都會(huì)有較為明顯的影響。那么,該如何削弱集群數(shù)量的不確定性所帶來(lái)的影響呢?
下面為大家展示,我們?cè)?KubeEdge 架構(gòu)下如何解決多節(jié)點(diǎn)的問(wèn)題。
Cloudcore 橫向擴(kuò)展
KubeEdge 架構(gòu)下的云邊協(xié)同通信采用 websocket 方式,quic 作為備選。其中 websocket 性能最好,quic 在弱網(wǎng)絡(luò)(頻繁斷開(kāi))情況下優(yōu)勢(shì)較大,通信的服務(wù)端都是由 cloudcore 來(lái)實(shí)現(xiàn)。
這里我們引入一個(gè)邏輯集群的概念,即每個(gè) cloudcore 可以看做是一個(gè)集群,橫向擴(kuò)展多個(gè) cloudcore 對(duì)接下層數(shù)量較大的邊緣節(jié)點(diǎn),向上只依托在一個(gè) kubernetes 集群即可,架構(gòu)如下所示:
這樣設(shè)計(jì)有如下幾點(diǎn)優(yōu)勢(shì):
- 解決單個(gè) cloudcore 消息轉(zhuǎn)發(fā)/接收等處理的性能瓶頸;
- 應(yīng)用/設(shè)備的發(fā)布請(qǐng)求在 api-server 會(huì)被 cloudcore 監(jiān)聽(tīng)捕獲到,轉(zhuǎn)而由對(duì)應(yīng)的 cloudcore 來(lái)處理請(qǐng)求到邊端,這樣緩解了 k8s 集群的壓力;
- 中心云只需要一套 k8s 集群,調(diào)用鏈簡(jiǎn)單清晰,易于管理。
測(cè)試實(shí)現(xiàn)
環(huán)境信息:
測(cè)試集群?jiǎn)?master 節(jié)點(diǎn),管理一個(gè) node1 工作節(jié)點(diǎn),cloudcore 運(yùn)行在 maser 節(jié)點(diǎn)上,并已接入 edge1 邊緣節(jié)點(diǎn)。
現(xiàn)在測(cè)試 node1 上創(chuàng)建 cloudcore 服務(wù),將新的邊緣節(jié)點(diǎn) edge2 接入,節(jié)點(diǎn)組圖如下:
集群下已有 cloudcore 和 edgecore,node1 是 k8s 的 x86 普通節(jié)點(diǎn),現(xiàn)在該節(jié)點(diǎn)上運(yùn)行 cloudcore 提供服務(wù)。
- 拷貝 cloudcore 二進(jìn)制文件
- 重新生成證書(shū)
- 生成 cloudcore.yaml 配置文件
- 拷貝 k8s 集群的 kubeconfig 并將路徑配置到 cloudcore.yaml
- 啟動(dòng) cloudcore
edge2 是作為待接入集群的邊緣節(jié)點(diǎn),在該節(jié)點(diǎn)上運(yùn)行 edgecore, server 指向 node1,啟動(dòng)服務(wù)。
可以看到 edge2 已經(jīng)注冊(cè)到 node1 上的 cloudcore 并同步節(jié)點(diǎn)信息到 k8s,測(cè)試發(fā)布服務(wù)到 edge1 上:
總結(jié)
本文通過(guò)討論多集群的方式來(lái)擴(kuò)展納管邊緣節(jié)點(diǎn)的規(guī)模,分析了以 kubefed 聯(lián)邦進(jìn)行多集群管理機(jī)制,對(duì)比不同場(chǎng)景下的特點(diǎn),介紹了 KubeEdge 中利用橫向擴(kuò)展 cloudcore 的解決方案,并在測(cè)試環(huán)境部署實(shí)踐。
在實(shí)際生產(chǎn)環(huán)境中,博云 BeyondEdge 邊緣計(jì)算平臺(tái)依托于博云 BeyondContainer 容器云平臺(tái),提供云上服務(wù)的編排、治理、DevOps 等云原生能力,利用 KubeEdge 將這些能力延伸到邊緣節(jié)點(diǎn),并將邊緣設(shè)備抽象到云端 BeyondContainer容器云中,作為孿生設(shè)備資源,統(tǒng)一訪問(wèn)入口。
并且,運(yùn)行在云端的邊緣平臺(tái)組件 cloudcore 作為應(yīng)用服務(wù)部署在BeyondContainer容器云中,充分利用容器云的產(chǎn)品能力,將 cloudcore 以高可用方式部署在 kubernetes 中心云,通過(guò) ingress 暴露服務(wù)接口提供給邊緣節(jié)點(diǎn)的組件 edgecore 訪問(wèn),可以根據(jù)邊緣節(jié)點(diǎn)實(shí)際接入量動(dòng)態(tài)擴(kuò)展 cloudcore,作為邏輯上的集群擴(kuò)展以提高中心云對(duì)邊緣節(jié)點(diǎn)的承載能力。
點(diǎn)擊BoCloud博云_以創(chuàng)新云技術(shù) 為效率而進(jìn)化,獲取更多產(chǎn)品及案例信息。
總結(jié)
以上是生活随笔為你收集整理的k8s边缘节点_边缘计算,如何啃下集群管理这块硬骨头?的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: PHP用于登录的类,基于MySQL
- 下一篇: julia有没有希望超越python_未