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

Kubernetes 不穩定
由不同的維護者部署許多不同版本的元件,這個想法就註定了 Kubernetes 集群不可能沒有錯誤,從網路 CNI 到控制器,再到自定義運運算元,這些對象往往很容易破壞https。
把真實的網路元件封裝後放在雲的網路虛擬化中,只會讓一切變得非常複雜。

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

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

受攻擊的範圍更大
Kubernetes 有其自身的安全漏洞,因此會導致你的應用程序的受攻擊的範圍翻倍。你是否有預算僱傭安全工程師來處理這個問題,還是說你只有一位 DevOps 工程師,採納 Kubernetes 後,工程師需要承擔更多的安全工作?
Kubernetes 攻擊每天都在發生,管理它們並非易事。長期來看,最終你還是需要聘請一名安全工程師來保護這些沒有必要的技術棧。

總結
我希望通過這篇文章,讓大家看到一些瘋狂的技術決策趨勢,這些決策只是盲目跟風,並沒有太大受益。
最後,如果你正在猶豫是否使用 Kubernetes,請仔細衡量優缺點,認真做比較。