Serverless 會終結 Kubernetes 嗎?

摘要:在運維的世界中,Kubernetes 是基礎架構管理的終極解決方案嗎?還是說我們更加需要 Serverless?究竟哪種技術能夠解救運維團隊?在本文中,作者將深度比較這兩種爭論不休的技術。

Serverless 会终结 Kubernetes 吗?

作者 | Daniele Fontani

不好意思,用這般博眼球的標題來吸引各位的注意,對此表示抱歉。我只是想和各位一起認真反思這個大主題。你覺得 Kubernetes 是開發運維世界裡最好的技術嗎?它是終極解決方案嗎?當然,這個世界上沒有終極解決方案,以前沒有今後也不會有,技術都是瞬息萬變的,我們需要時刻做好準備。我很喜歡 Kubernetes,很高興再次討論這個話題。Kubernetes 是當前開發運維世界裡最熱門的技術。在本文中,我們將共同探討這樣一個問題:

Kubernetes 是基礎架構管理的終極解決方案嗎?還是說我們更加需要 Serverless?究竟哪種技術能夠解救運維團隊?不要忘記,無運維的世界即將到來。

我認為變革是技術世界裡的常態。我們的祖先出門騎馬,而我們乘坐飛機。這就是技術進步的象徵。

在過去的幾年中,技術世界發生了一次小小的革命,越來越多的應用程序從虛擬機移到了容器中,這主要歸功於 Kubernetes 部署。

在這場革命發生期間,還有一個雖小卻很強大的技術流行了起來,那就是“Serverless”。大多數人將其視為惡魔,而有些人則認為它是拯救開發人員於運維噩夢的“白馬王子”。下面就讓我們一起來看一看這究竟是機遇還是麻煩。

Serverless 会终结 Kubernetes 吗?

Kubernetes 和 Serverless 之間有什麼區別?

Serverless 是一種雲模型,可以幫助你擺脫服務器和基礎架構的束縛。其目的是省卻一定的成本,縮短產品上市的時間,減少運維與開發團隊之間的摩擦。具體來說,你可以想象有一堵牆能夠吸收你的代碼,並負責執行代碼,這堵牆就是無服務器。

你提供代碼,供應商負責所有其他工作。

最常見的 Serverless 實現是帶有SDK的無狀態容器,負責將你的代碼集成到系統中,並根據資源的使用情況向你收費。在大多數情況下,我們只需將我們的函數上傳到雲(函數即服務,Functions as a Service,即FaaS),然後通過HTTP調用這些函數。主流雲提供商都提供了類似的雲體驗:

  • 亞馬遜:AWS Lambda(https://aws.amazon.com/lambda/)

  • 微軟 Azure:Azure Functions(https://azure.microsoft.com/en-us/services/functions/)

  • 谷歌雲:Cloud Functions(https://cloud.google.com/functions/)

當然並不是真的沒有服務器。只不過你看不到它們,因為它們被供應商藏了起來,並用它們來提供服務。服務器仍在運行,但是你看不到內存、CPU 或磁盤空間。你只需關注代碼,將精力放在真正需要的地方。

那麼,什麼是 Kubernetes?你可以將 Kubernetes 視為運行分佈式系統的框架,這些系統源自 Docker 鏡像。Kubernetes 能夠滿足規模擴展的需求,還能夠管理好部署以及負載平衡。Kubernetes 利用簡潔且可重複使用的 YAML 文件來書寫配置,部署出來的環境可輕鬆複製。

Kubernetes 是非常便捷的基礎設施。

你只需要更改一些配置文件,就可以全權掌控容器實例(服務和Pod)、網絡以及部署。Kubernetes 的功能包括擴展規模、故障轉移以及部署模式等等。

Serverless 会终结 Kubernetes 吗?

與無服務器同樣,Kubernetes 可以幫助系統管理員輕鬆地完成複雜的體系結構。這項技術可以將費時費力的傳統部署轉變成智能快捷的方式。無運維的時代就要來了!

Serverless 会终结 Kubernetes 吗?

Kubernetes 有哪些優點?

Kubernetes 最大的優勢在於,你可以像處理常規服務器一樣處理集群,同時還無需管理物理機器。從邏輯上講,服務器和集群組件是對等的關係。你可以把 Pod 和服務當成虛擬機來實例化。此外,你還擁有網絡、存儲等等。因此,你可以通過操控底層的集群來深入控制所有組件。

與無服務器平臺相比,Kubernetes 的優勢如下:

  • 與過往技術有良好的兼容性。如果你正在使用容器,那麼毫不費力就可以移動到 Kubernetes上;如果你沒有使用容器,那麼也只需將應用程序組件容器化。

  • 良好的控制。

  • 供應商的限制較少,Kubernetes 就是單純的 Kubernetes,而 Docker 容器也只是 Docker 容器而已。從理論來講,你只需點一下鼠標即可將基礎架構移動到其他地方。

  • 可以微調每個組件的功能。

  • 可在自建的基礎設施上運行(比如可以用於開發環境,或者極端情況,或者只是你想嘗試些瘋狂的東西)。

  • 成本預測。你只需支付集群資源的費用,比無服器更好預測。

Serverless 会终结 Kubernetes 吗?

Serverless 的優點是什麼?

Kubernetes 在減少系統管理員工作方面邁出了一大步,但還沒有減少到零。Serverless 可以從根本上避免所有系統管理組件,你唯一需要關心的就是源代碼。就好像一組樂高積木,將它們拼在一起。每一塊都可以單獨運行,你只需要讓積木塊之間正確溝通即可,僅此而已。由於 FaaS 解決方案需要思想上的轉變,因此似乎很難實施。在這種情況下,你可以採用一些“軟”Serverless解決方案——無需更改即可直接託管你的應用程序。Heroku 就是這類的一個解決方案,它從服務器和傳統的開發運維中進行了抽象,提供了無運維、無服務器的體驗,可以促進應用程序的開發,減輕所有託管負擔。

Serverless 會終結 Kubernetes 嗎?

現如今,Serverless還是一項很新的技術,第一版的 AWS Lambda 於2014年發佈。同年,Docker 也邁出了第一步(第一版於2013年發佈,但我不確定發佈時是否可以投入生產環境)。而 Kubernetes 誕生於2014年。因此,我們可以說,Serverless與容器幾乎同時問世,不分伯仲。從這個角度來看,Serverless並非誕生於 Kubernetes 之後,因此我們不能認為Serverless將取代容器。二者只是Web應用程序中實現託管的兩種不同的方法。也許在某些情況下,你可能更喜歡Serverless,而有些時候則會更喜歡 Kubernetes。那麼具體選擇哪個呢?不得不說這要視具體情況而定。普通的諮詢師與優秀的諮詢師之間的區別就在於,優秀的諮詢師瞭解許多互補的解決方案,並能夠根據實際情況找到最佳解決方案。

Serverless 会终结 Kubernetes 吗?

總結

在本文中,我們分別討論了這兩種解決方案的優點,你可以根據對這兩項技術的瞭解找到適合自身的最佳解決方案。你可以使用谷歌雲等大型雲服務,實現任何解決方案。你需要花點時間嘗試一下這些工具,並瞭解它們的優點和缺點。

原文:https://towardsdatascience.com/kubernetes-serverless-differences-84699f370609

本文為 CSDN 翻譯,轉載請註明來源出處。


分享到:


相關文章: