物聯(lián)網(wǎng)關(guān)鍵技術(shù):在邊緣運(yùn)行的Kubernetes
Kubernetes(K8S)已經(jīng)成為云原生的標(biāo)準(zhǔn)技術(shù),其能夠在各種類型的云計(jì)算基礎(chǔ)設(shè)施上提供一致的使用體驗(yàn)。
“容器 + Kubernetes”的黃金組合在互聯(lián)網(wǎng)企業(yè)的DevOps中發(fā)揮了巨大的作用。隨著物聯(lián)網(wǎng)領(lǐng)域?qū)吘売?jì)算的需求越來越多,近期也出現(xiàn)了K8S運(yùn)行在邊緣側(cè)的需求和解決方案。
如何在邊緣使用Kubernetes呢?有調(diào)查結(jié)果顯示,30%的用戶希望在邊緣部署完整的K8S集群,而70%的用戶希望在云端部署K8S的管理平臺,在邊緣部署K8S的代理程序(agent)。
K8S主要是為集中性的云計(jì)算平臺來設(shè)計(jì)的,對于邊緣計(jì)算來說有點(diǎn)太重了。為了將K8S從云端延伸到邊緣場景,業(yè)內(nèi)提出了幾種不同的開源K8S邊緣解決方案。其中比較有代表性的解決方案包括華為的KubeEdge、Rancher Labs的K3S和阿里云的OpenYurt等。
KubeEdge
KubeEdge是由華為開發(fā),在2019年成為CNCF在智能邊緣領(lǐng)域的首個正式項(xiàng)目。云邊協(xié)同是KubeEdge的一大亮點(diǎn)。KubeEdge通過K8S標(biāo)準(zhǔn)API在云端管理邊緣節(jié)點(diǎn)、設(shè)備和工作負(fù)載,邊緣節(jié)點(diǎn)的系統(tǒng)升級和應(yīng)用程序更新都可以直接從云端下發(fā),提升邊緣運(yùn)維效率。
KubeEdge架構(gòu)上分為三層:云端、邊緣和設(shè)備層。Kubernetes master運(yùn)行在云端,用戶可以直接通過kubectl命令行在云端管理邊緣節(jié)點(diǎn)、設(shè)備和應(yīng)用,使用習(xí)慣與原生Kubernetes完全一致,使用者無需重新適應(yīng)。

KubeEdge系統(tǒng)架構(gòu)
KubeEdge的云端進(jìn)程包含2個組件:
- Cloud Hub部署在云端,接收Edge Hub同步到云端的信息;
- Edge Controller部署在云端,用于控制Kubernetes API Server與邊緣的節(jié)點(diǎn)、應(yīng)用和配置的狀態(tài)同步。
KubeEdge的邊緣進(jìn)程主要包括5個組件:
- Edged是個輕量級的節(jié)點(diǎn)代理Kubelet,實(shí)現(xiàn)Pod、Volume、Node等K8S資源對象的生命周期管理;
- Meta Manager負(fù)責(zé)本地元數(shù)據(jù)的持久化,是邊緣節(jié)點(diǎn)自治能力的關(guān)鍵;
- Edge Hub是多路復(fù)用的消息通道,提供可靠和高效的云邊信息同步;
- Device Twin用于抽象物理設(shè)備并在云端生成一個設(shè)備狀態(tài)的映射;
- EventBus訂閱來自于MQTT Broker的設(shè)備數(shù)據(jù)。
K3S
K3S是CNCF官方認(rèn)證的Kubernetes發(fā)行版,專為在資源受限環(huán)境中運(yùn)行K8S而設(shè)計(jì),目的是為了在x86、ARM64和ARMv7D架構(gòu)的邊緣節(jié)點(diǎn)上運(yùn)行小型的K8S集群。由Rancher Labs公司開發(fā),Rancher Labs 是一家提供容器技術(shù)基礎(chǔ)設(shè)施的初創(chuàng)企業(yè),于2014年成立。
K3S的名稱含義是指“5 Less Than K8S”,其尺寸、資源需求、復(fù)雜度、使用難度等都遠(yuǎn)低于K8S,最大特點(diǎn)就是輕量和易用,非常適合用于邊緣計(jì)算場景。

K3S系統(tǒng)架構(gòu)
K3S分Server和Agent,Server就是K8S管理面組件,Agent即K8S的數(shù)據(jù)面組件。與KubeEdge不同,K3S的所有組件(包括Server和Agent)都運(yùn)行在邊緣側(cè)。
K3S基于特定版本的K8S做了代碼修改,包括:使用containderd替換Docker,顯著減少運(yùn)行時占用空間;引入SQLite代替etcd作為管理面數(shù)據(jù)存儲等。
K3S與KubeEdge比較
KubeEdge的管理面部署在云端,邊緣節(jié)點(diǎn)無需太多資源就能運(yùn)行代理節(jié)點(diǎn)程序,云邊通過消息協(xié)同。從K8S的角度看,邊緣節(jié)點(diǎn) + 云端構(gòu)成一個完整的K8S集群。

KubeEdge部署模式:云邊結(jié)合才是一個K8S集群
K3S可以在邊緣運(yùn)行完整的K8S集群,這意味著K3S在每個邊緣網(wǎng)絡(luò)都需要額外部署Kubernetes管理面。

K3S部署模式:每個邊緣網(wǎng)絡(luò)都是一個K8S集群
K3S的部署方式存在一些問題:部署管理面需要消耗較多資源;不同K3S集群間網(wǎng)絡(luò)還需要打通;管理多個K3S集群還需要在上面再疊加一層多集群管理組件,遺憾的是Rancher Labs公司尚未開源這個多集群管理組件。
相比K3S,KubeEdge可以支持云邊協(xié)同,借助華為強(qiáng)大的技術(shù)和市場能力,KubeEdge技術(shù)的未來市場前景非常值得期待。