基礎(chǔ)架構(gòu)的未來是 K8s,那么 K8s 的未來在何方?

隨著容器技術(shù)大行其道,應(yīng)用的復(fù)雜性只增不減,開發(fā)者們開始廣泛使用更先進(jìn)的工具,比如 Kubernetes。目前 Kubernetes 已經(jīng)不年輕了,逐漸開始 boring,你可能會(huì)想問 Kubernetes 之后還有什么令人興奮的新技術(shù)。但云計(jì)算是一個(gè)快速發(fā)展的領(lǐng)域,不太容易精準(zhǔn)預(yù)測(cè)下一個(gè)令人興奮的新技術(shù),不如我們將目光聚焦到目前云計(jì)算沒有完全覆蓋的細(xì)分領(lǐng)域。
微型虛擬機(jī) (MicroVM)
在 Kubernetes 之后,有一個(gè)前景廣闊的云技術(shù)可能會(huì)被廣泛接受,即微型虛擬機(jī) (MicroVM)。微型虛擬機(jī)與容器的區(qū)別在于它不與宿主機(jī)共用內(nèi)核,擁有自己的微內(nèi)核,提供了與虛擬機(jī)一樣的硬件虛擬化安全性。虛擬機(jī)抽象了內(nèi)存、CPU、網(wǎng)絡(luò)、存儲(chǔ)和其他計(jì)算資源,而微型虛擬機(jī)是圍繞應(yīng)用程序來對(duì)資源進(jìn)行抽象,只抽象了必要的資源,所以更加高效。
目前最受歡迎的微型虛擬機(jī)就是 AWS Firecracker[1],它使用 Rust 語言編寫,內(nèi)存開銷極低,將微型虛擬機(jī)打包到 Kubernetes 集群中,以提高工作負(fù)載的安全性和隔離性。AWS 目前正使用 Firecracker 作為 Serverless 的基礎(chǔ)單元,冷啟動(dòng)延遲極低。
Weaveworks 也開源了一個(gè)基于 Firecracker 的虛擬機(jī)管理器 Ignite[2],將 Firecracker MicroVM 與 Docker/OCI 鏡像結(jié)合起來,統(tǒng)一了容器和虛擬機(jī)。它以 GitOps 的方式工作,可以像 Kubernetes 和 Terraform 一樣聲明式管理虛擬機(jī)。
還有一些其他項(xiàng)目,例如 slim[3],旨在從 Dockerfile 中構(gòu)建和運(yùn)行微型虛擬機(jī)。它的工作原理是從 Dockerfile 中構(gòu)建并提取 rootfs,然后將該文件系統(tǒng)與一個(gè)在 RAM 中運(yùn)行的微內(nèi)核合并。
隨著越來越多的應(yīng)用程序被遷移到云端,以及越來越多圍繞 5G 技術(shù)建立的新業(yè)務(wù)解決方案,微型虛擬機(jī)將會(huì)發(fā)揮至關(guān)重要的作用。
高性能 WebAssembly
自從 1995 年 Netscape 公司推出 JavaScript 之后,很長(zhǎng)一段時(shí)間它都是唯一的網(wǎng)絡(luò)編程語言。之后人們提出了很多替代方案,但都沒有成功,這些替代方案要么不支持跨平臺(tái),要么需要瀏覽器插件。因此,縱然 JavaScript 有它的缺陷性,還是變成了世界上最流行的編程語言之一。
WebAssembly 的出現(xiàn)打破了這個(gè)僵局,嚴(yán)格來說,它不是一種編程語言,而是一種二進(jìn)制指令集。因此它對(duì) JavaScript 沒有威脅,也無意取代 JavaScript,它可以和 JavaScript 協(xié)同工作,你也可以將 JavaScript 編譯成 WebAssembly 二進(jìn)制格式。
但 WebAssembly 的潛力不僅局限于瀏覽器層面,全球著名的 CDN 廠商 Fastly 的 CTO 之前在一個(gè)視頻中完美闡述了 WebAssembly 的價(jià)值:

虛擬機(jī)模擬了完整的計(jì)算機(jī);容器模擬了完整的操作系統(tǒng);WebAssembly 僅僅模擬了進(jìn)程。
容器大家都比較熟悉,它只模擬了完整操作系統(tǒng)的用戶空間,不包含內(nèi)核空間,也不包含硬件相關(guān)的抽象。但是對(duì)于微服務(wù)和 Serverless 而言,它仍然很重,我只需要啟動(dòng)一個(gè)進(jìn)程,你卻讓我先啟動(dòng)一個(gè)完整的操作系統(tǒng)再啟動(dòng)進(jìn)程。
這時(shí)候 WebAssembly 的價(jià)值就體現(xiàn)出來了,你只需要啟動(dòng)一個(gè)進(jìn)程,而我恰好就只啟動(dòng)了進(jìn)程,沒有操作系統(tǒng),也沒有硬件虛擬化,只有孤單的進(jìn)程,只是這個(gè)進(jìn)程被放入了 WebAssembly 的沙盒中。
看到了這一點(diǎn),眾多工程師開始發(fā)揮自己的無限想象力,比如將 WebAssembly 作為 Kubernetes 的 CRI 運(yùn)行時(shí),代替容器以適應(yīng) Serverless 場(chǎng)景。
目前大約有 40 種高級(jí)編程語言開始支持 WebAssembly,包括 C、C++、Python、Go、Rust、Java 和 PHP,未來可期。
輕量級(jí) Kubernetes 發(fā)行版
為了避免 Kubernetes 的安裝部署過于復(fù)雜,越來越多的人更愿意使用 Kubernetes 的閹割版本,即輕量版。像 K3s[4] 這樣的輕量級(jí)發(fā)行版更容易通過命令行安裝,它提供了更輕量級(jí)的存儲(chǔ)后端,并且所有的組件都打包在一個(gè)單一的可執(zhí)行文件中,體積更小。由于它只需要極低的資源就可以運(yùn)行,因此它能夠在任何 512MB 內(nèi)存以上的設(shè)備上運(yùn)行集群。
邊緣計(jì)算與物聯(lián)網(wǎng)
伴隨著輕量級(jí) Kubernetes 發(fā)行版的發(fā)展,適用于邊緣計(jì)算和物聯(lián)網(wǎng)場(chǎng)景的 Kubernetes 發(fā)行版也嶄露頭角,例如 KubeEdge[5],提供了邊緣計(jì)算所需的輕量級(jí)和邊緣自治能力。但 KubeEdge 缺少云端控制層面的支持,將混合云容器平臺(tái) KubeSphere[6] 與 KubeEdge 結(jié)合,可以解決邊緣節(jié)點(diǎn)納管、邊緣工作負(fù)載調(diào)度和邊緣可觀測(cè)性等難題,結(jié)合 KubeSphere 已有的多集群管理將混合多云管理延伸至邊緣側(cè)。

多集群管理
雖然目前 Kubernetes 中有很多工具可以隔離多租戶工作負(fù)載,但有時(shí)出于安全與合規(guī)原因,使用集群作為邊界來隔離團(tuán)隊(duì)和應(yīng)用程序更有意義。
隨著越來越多的團(tuán)隊(duì)和組織在各個(gè)云中運(yùn)行多個(gè) Kubernetes 集群,對(duì)多個(gè) Kubernetes 集群的管理和控制變得愈發(fā)艱難,像 CiliumMesh[7]、Submariner[8]、Skupper[9]、Istio[10] 和 KubeSphere[11] 這樣的多集群管理工具將使多集群 Kubernetes 環(huán)境的管理更加方便和高效。

多集群的另一個(gè)好處是減少集群故障的影響范圍,如果你有強(qiáng)隔離的要求,可以考慮使用多集群。此外,多集群也能簡(jiǎn)化操作流程,比如在同一個(gè)控制平面進(jìn)行調(diào)度和升級(jí)。KubeSphere 目前已經(jīng)支持將工作負(fù)載的多副本按不同比例靈活分發(fā)到多個(gè)集群。

跨集群備份容災(zāi)
隨著云原生對(duì) IT ?產(chǎn)業(yè)的重新洗牌,很多傳統(tǒng)的技術(shù)在云原生的場(chǎng)景下已經(jīng)不再適用,譬如備份和容災(zāi)。傳統(tǒng)的備份容災(zāi)還停留在數(shù)據(jù)搬運(yùn)的層次上,備份機(jī)制比較固化,以存儲(chǔ)為核心,無法適應(yīng)容器化的彈性、池化部署場(chǎng)景;而云原生的核心是服務(wù)本身,不再以存儲(chǔ)為核心,用戶需要更貼合容器場(chǎng)景的備份容災(zāi)能力,利用云原生的編排能力,實(shí)現(xiàn)備份容災(zāi)的高度自動(dòng)化,同時(shí)靈活運(yùn)用云原生的彈性能力按需付費(fèi),降低成本。
為了適應(yīng)云原生場(chǎng)景,眾多 Kubernetes 備份容災(zāi)產(chǎn)品開始涌現(xiàn),比如 Veeam 推出的 Kasten K10[12] 以及 VMware 推出的 Velero[13]。青云科技也推出了 Kubernetes 備份容災(zāi)即服務(wù)產(chǎn)品[14],基于原生的 Kubernetes API,提供了可視化界面,能夠覆蓋云原生數(shù)據(jù)保護(hù)的絕大多數(shù)重要場(chǎng)景,而且能夠跨集群、跨云服務(wù)商、跨存儲(chǔ)區(qū)域,輕松實(shí)現(xiàn)基礎(chǔ)設(shè)施間多地、按需的備份恢復(fù)。目前該服務(wù)還在體驗(yàn)改進(jìn)階段,提供了 1TB 的免費(fèi)托管倉庫,感興趣的可以填寫問卷[15]加入他們的專屬體驗(yàn)群。
掃描二維碼填寫問卷
引用鏈接
AWS Firecracker: https://github.com/firecracker-microvm/firecracker
[2]Ignite: https://github.com/weaveworks/ignite
[3]slim: https://github.com/ottomatica/slim/
[4]K3s: https://k3s.io/
[5]KubeEdge: https://kubeedge.io/en/
[6]KubeSphere: https://kubesphere.com.cn/
[7]CiliumMesh: https://docs.cilium.io/en/v1.9/concepts/clustermesh/
[8]Submariner: https://github.com/submariner-io/submariner
[9]Skupper: https://github.com/skupperproject
[10]Istio: https://istio.io/latest/docs/setup/install/multicluster/
[11]KubeSphere: https://kubesphere.com.cn/docs/multicluster-management/
[12]Kasten K10: https://www.veeam.com/cn/kubernetes-native-backup-and-restore.html
[13]Velero: https://velero.io/
[14]Kubernetes 備份容災(zāi)即服務(wù)產(chǎn)品: https://kubesphere.cloud/self-service/disaster-recovery/
[15]問卷: https://jinshuju.net/f/W6FoC7
