從業務視角分析Kubernetes的優缺點


  容器編排軟件Kubernetes(" k8s")是有史以來最重要的開源項目之一,並且近年來它的應用在持續增長。 自2022年開始在一家使用Kubernetes開發和擴展軟件的公司工作之后,我看到我們的工程師經歷了Kubernetes應用周期的各個階段,從對這種技術可能帶來的不懈熱情,到解決集群和集群部署問題的無眠之夜。 如果您正處於此旅程的開始,或者只是考慮將Kubernetes用於您的雲基礎架構,那么這篇文章將有望幫助您評估Kubernetes的一些主要優缺點。

  我將以一個業務為中心的角度來討論該主題,並且由於涉及技術比較和細節的各種文章已經存在,我將不涉及任何技術細節。

  Kubernetes的優勢1.使用Kubernetes及其龐大的生態系統可以提高您的生產力

  如果在您的工程工作流程中正確實施Kubernetes,則可以極大地提高生產率。 尤其是巨大的Kubernetes生態系統,可以最好地與CNCF Landscape結合使用,有助於更輕松有效地使用Kubernetes,從而減少其總體復雜性的負面影響。 通過依靠一些專門用於雲原生軟件的現有工具,您可以獲得幾乎無法自行構建的解決方案。

  例如:我們公司最近在CNCF中添加了開源開發工具DevSpace,它使您可以為團隊中的每個開發人員設置和標准化部署和測試工作流程。 其他工具(例如Drone)使您可以快速為Kubernetes創建CI / CD管道,而Prometheus等工具使監視比以往任何時候都容易。 生態系統中可用的大量工具可大大縮短發布周期,使工程流程專業化,並最終改善從開發到生產的軟件質量。 當然,大量的技術選擇還可以幫助您完全自定義所有需求。 另外,k8s生態系統中的大多數工具都是開源的,因此可以免費使用。

  2. Kubernetes和雲原生技術堆棧吸引人才

  許多軟件工程師希望在使用現代有趣技術的公司中工作。 在2022年Stack Overflow開發者調查中,Kubernetes絕對是第三大最受歡迎的平台之一。結合高效的工作流和其他雲原生工具,您的技術堆棧和流程將對潛在申請人非常有吸引力。 同樣對於您當前的員工來說,使用新的東西可能會非常有動力,這可以提高開發團隊的總體滿意度,從長遠來看甚至可以減少員工流失。 Kubernetes的這種優勢通常被忽略,但是鑒於技術人才的短缺,它可以為您的組織帶來物質利益。

  3. Kubernetes是面向未來的解決方案

  如果您決定使用Kubernetes,您可以確定該解決方案可以使用很多年,原因如下:

  所有主要的雲供應商都在支持Kubernetes,為其提供開箱即用的解決方案。在采用率方面,雲供應商及其生態系統的支持方面,替代的容器編排解決方案遠遠落后於k8。 甚至以前專注於競爭技術的公司現在也認可Kubernetes:Docker提供的是Docker Kubernetes服務,而不僅僅是Docker Swarm解決方案,Mesosphere更名為D2IQ,以便對Kubernetes更加開放,而不僅僅是專注於Apache Mesos。當然,Kubernetes生態系統正以令人難以置信的速度快速增長,並且每天都會發布支持Kubernetes平台之上的各種需求的新產品。

  從個人的角度來看,Kubernetes也代表着未來:如果您希望用戶群可以擴大到龐大的受眾,那么可以肯定的是Kubernetes可以處理它,因為它旨在支持大型分布式系統,並且最初由Google工程師開發,以他們在構建Borg等可擴展平台方面的經驗作為后盾。 如果您的應用程序本身不斷增長並變得更加復雜,情況也是如此。 在這里,微服務架構經常發揮作用,對於這些而言,Kubernetes顯然是當今的首選技術。 最后,如果您出於某種原因想要更換雲供應商,例如 從Amazon Web Services(AWS)到Microsoft Azure,您可以輕松地從其他提供商那里找到非常相似的Kubernetes服務,而Kubernetes本身進行的切換相對無縫,從而避免了供應商鎖定。

  4. Kubernetes幫助使您的應用程序運行更穩定

  如果您需要確保您的應用程序已啟動並且運行非常可靠,Kubernetes可以為您提供支持。 例如,它允許您進行滾動更新以升級軟件,而無需停機。 可以通過支持高可用性應用程序的方式來設置Kubernetes,並且如果您使用的是主要供應商的公共雲服務,則可以肯定地保證了正常運行時間。 (但是,其他技術和基礎架構當然也可以實現,但通常需要付出更多的努力。)

  5. Kubernetes可能比其替代品便宜

  k8的另一個優點是它有時可能比其他解決方案便宜(取決於您的應用程序)。 由於平台本身具有一些通用的計算需求,因此對於非常小的應用程序而言,它通常會更加昂貴。 但是,計算資源需求越大,這些基本基礎結構需求對於總體成本計算的重要性就越小。 在這種情況下,其他因素變得更加重要。 例如,Kubernetes能夠根據應用程序的需求以及應用程序處理的傳入流量和負載來自動擴展。 這意味着Kubernetes可以在高峰時段擴展您的應用程序及其所需的資源,還可以在一年,一周甚至一天的幾小時的繁忙時段縮減您的基礎架構。 這意味着如果沒有太多事情發生,您只需支付較少的費用。 總體而言,這會導致高利用率,並阻止您為不需要的資源付費。

  相對較新的"無節點Kubernetes"概念以及諸如Virtual Kubelet或elotl之類的解決方案,為節省基礎架構成本提供了更多潛力。

  總的來說,Kubernetes在某些情況下可以更便宜,而在另一些情況下則更昂貴,並且總有降低其運行成本的潛力。 為此,您需要針對特定的應用程序對其進行評估,並比較不同提供商的需求(但是,對於雲提供商的選擇,通常除了成本之外,還有更多因素會起作用)。

  盡管所有這些優點聽起來都很吸引人,但並不是每個公司都在使用Kubernetes,並且對Kubernetes做出決定可能是對其缺點進行評估的結果。 接下來,讓我們看一下Kubernetes對企業的一些主要缺點。

  Kubernetes的缺點1. Kubernetes對於簡單的應用程序可能是一個過大的殺傷力

  Kubernetes是一項復雜而強大的技術,可讓您相當高效地在雲環境中大規模運行軟件。 但是,如果您不打算為龐大或分散的受眾群體開發復雜的產品(例如,您不是在建立具有數千名客戶的全球在線商店)或具有高計算資源需求(例如,機器學習應用程序), k8s的技術力量給您帶來的好處並不多。 假設您只想建立一個顯示營業時間和營業地點的網站。 然后,您不應該使用Kubernetes,因為這不是它的目的。 但是,人們通常不能說每種機器學習軟件都應該與Kubernetes一起運行,並且沒有簡單的網站應該如此。 第一種情況比另一種情況更有可能受益。

  2. Kubernetes非常復雜,會降低生產率

  Kubernetes以其復雜性而聞名。 尤其是對於不熟悉基礎結構技術的開發人員,可能很難與之合作。 但是,如果您想實踐DevOps方法,則開發人員需要在開發生命周期中盡早訪問並部署到Kubernetes,以便他們可以快速,盡早地測試其代碼,以防止在生產后期出現代價高昂的錯誤。 即使有明顯的趨勢使Kubernetes更容易訪問(例如,DevSpace致力於成為開發人員最簡單,最快的Kubernetes工具),但仍然建議每個工程團隊至少聘請一位具有深刻理解的Kubernetes專家,這仍然是相對昂貴的-具有k8s技能的人在美國的平均工資超過14萬美元,或者接受培訓,這將需要一段時間。

  無論如何,您的開發團隊將不得不調整其某些流程以使其真正成為雲原生。 至少在短期內,這可能導致生產率降低和更長的發布周期。 (但是,如果正確的話,從長遠來看,k8s還可以提高您的生產率)

  3.過渡到Kubernetes可能很麻煩

  由於大多數公司無法在綠色領域中起步,因此需要對您現有的軟件進行調整以使其能夠與Kubernetes順利運行,或者至少與將在Kubernetes上運行的新建應用程序一起平穩運行。 很難估計這需要多少工作量,因為這在很大程度上取決於軟件(例如,是否已將其容器化,使用了哪種編程語言,等等)。 此外,某些流程需要適應新環境,尤其是部署流程。 即使有經驗豐富的現場人員,采用Kubernetes仍可能是一個挑戰,需要大量的精力和時間。

  4. Kubernetes可能比其替代品更昂貴

  我已經描述過,Kubernetes可能比使用替代技術便宜。 但是,它也可能更昂貴。 這是因為前面提到的所有缺點都浪費了您的工程師的時間,而這些時間沒有花在創建新的"有形"業務價值上。

  如果您的工程師花時間讓現有的,正在運行的應用程序在Kubernetes中運行,則他們的目標是使用另一種技術來維持現狀。

  而且,如果他們達到了這個目標,則該應用程序的用戶將不會立即看到此遷移的任何好處(但是,可能會有一些細微的好處,例如提高的穩定性)。 由於工程時間是非常寶貴的資源,因此在決定采用Kubernetes時應考慮這一點。

  除了這種間接成本,有時運行Kubernetes的基礎架構成本僅比替代基礎架構高,尤其是對於小型應用程序,因為Kubernetes本身具有一些計算需求。 同樣,以簡單網站的簡化示例為例,選擇一個更簡單的基礎架構(例如單個VM或托管平台,例如Heroku或Netlify)可能會更便宜。

  結論

  是否采用Kubernetes是您的選擇,這沒有簡單的答案。 這取決於您的特定需求和優先級,這里甚至沒有提到許多技術原因。 如果您是從一個新項目開始,或者您打算在一家規模不超過一個快速MVP的初創公司中工作,或者需要升級舊版應用程序,那么Kubernetes可能是一個不錯的選擇,因為它可以為您提供很多靈活性,功能和可擴展性。 但是,由於必須掌握新技能並且必須在開發團隊中建立新的工作流程,因此始終需要投入時間。

  但是,如果做對了,由於服務質量更好,生產力更高,員工動力更強,因此花時間學習和采用Kubernetes通常會在將來獲得回報。

  無論如何,您都應該做出明智的決定,並且有很多充分的理由選擇或放棄Kubernetes。 希望這篇文章能幫助您進一步為您做出正確的決定。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2026 CODEPRJ.COM