Kubernetes的未來是虛擬機?

Kubernetes作為一項技術對我今年的職業生涯非常重要,明年也會如此。隨著2018年即將結束,斗膽的預測一下, Kubernetes的未來是虛擬機,而不是容器。

Kubernetes的未來是虛擬機,而不是容器

2018年按照中國的十二生肖叫做狗年,技術上是Kubernetes的一年。現在有很多人都在學習Kubernetes,各地的CIO們都在努力制定“Kubernetes戰略”,一些組織已經在把一些線上服務跑在Kubernetes的環境下。

換句話說,就像Gartner Hype Cycle說描述。任何一項新技術都是啟動、高峰、低谷階段,Kubernetes也延著這種趨勢在發展。

Kubernetes的未來是虛擬機?

我是容器的忠實粉絲,我不會試圖暗示容器已經死了。 Docker在2013以linux容器的概念闖入我們工作中, 他們向我們展示了一種構建,打包,共享和部署應用程序的令人驚喜的新方法,而這個時期正是我們認真考慮如何持續交付的時候。 他們的模型非常適合現代交付管道以及PaaS和後來的CaaS平臺的出現。

Kubernetes的未來是虛擬機?

在Google工作的工程師看到技術社區終於為容器做好了準備。 Google已經在很長一段時間內使用(或多或少發明)容器,他們開始構建Kubernetes,它構建在前身Borg平臺基礎上,同時為社區貢獻力量。

沒過多久,大的公有云廠商就提供了基於Kubernetes的平臺(GKE,AKS,EKS),私有云也很快建立了基於Kubernetes的平臺(Pivotal Container Service,Openshift等)。

柔性多租戶

有一個棘手的問題需要解決:多租戶,這個能否解決的好,將決定容器的未來。

Linux容器並非構建為安全的隔離沙箱(如Solaris Zones或FreeBSD Jails)。相反,它們建立在共享內核模型的基礎上,該模型利用內核功能提供基本的進程隔離。正如Jessie Frazelle所說:“容器不是一切”。

更復雜的是,大多數Kubernetes組件也絕非都是安全隔離的。 當然你有命名空間和Pod安全策略,但API本身不具備。 內部組件像kubelet或kube-proxy也不具備, 這導致Kubernetes只能適合“軟租賃”模型。

Kubernetes的未來是虛擬機?

劣勢,建立在容器之上的平臺將繼承容器的許多軟多租戶特效,而在硬件多租戶虛擬機之上構建的平臺都繼承了硬性多租戶特性(VMWare,Amazon Web Services,Openstack等)。

Kubernetes集群本身就是“硬性多租戶”,這導致了“許多集群”而不是“一個大共享”集群的新興模式。看到Google GKE服務的客戶為多個團隊部署了數十個Kubernetes集群並不罕見。通常每個開發人員都有自己的集群,這種行為會導致令人震驚的Kubesprawl數量。

“這種行為會導致令人震驚的Kubesprawl”

通常,您獲得的最小集群是4臺計算機(或VM)。 Kubernetes Master的一個(或3個HA),Kubernetes Worker的三個。這中系統性價比很低,大部分系統資源被閒置浪費。

所以我們需要以某種方式將Kubernetes轉移到硬性多租戶模型。 Kubernetes社區非常瞭解這一需求,並擁有一個多租戶工作組。這個小組一直在努力解決這個問題,他們有幾個建議的模型和建議如何解決每個模型。

只需製作針對速度優化的小型虛擬機......

Kata Containers是一個開源項目和社區,致力於構建輕量級虛擬機(VM)的標準實現,感知和執行類似容器,但提供VM的工作負載隔離和安全優勢。

Jessie建議使用VM容器技術,例如Kata Containers。 Kata Containers結合了虛擬機級別隔離,可以像容器一樣執行。這允許Kubernetes在嵌套的VM容器(在底層IaaS提供的VM內運行的VM容器)中運行的每個租戶(我們假定每個命名空間的租戶)提供自己的一組Kubernetes系統服務。

Kubernetes的未來是虛擬機?

這是Kubernetes多租戶的優雅解決方案。 她的建議甚至進一步表明Kubernetes使用嵌套的容器虛擬機來運行Kubernetes上的工作負載(Pod),從而大大提高了資源利用率。

我們在這裡至少還有一個優化。 為底層IaaS或雲提供商構建合適的管理平臺。 如果VM容器是IaaS提供的第一級抽象,那麼我們甚至可以進一步提高資源利用率。 運行Kubernetes集群所需的最小VM數量下降到一個(或三個HA)以承載暴露給“超級用戶”的Kubernetes控制平面。

資源(成本)優化多租戶

具有兩個名稱空間的Kubernetes部署都運行了許多應用程序,看起來像這樣。

Kubernetes的未來是虛擬機?

最初,部署到雲的基礎設施為零,因此超級用戶的成本為零。

超級用戶從雲端請求Kubernetes集群。雲提供商為運行主Kubernetes API和系統服務創建單個Container VM(或3個用於HA)。超級用戶可以選擇在系統命名空間中部署pod,或者創建新的命名空間以委派對其他用戶的訪問權限。

超級用戶創建兩個命名空間foo和bar。 Kubernetes為每個命名空間的控制平面(Kubernetes API和系統服務)從雲中請求兩個VM容器。超級用戶將訪問這些命名空間的用戶委派給每個部署一些pod的用戶,他們各自的控制平面為每個pod載請求VM容器。

在此的所有階段,超級用戶僅支付實際消耗的資源。雲提供商擁有云的任何用戶可用的容量。

我實際上並沒有在這裡說任何新的東西......

雲提供商已經在努力實現這一未來。您可以通過觀察開源社區中發生的事情來看到這種情況。 (可以說亞馬遜已經與Fargate已經私下再做了這件事)。

第一個提示是Virtual Kubelet,它是一個開源工具,旨在偽裝成一個kubelet。它將Kubernetes連接到其他API。這將允許Kubernetes從Cloud的Container VM調度程序請求Container VM。

其他提示包括新興VM容器技術的數量,已經提到的Kata容器,還有來自亞馬遜的Firecracker和來自Google的gvisor。

結論

與Kubernetes硬性多租戶模式相結合,您將獲得Kubernetes的成功密鑰。完全隔離Kubernetes工作負載和純每個Pod消耗成本模型,以在Kubernetes上運行工作負載。

對於那些不在公共雲上的人,我們沒有獲得與基礎設施提供商(在這種情況下是您自己)的容量負擔相同的消費模型。您仍然可以獲得更高資源利用率的好處,這可以降低容量需求。

讓我們希望VMWare和Openstack正在關注併為我們帶來基於輕量級VM容器技術的虛擬機管理程序和適當的Virtual Kubelet實現。


分享到:


相關文章: