Kubernetes 真的很難嗎?

【CSDN 編者按】Kubernetes 提供了許多開箱即用的好東西,可以推進業務的發展。但這是否意味著,所有服務都要放到 Kubernetes 上運行?當然不是。

原文連結:https://rcwz.pl/2023-03-26-kubernetes-is-hard/

未經授權,禁止轉載!

作者 | Artur Rychlewicz 譯者 | 彎月

責編 | 王子彧

最近,37signals 發佈了內部開發的工具 mrsk,用於簡化服務的部署。但隨工具一起發佈的部落格文章在網上引發了熱議。

Kubernetes 很難嗎?

Kubernetes 很難嗎?

許多人認為 Kubernetes 很複雜,從某種程度上,我認同他們的看法。

Kubernetes 的複雜性部分源於功能的多樣化,幾乎可以在 Kubernetes 上運行任何工作負載。功能的多樣化需要資源可組合。這些資源必須像樂高積木一樣,使用者可以將多個元件連接起來構建有意義的產品。以容器為例,Kubernetes 有一個 Pod 的概念,指的是一組緊密耦合的一個或多個容器。但即便使用 Pod,你也不太可能單獨運行它們。通常,你會通過部署、進程集或狀態集來運行 Pod。這些只是在向外界公開服務之前需要涉及的元件。

但這僅僅是其中一個方面,任何生產級別的 Kubernetes 集群都包含了許多 Kubernetes 本來不需要的元件。當然,你可以構建一個最低限度的 Kubernetes 集群,但沒必要。

構建生產環境很難

構建生產環境很難

在構建服務時,最不希望看到的情況之一便是讓使用者失望。比如提供的服務不可靠。可能你的服務不需要一直運行,甚至不需要以 99.999% 的正常運行時間為目標,但停機次數太多,使用者就無法信任服務。比如使用者將圖片上傳到服務,一天後卻發現圖片不見了?

服務無法提供出色體驗的原因很多,比如新推出了一款新產品,因新使用者註冊太多,服務不堪重負。換一個角度看,這是一個好現象。但更多的時候,是因為服務存在導致應用程序崩潰的錯誤。

因此,我們可以認為:構建生產環境很難。需要管理應用程序、日誌、指標、儲存、資料庫、備份、負載均衡、部署、機密資料以及許多其他的方面。如果你使用了微服務,那麼工作量更大。

無論是否使用 Kubernetes,這些工作都要完成。有了雲,只要花一些錢就能省卻很多工作,如果你願意花錢,而且願意接受被供應商鎖定的風險,就可以大幅簡化構建生產環境的工作。在 Kubernetes 出現之前,我們就採用了這種方式,而且事實證明沒有任何問題。

姑且拋開炒作不談,Kubernetes 被這麼多公司採用是有原因的。它可以減輕開發團隊的負擔,只要編寫一個簡單的 YAML 檔案就可以完成服務的部署。更重要的是,團隊不再需要開發運維或基礎設施工作人員添加 DNS 條目並創建負載均衡器來公開服務。如果你有操作員,他們可以以聲明的方式完成這些工作。

必須使用 Kubernetes 嗎?

必須使用 Kubernetes 嗎?

如果使用 Kubernetes,維護集群的「負擔」就落到了開發運維或基礎設施工作人員的肩上。Kubernetes 適合每一家公司嗎?不一定,如果你有三個微服務,或者公司達到一定規模,或許應該採用 Kubernetes。但如果實際情況很簡單,採用 Kubernetes 的成本太高。

採用 Kubernetes 意味著擁有統一的開發體驗,可以根據公司的成長進行調整。在有需要的時候,混合搭配使用,創建強大的自動化。還有自動擴展,如何按照正確的方式自動擴展服務?應該採用水平擴展,還是垂直擴展?服務應該通過開放連接進行擴展嗎?也許你根本不需要自動擴展。

我喜歡 Kubernetes。非常喜歡。但無論遇到何種情況,我都會使用 Kubernetes 嗎?不會,我會根據每家公司的實際情況綜合考慮。Kubernetes 提供了許多開箱即用的好東西,可以推進業務的發展。但這是否意味著,所有服務都要放到 Kubernetes 上運行?當然不是。

相關文章

最強 AI ChatGPT 真要取代程式設計師?

最強 AI ChatGPT 真要取代程式設計師?

【CSDN 編者按】ChatGPT 一出,「程式設計師要失業了」、「程式設計師要下崗了」之聲不絕於耳,引得程式設計師們不由得一陣驚慌,最強 ...

雲原生時代的DevOps平臺設計之道

雲原生時代的DevOps平臺設計之道

【CSDN 編者按】雲原生時代,開發和運維的分工愈加分明,運維人員通過建設並維護一套 IaaS 雲平臺,將計算資源進行池化。開發人員按需申請...

WebAssembly 真能取代 Kubernetes?

WebAssembly 真能取代 Kubernetes?

摘要:許多開發者總是習慣性地將 WebAssembly 與 Kubernetes 進行對比,也許將來可能會出現某種技術,在雲環境中部署和管理...