成本翻倍,部署複雜!為什麼要停止使用Kubernetes

【CSDN 編者按】如果你正在猶豫是否使用 Kubernetes,請仔細衡量優缺點,認真做比較。

原文連結:https://thetechtrailblazer.blog/2023/02/14/dont-use-kubernetes-please/

未經授權,禁止轉載!

作者 | aly kafoury 譯者 | 彎月

我在軟體行業摸爬滾打了十餘年,形形色色的角色都擔任過。以前,遇到一些新興的工具,人們會認真比較優缺點,而如今卻變成了無腦跟著潮流走。

Kubernetes 就是其中之一。如今,在 Kubernetes 上託管應用程序已成為部署應用程序的標準,而無論 Kubernetes 能否帶來切實的好處。我希望通過本文,說明使用 Kubernetes 的缺點, Kubernetes 對軟體開發週期的破壞、成本的增加,以及對敏捷性的負面影響,從而喚醒軟體行業的理智。

使用 Kubernetes 會導致成本增加

假設你是一家中小型初創公司,你的應用程序由幾個後端服務、一個資料庫、一個快取服務和一個負載均衡器組成。這個設置包括 2 個託管服務(資料庫和快取)、6 個用於後端服務冗餘的小型機器和 2 個負載均衡器(如果正常部署到雲的話)。

如果在這個配置中加入 Kubernetes,則僅僅是為了運行額外的sidecar,就不得不使用兩倍的機器:三臺機器運行Kubernetes的控制平面,另外三臺運行etcd集群,同時還需要添加多個內部服務,比如Ingress控制器以及日誌和指標收集。

雖然加入 Kubernetes 會導致你的成本翻倍,但實際上對於中小型企業來說,你根本使用不了 Kubernetes 的任何功能。

Kubernetes 的部署非常複雜

Kubernetes 的部署非常複雜

一般,正常的設置需要佔用 CI/CD 工程師幾天的時間,而調試與基礎設施相關的問題用時不會超過一兩個小時。

然而,Kubernetes 的部署需要渲染模板、設置 CI/CD 運行器、動態生成 kubeconfigs 以確保安全等,通常要佔用 CI/CD 工程師不少於一個月的時間才能準備好生產級的環境。為了調試錯誤,你可能需要花費數天時間來弄清楚哪些涉及底層基礎設施、哪些是 Kubernetes,而哪些關係到應用程序本身。我曾經花了 6 個小時調查為什麼 CoreDNS 無法註冊新服務,最後卻發現只是一個非常小的錯誤。

Kubernetes 不穩定

Kubernetes 不穩定

由不同的維護者部署許多不同版本的元件,這個想法就註定了 Kubernetes 集群不可能沒有錯誤,從網路 CNI 到控制器,再到自定義運運算元,這些對象往往很容易破壞https。

把真實的網路元件封裝後放在雲的網路虛擬化中,只會讓一切變得非常複雜。

版本管理困難

版本管理困難

跟蹤集群上部署的所有元件的所有版本需要耗費大量時間。你需要投入一個專職工程師來維護第三方平臺上的配置,還需要處理由於更新引發的各種故障。

DevOps 工程成本飆升

DevOps 工程成本飆升

如果你選擇了面向那些資金充裕、不在乎 Kubernetes 帶來額外成本的大型企業方案,那麼成本飆升是必然的。

受攻擊的範圍更大

受攻擊的範圍更大

Kubernetes 有其自身的安全漏洞,因此會導致你的應用程序的受攻擊的範圍翻倍。你是否有預算僱傭安全工程師來處理這個問題,還是說你只有一位 DevOps 工程師,採納 Kubernetes 後,工程師需要承擔更多的安全工作?

Kubernetes 攻擊每天都在發生,管理它們並非易事。長期來看,最終你還是需要聘請一名安全工程師來保護這些沒有必要的技術棧。

總結

總結

我希望通過這篇文章,讓大家看到一些瘋狂的技術決策趨勢,這些決策只是盲目跟風,並沒有太大受益。

最後,如果你正在猶豫是否使用 Kubernetes,請仔細衡量優缺點,認真做比較。

相關文章

C++23:下一個 C++ 標準

C++23:下一個 C++ 標準

【編者按】C++23 是 C++20 之後的下一個 C++ 標準,它包含了對 C++ 的一系列改進,但對於 C++98、C++11 或 C+...

破壞 java.lang.String

破壞 java.lang.String

【編者按】本文展示瞭如何利用 Java 的一個 bug 來製造一些奇怪的字串,包括字串相等性的條件、創建損壞字串的方法以及利用該 bug 在...

為什麼會有這麼多程式語言?

為什麼會有這麼多程式語言?

【編者按】本文主要探討為什麼存在這麼多的程式語言,以及新的程式語言為什麼不斷地被創造出來。作者從計算機歷史博物館的一幅展示程式語言演化的巨圖...

ORM 是「反模式」 嗎?

ORM 是「反模式」 嗎?

【編者按】ORM(對象關係對映)在軟體開發中受到爭議,常見批評包括違反 SOLID 原則和效率低,但實際問題在於透明性和調試困難。如果能夠正...

有必要追求 100% 的單測覆蓋率嗎?

有必要追求 100% 的單測覆蓋率嗎?

【編者按】本文主要討論了一個項目的開發過程中對測試覆蓋率的要求以及其帶來的挑戰,強調了 100% 的測試覆蓋率的重要性和好處,尤其是在避免隱...

微軟計劃將 Windows 完整遷移到雲端

微軟計劃將 Windows 完整遷移到雲端

【編者按】微軟計劃通過 Windows 365 將 Windows 作業系統完整遷移到雲端,以提供基於人工智慧的高質量服務和實現無縫數字化生...

MySQL如何支撐每秒百萬QPS?

MySQL如何支撐每秒百萬QPS?

【編者按】本文主要介紹 PlanetScale 是如何通過 MySQL 的水平分片支撐每秒一百萬個查詢(QPS)的。 原文連結:https:...