純粹的上游Kubernetes是最好的Kubernetes
譯文?譯者 | 布加迪
審校 | 孫淑娟
開源生態系統已從企業支持有限的小眾項目迅速變成開發軟件的默認方式。大大小小的組織都在使用開源軟件加快創新和產品開發。
企業開源現狀調查發現,95%的企業都很重視開源;75%的企業聲稱開源軟件對IT戰略極其重要;77%的企業計劃在來年加大使用開源的力度。
與此同時,71%的英國政府技術員工表示,他們使用的開源軟件比五年前更多。美國國防部甚至發布了一份備忘錄,表明其首選是開源軟件,而不是專有軟件。
Kubernetes趨于成熟后,市場已出現了合并,許多Kubernetes產品提供不同的架構、功能和接口——有些產品不如另一些開放、靈活,附有不同的限制、依賴項和許可條款。
偏離開放的Kubernetes標準可能會導致問題。正如《云計算雜志》特別指出,“如果沒有適當的標準化格式,就很難確保互操作性、可移植性、合規、信任和安全性。”
1、什么是純粹的上游開源Kubernetes?
上游Kubernetes是Kubernetes的開源版本,由云原生計算基金會托管和維護,該基金會開發代碼、編制文檔,并貢獻代碼。它由核心的“普通”Kubernetes組成,用于編排容器,無需附加應用程序,一切都可以公開訪問,用于檢查、修改和重新分發。
免費開源軟件項目都出于美好的初衷——創造有助于整個社區的技術。任何人都可以訪問代碼,進行協作以快速修復錯誤、添加補丁和優化性能。但是項目發展會導致目標和觀點出現分歧,即代碼中的“分叉”(fork)。
2、什么是Kubernetes的分叉?
Kubernetes的分叉是獨立于主工作流開發的開源項目版本。當開發社區的一部分人或第三方供應商復制上游項目,但作了若干修改,以啟動完全獨立的開發路線時,就出現分叉。
分叉Kubernetes的原因可能是意見不同(技術上的或個人上的)、上游項目的開發停滯不前,或者想要不同的功能。這可能發生在開源環境或專有環境中。
開源Kubernetes分叉改進原始代碼后,其他分叉可以利用它,將代碼與各自的分叉結合起來,更好地滿足開發人員和最終用戶的需求。
但是就專有環境中的Kubernetes分叉而言,供應商或云公司將改變源代碼以滿足自己的需求,重新打包軟件,并將其作為專有發行版提供給客戶。它們可能會改變在生產環境中運行Kubernetes所需的附加組件。
這使得解決方案的管理變得很復雜,還存在供應商鎖定風險。
3、分叉Kubernetes的問題
大規模部署和管理Kubernetes很困難。許多組織使用專有發行版來獲得對容器平臺的企業支持,但這導致了Kubernetes明顯分叉的版本。
一些挑戰包括如下:
(1)補丁、錯誤修復、升級和新功能方面很復雜
每一次新的更新都會使變更更難與自定義發行版兼容。這是一個緩慢而燒錢的過程。分叉Kubernetes的供應商常常使用較舊版本的集群API,因為它們需要花費至少6個月從上游獲得改進和錯誤修復。
(2)供應商鎖定
Kubernetes中的分叉會造成鎖定,即客戶無法輕松替換或遷移解決方案。它消除了在公共、私有和內部服務之間無縫移動應用程序和數據的靈活性。貴公司發展壯大后,鎖定問題也無法為貴公司提供多種選擇。即使源代碼是開源的,供應商也可以用一些特性包裝Kubernetes,這些特性防止客戶遷移到其他平臺。
(3)缺乏功能
Kubernetes的分叉版本可能會破壞應用程序的功能。一些自定義發行版依賴專有的API和CLI來獲得完整功能,這導致了鎖定現象。如果自定義發行版只在供應商的自定義Linux內核上運行,它也導致鎖定現象。最終,維護這個分叉變得更困難,阻止人們在未對補丁和功能兼容方面進行重大工作的情況下將最新的上游補丁合并到分叉中。如果一種產品關停,您可能就不走運了。
(4)不太安全
Kubernetes的分叉可能會運行不太安全的代碼。如果在開源代碼中發現了一個漏洞,并由上游社區修復,分叉版本的代碼可能不會受益,因為它與上游代碼不一樣。
(5)缺乏互操作性
供應商可以針對其自定義發行版或讓Kubernetes在生產環境中運行所需的支撐性應用程序修改代碼。雖然Kubernetes的修改版可以與特定供應商的應用程序堆棧和管理工具協同運行,但這些專有的修改會導致您被定制的組件構建束縛,讓您無法與其他上游開源項目集成。如果他們的堆棧包含多個產品,很難實現互操作性,這可能會在您擴展規模時導致許多下游問題。
(6)技術債務
很難將一個與上游發生了巨大變化的分叉合并回去。我們稱之為技術債務,即偏離聯合開發的主分支導致的維護源代碼的成本。對分叉代碼的變更越多,就意味著讓分叉重新回歸上游項目所需的資金和時間就越多。
4、純粹的上游Kubernetes是出路
純粹的上游開源Kubernetes是決策制定的焦點,是貢獻代碼的地方,帶有一個內置的社區,不斷改進源代碼。
純粹的上游解決方案允許與更大的社區分享想法,并獲得上游接受的新功能和新版本。每個基于上游的項目和產品在選擇未來版本或合并最近(或所有)的上游補丁時,都受益于 以前的工作。
雖然任何人都可以從上游代碼庫復制、安裝或分發Kubernetes,但大公司和大組織需要經過認證、測試和加固的產品供企業環境使用。因此,組織依賴供應商將上游Kubernetes變成滿足其業務需求的下游產品。
原文鏈接:https://www.cncf.io/blog/2023/01/30/pure-upstream-kubernetes-is-the-best-kubernetes/